auto import from //branches/cupcake_rel/...@138607
diff --git a/tools/dx-tests/Android.mk b/tools/dx-tests/Android.mk
new file mode 100644
index 0000000..9dee47d
--- /dev/null
+++ b/tools/dx-tests/Android.mk
@@ -0,0 +1,73 @@
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+LOCAL_PATH := $(call my-dir)
+
+# run-dx-tests host module
+#===========================================================
+
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := dx-tests
+
+LOCAL_JAVA_LIBRARIES := dx
+
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+ALL_SRC_FILES := $(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find src/dxc/junit -name "*.java" -o -name "*.j" -o -name "*.cfh"))
+ABSOLUTE_SRC_FILES := $(addprefix $(LOCAL_PATH)/,$(ALL_SRC_FILES))
+
+$(LOCAL_BUILT_MODULE): PRIVATE_CURRENT_MODULE_SCRIPT := $(LOCAL_PATH)/etc/compileall
+$(LOCAL_BUILT_MODULE): PRIVATE_BASE := $(LOCAL_PATH)
+$(LOCAL_BUILT_MODULE): PRIVATE_INTERMEDIATES := $(intermediates)
+$(LOCAL_BUILT_MODULE): $(DX) $(TARGET_OUT_EXECUTABLES)/dalvikvm
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/starttests $(LOCAL_PATH)/etc/compileall ${ABSOLUTE_SRC_FILES} $(HOST_OUT_JAVA_LIBRARIES)/dx.jar $(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+	@$(PRIVATE_CURRENT_MODULE_SCRIPT) "$(PRIVATE_BASE)" "$(HOST_JAVAC)" "$(PRIVATE_INTERMEDIATES)" "$(HOST_OUT_JAVA_LIBRARIES)/dx.jar:$(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar"
+
+# cfassembler host module
+#============================================================
+
+include $(CLEAR_VARS)
+
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := cfassembler
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_BUILT_MODULE): $(HOST_OUT_JAVA_LIBRARIES)/cfassembler$(COMMON_JAVA_PACKAGE_SUFFIX)
+$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/etc/cfassembler | $(ACP)
+	@echo "Copy: $(PRIVATE_MODULE) ($@)"
+	$(copy-file-to-new-target)
+	$(hide) chmod 755 $@
+
+INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE)
+
+# cfassembler java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := src/dxconvext/ClassFileAssembler.java src/dxconvext/util/FileUtils.java
+LOCAL_JAR_MANIFEST := etc/cfassembler_manifest.txt
+
+LOCAL_MODULE:= cfassembler
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+INTERNAL_DALVIK_MODULES += $(LOCAL_INSTALLED_MODULE)
diff --git a/tools/dx-tests/dx-tests.css b/tools/dx-tests/dx-tests.css
new file mode 100644
index 0000000..a315a73
--- /dev/null
+++ b/tools/dx-tests/dx-tests.css
@@ -0,0 +1,59 @@
+h1 {
+    font-family: serif;
+    color: #222266;
+}
+
+h2 {
+    font-family: serif;
+    border-top-style: solid;
+    border-top-width: 2px;
+    border-color: #ccccdd;
+    padding-top: 12px;
+    margin-top: 48px;
+    margin-bottom: 2px;
+    color: #222266;
+}
+
+@media print {
+    table {
+        font-size: 8pt;
+    }
+}
+
+@media screen {
+    table {
+        font-size: 10pt;
+    }
+}
+
+
+/* general for all tables */
+
+table {
+    border-collapse: collapse;
+    margin-top: 24px;
+    margin-bottom: 24px;
+    margin-left: 48px;
+    margin-right: 48px;
+}
+
+table th {
+    font-family: sans-serif;
+    background: #aabbff;
+    text-align: left;
+}
+
+table td {
+    font-family: sans-serif;
+    border-top-style: solid;
+    border-bottom-style: solid;
+    border-width: 1px;
+    border-color: #aaaaff;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    padding-left: 4px;
+    padding-right: 6px;
+    background: #eeeeff;
+    margin-top: 4pt;
+    margin-bottom: 0pt;
+}
diff --git a/tools/dx-tests/dx-tests.html b/tools/dx-tests/dx-tests.html
new file mode 100644
index 0000000..832f701
--- /dev/null
+++ b/tools/dx-tests/dx-tests.html
@@ -0,0 +1,141 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html>
+  <head>
+    <title>DX Converter Test Suite</title>
+    <link rel=stylesheet href="dx-tests.css">
+  </head>
+
+  <body>
+    <h1>DX Converter Test Suite</h1>
+    <p>Version 1.0</p>
+    <p>Copyright &copy; 2008 The Android Open Source Project
+
+    <h2>Overview</h2>
+
+    <p>    
+      This directory contains a test suite for the DX converter. It tests the
+      capabilities of the DX converter in a black-box manner, based on the
+      usual specifications for <code>.class</code> files. The suite does both
+      functional and verifier tests. Regarding the latter, the DX converter has
+      only limited bytecode verification capabilities, but the combination of DX
+      and the Dalvik VM is supposed to perform bytecode verification equivalent
+      to that done in other virtual machines. Please see
+        
+      <pre>
+        docs/dalvik/java-constraints.html
+        docs/dalvik/verifier.html
+      </pre>
+        
+      for further details.
+    </p>
+
+    <h2>How to build</h2>
+    
+    <p>
+      The test suite is normally included in a full build of the Android
+      project. If it needs to be built individually, a simple
+        
+      <pre>
+        make dx-tests
+      </pre>
+        
+      or an
+        
+      <pre>
+        mm
+      </pre>
+        
+      in this directory will do.
+    </p>
+
+    <h2>How to run</h2>
+        
+    <p>
+      The suite can be invoked by executing
+    
+      <pre>
+        dx-tests
+      </pre>
+    
+      from any location, assuming the suite has been built. This will run
+      all tests. If you want to limit the suite to the test cases
+      corresponding to a single instruction, you can specifiy the mnemonic
+      as a parameter. For example
+
+      <pre>
+        dx-tests anewarray
+      </pre>
+      
+      executes the tests for the <code>anewarray</code> instruction.
+      Please see the corresponding specification for all the mnemonics. Two
+      additional parameters are possible that don't represent instructions.
+      These run sanity checks for the suite itself and general verifier tests,
+      respectively: 
+
+      <pre>
+        dx-tests sanity
+        dx-tests verifier
+      </pre>
+
+      The suite is normally run for the fast version of the interpreter. To run
+      it for the portable interpreter, pass <code>--portable</code> as the first
+      parameter. Passing <code>--help</code> results in a brief overview of the
+      options.
+    </p>
+
+    <p>      
+      The suite is compatible with both emulator and simulator 
+      builds. For an emulator build, please make sure you have
+      either an emulator running or a device attached via USB before
+      invoking the test suite.
+    </p>
+
+    <p>
+      The suite might easily take 30 minutes or more for execution,
+      depending on the environment. It will generate a full HTML
+      report with details on all test cases. While running, console output
+      is produced to give a quick impression of the progress and results.
+      For both types of output, each individual test results falls into one of
+      the following categories:
+    </p>
+            
+    <table>
+      <tr>
+        <th>Type in report</th><th>Type on console</th><th>Description</th>
+      </tr>
+      <tr>
+        <td>Success</td>
+        <td>.</td>
+        <td>
+          The test case passed successfully.
+        </td>
+      </tr>
+      <tr>
+        <td>Functional failure</td>
+        <td>F</td>
+        <td>
+          A functional (normal or boundary) or an exception test case
+          failed.
+        </td>
+        </tr>
+        <tr>
+          <td>Verifier failure</td>
+          <td>V</td>
+          <td>
+            A verifier test case failed. Either the verifier accepted
+            some invalid piece of code or it rejected a valid one.
+          </td>
+        </tr>
+        <tr>
+          <td>Warning</td>
+          <td>W</td>
+          <td>
+            A verifier test case threw <code>VerifyError</code>, where a
+            different VM would have thrown a different exception. This is
+            specified Dalvik behavior, though, hence just the warning.
+          </td>
+        </tr>
+      </table> 
+  </body>
+</html>
diff --git a/tools/dx-tests/etc/cfassembler b/tools/dx-tests/etc/cfassembler
new file mode 100644
index 0000000..e05f4ae
--- /dev/null
+++ b/tools/dx-tests/etc/cfassembler
@@ -0,0 +1,66 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+jarfile=cfassembler.jar
+libdir="$progdir"
+if [ ! -r "$libdir/$jarfile" ]
+then
+    libdir=`dirname "$progdir"`/tools/lib
+fi
+if [ ! -r "$libdir/$jarfile" ]
+then
+    libdir=`dirname "$progdir"`/framework
+fi
+if [ ! -r "$libdir/$jarfile" ]
+then
+    echo `basename "$prog"`": can't find $jarfile"
+    exit 1
+fi
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+if [ "$OSTYPE" = "cygwin" ] ; then
+    jarpath=`cygpath -w  "$libdir/$jarfile"`
+else
+    jarpath="$libdir/$jarfile"
+fi
+
+exec java $javaOpts -jar "$jarpath" "$@"
diff --git a/tools/dx-tests/etc/cfassembler_manifest.txt b/tools/dx-tests/etc/cfassembler_manifest.txt
new file mode 100644
index 0000000..382adc6
--- /dev/null
+++ b/tools/dx-tests/etc/cfassembler_manifest.txt
@@ -0,0 +1 @@
+Main-Class: dxconvext.ClassFileAssembler
diff --git a/tools/dx-tests/etc/compileall b/tools/dx-tests/etc/compileall
new file mode 100755
index 0000000..42b198e
--- /dev/null
+++ b/tools/dx-tests/etc/compileall
@@ -0,0 +1,113 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+echo "building dx-test-suite"
+#
+# generates .class files from the .j (jasmin) and .cfh (hex format) files for the dxconverter test project.
+# the dx executable must be on the PATH.
+# only for lunch 2 at the moment - TODO check which commands are available in busybox/toolbox on the device
+#
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+#echo "progdir: $progdir"
+#echo "android build top: $ANDROID_BUILD_TOP"
+project_home=$1
+javac=$2
+tmpdir=$3 # ANDROID_BUILD_TOP/$3
+dxjarpath=$4
+project_src=$project_home/src
+project_lib=$project_home/lib
+project_data=$project_home/data
+javac_out=$tmpdir/classout
+javafiles=$tmpdir/_javafiles
+mainfilesdir=$tmpdir/mainfiles
+mainfileslist=$tmpdir/_mainfileslist
+
+#echo "home: $project_home"
+
+if [ "$tmpdir" = "" ]; then
+    echo "error: intermediates dir not set/found!!";
+    exit 1;
+else
+    echo "tmp/intermediates dir (rel): $tmpdir"
+fi
+rm -rf --preserve-root $javac_out
+rm -rf --preserve-root $javafiles
+
+# compile all files from javafiles
+echo "compiling all java files (with package dxc.junit.**)"
+find $project_src/dxc/junit -name '*.java' > $javafiles
+echo "$project_src/util/CollectAllTests.java" >> $javafiles
+mkdir -p $javac_out
+jfiles=\@$javafiles
+javac -d $javac_out -classpath ${dxjarpath} -sourcepath $project_src $jfiles
+
+echo "compiling all jasmin (*.j)"
+
+find $project_src/dxc/junit -name '*.j' | sort > $tmpdir/alljasminfiles
+java -classpath $project_home/utilclasses:$project_lib/jasmin.jar util.CompileAllJasmin $tmpdir/alljasminfiles $javac_out  &> /dev/null
+
+echo "compiling all .cfh files into .class files"
+for acfhfile in `find $project_src/dxc/junit -name '*.cfh'`
+do
+    #echo "cfh file:$acfhfile"
+    java -classpath ${dxjarpath} dxconvext.ClassFileAssembler $acfhfile $javac_out &> /dev/null
+done
+
+echo "generating Main_*.java files reading from $project_home writing to $mainfilesdir"
+mkdir -p $mainfilesdir
+# generate the Main_*.java files
+java -cp $project_lib/junit.jar:$javac_out util.CollectAllTests $project_home $mainfilesdir 
+# compile the Main_*.java files
+find $mainfilesdir/dxc/junit -name '*.java' > $mainfileslist
+echo "compile the Main_*.java files"
+javac -d $javac_out -classpath $project_lib/junit.jar:$javac_out -sourcepath $mainfilesdir \@$mainfileslist
+
+# now copy relevant data from intermediates dir to its final destination
+fdest=$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter
+mkdir -p $fdest/data
+acp -r $javac_out $fdest/
+acp $mainfilesdir/data/scriptdata $fdest/data/scriptdata
+
+echo "dxconverter test suite sucessfully built!"
+echo "intermediate Main_*.java files (for stacktrace analysis) can be found under $mainfilesdir" 
+
diff --git a/tools/dx-tests/etc/morescripts/countTests.sh b/tools/dx-tests/etc/morescripts/countTests.sh
new file mode 100755
index 0000000..ff0b323
--- /dev/null
+++ b/tools/dx-tests/etc/morescripts/countTests.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+cd ../../src
+
+echo "normal tests (testN...): "
+egrep -R 'public void testN[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
+
+echo "border egde tests (testB...): "
+egrep -R 'public void testB[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
+
+echo "exception tests (testE...): "
+egrep -R 'public void testE[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
+
+echo "verify error tests (testVFE...): "
+egrep -R 'public void testVFE[0-9][0-9]?' * | grep ".java" | sed -e '/.svn/d' | sort | wc -l
diff --git a/tools/dx-tests/etc/morescripts/detailCount.sh b/tools/dx-tests/etc/morescripts/detailCount.sh
new file mode 100755
index 0000000..c7aae42
--- /dev/null
+++ b/tools/dx-tests/etc/morescripts/detailCount.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+#
+# sed -e '/.svn/d' |
+# ---------------------------------------------------------
+
+echo ">>> statistics about kind of tests (normal, border edge, exception, verify)"
+cd ../../src
+for mypack in `find dxc -maxdepth 4 -mindepth 4 -name "Test_*.java" | sort`
+do
+    resN=`egrep -c 'public void testN[0-9][0-9]?' $mypack`
+    resB=`egrep -c 'public void testB[0-9][0-9]?' $mypack`
+    resE=`egrep -c 'public void testE[0-9][0-9]?' $mypack`
+    resVFE=`egrep -c 'public void testVFE[0-9][0-9]?' $mypack`
+    echo "file:$mypack, N:$resN, B:$resB, E:$resE, VFE:$resVFE"
+done
diff --git a/tools/dx-tests/etc/starttests b/tools/dx-tests/etc/starttests
new file mode 100755
index 0000000..e43a00a
--- /dev/null
+++ b/tools/dx-tests/etc/starttests
@@ -0,0 +1,341 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+libdir=`dirname $progdir`/framework
+
+javaOpts=""
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "$1" : '-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    shift
+done
+
+#exec java $javaOpts -jar $libdir/hat.jar "$@"
+
+#######################################################################
+# Original content of invocation script follows. Uses values cleverly
+# deduced by the above code.
+#######################################################################
+
+selection=$1
+interpreter="fast"
+if [ "$selection" = "--portable" ]; then
+    selection=$2;
+    interpreter="portable"
+fi
+
+datadir=/tmp/${USER}
+rm -rf --preserve-root $datadir/dalvik-cache
+mkdir -p $datadir
+mkdir -p $datadir/dalvik-cache
+
+base=$OUT
+framework=$base/system/framework
+export ANDROID_PRINTF_LOG=tag
+export ANDROID_LOG_TAGS='*:s' # was: jdwp:i dalvikvm:i dalvikvmi:i'
+export ANDROID_DATA=$datadir
+export ANDROID_ROOT=$base/system
+export LD_LIBRARY_PATH=$base/system/lib
+export DYLD_LIBRARY_PATH=$base/system/lib
+debug_opts="-Xcheck:jni"
+exe=$base/system/bin/dalvikvm
+bpath=$framework/core.jar
+BASEDIR=$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter
+
+echo "--------------------------------------------------"
+echo "DX Converter Test Suite"
+echo "Version 1.0"
+echo "Copyright (c) 2008 The Android Open Source Project"
+echo ""
+
+if [ "$selection" = "--help" ]; then
+    echo "Usage: dx-tests [--help|--portable] [<mnemonic>]"
+    echo ""
+    echo "    --help      prints this help message"
+    echo "    --portable  uses the portable interpreter;"
+    echo "                default is the fast one"
+    echo ""
+    echo "    <mnemonic>  specifies the instruction to test;"
+    echo "                default is to run all tests"
+    echo ""
+    exit 1;
+fi
+
+# we need for launching: the dx tool, the dalvikvm executable, and the directory with all .class files
+# - prep dxcore.jar
+# - init reportfile
+# for each package as stated in data/scriptdata (like dxc/junit/opcode/aaload) do
+#   - clear tmpoutput
+#   - try to dx Test_opcode.class and all .class files in the ./jm directory into a classes.jar file
+#   - launch dalvikvm, let it write output &> to tmpoutput (surrounded by magic key for start/stop)
+#   - look at tmpoutput -> green or red test result
+#   - append the result to the report.html file (table form)
+#   - clear the tmpoutput, the classes.jar etc.
+# end for
+# - close the report file and cat its path to stdout
+
+# sanity checks:
+# dx around?
+curmode=""
+dx --version &> /dev/null
+if [ ! $? -eq 0 ]
+then
+    echo "error:could not start dx tool"
+    exit 1;
+fi
+ 
+if [ "$TARGET_SIMULATOR" = "true" ]; then
+    echo "Simulator mode, $interpreter interpreter";
+    curmode="simulator"
+    if [ -f $exe ]; then
+        version=`${exe} -version 2> /dev/null | grep -o "version.*$"`
+        echo "Using Dalvik VM ${version}"
+    else
+        echo "No Dalvik VM found at $exe";
+        exit 1;
+    fi
+else
+    echo "Emulator mode, $interpreter interpreter";
+    curmode="emulator"
+    version=`adb shell dalvikvm -version 2> /dev/null | grep -o "version.*$"`
+    if [ "${version}" != "" ]; then
+        echo "Using Dalvik VM ${version}"
+    else
+        echo "No emulator or device found";
+        exit 1;
+    fi
+fi
+
+echo ""
+
+latestpath=""
+curdate=`date`
+dxtmpdir=$BASEDIR/dxtmp
+dxruntmpdir=$BASEDIR/dxruntmp
+javac_out=$BASEDIR/classout
+report=$BASEDIR/report.html
+mkdir -p $dxtmpdir
+rm -f $report
+pre_report="<html><head><style>
+table tr.ok { background:#a0ffa0; }
+table tr.nok { background:#ffa0a0; }
+table tr.wok { background:#ffffa0; }
+table tr.lok { background:#aaaaff; }
+</style></head>
+<body>
+<h1>DX test suite results</h1>
+Generated $curdate (using the $curmode)
+<p>
+<table width='100%'>
+<tr><td>Status</td><td>Target</td><td>Category</td><td>Details</td></tr>"
+post_report="</body></html>"
+echo $pre_report > $report
+
+# ----------- generating dxcore.jar
+cd $javac_out
+# consists of dxc.junit.DxAbstractMain and dxc.junit.DxUtil
+dx --dex --positions=lines --output="$BASEDIR/dxcore.jar" dxc/junit/DxAbstractMain.class dxc/junit/DxUtil.class
+
+# ----------- generating jars for each opcode test ------------
+
+export jpassedcnt=0
+export jwarningcnt=0
+export jvfefailedcnt=0
+export jfailedcnt=0
+export jallcnt=0
+export jcolumns=0
+
+function classnameToPath()
+{
+    echo $1 | sed -e 's#\.#/#g;s#$#.class#'
+}
+
+function lecho()
+{
+    if [ ! -z $CTS_DX_DEBUG ]; then echo $@; fi
+}
+
+while read -u 3 myline;
+do
+    mainclass=`echo $myline | cut -d";" -f1` # e.g dxc.junit.verify.t482_9.Main_testVFE2
+    classfiles=`classnameToPath $mainclass`
+    
+    testclasses=`echo $myline | cut -d";" -f2` # e.g dxc.junit.verity.t482_9.jm.T_t482_9_1
+    
+    for testclass in $testclasses; do
+        classfiles="$classfiles "`classnameToPath $testclass`;
+    done
+    
+    jtitle=`echo $myline | cut -d";" -f3`
+    jcomment=`echo $myline | cut -d";" -f4`
+    details=`echo $myline | cut -d";" -f5`
+    
+    if [ "$selection" == "" ] || [ "$jtitle" == "$selection" ]; then
+    
+        (( jallcnt += 1 ))   
+    
+    
+        rm -rf --preserve-root $dxtmpdir/*
+        mkdir -p $dxtmpdir
+        cd $dxtmpdir            
+        
+        for testclass in $classfiles; do
+            lecho -n "dexing $testclass : "
+            mkdir -p `dirname ${dxtmpdir}/${testclass}`
+            cp ${javac_out}/${testclass} ${dxtmpdir}/${testclass}
+            
+            dx --dex --positions=lines $testclass &>/dev/null
+            
+            if [ $? -eq 0 ]; then
+                lecho " dexable";
+            else
+                lecho " not dexable->remove";
+                rm $testclass
+            fi
+        done
+        
+        dx --dex --positions=lines --output="$BASEDIR/dxclasses.jar" .
+            
+        # run the previously prepared jar files in the dalvik vm.
+        # the dalvik vm executable (dalvikvm) must be on the PATH.
+        # 
+        ### echo -n ">>> launch dalvikvm for class: $mainclass"
+        cd $BASEDIR
+        rm -f $BASEDIR/dalvikout
+        # write dalvik output to file
+        echo -n "mk_b:" > $BASEDIR/dalvikout
+            #echo ">>> launch dex package -classpath $BASEDIR/dxcore.jar:$BASEDIR/dxclasses.jar $mainclass"
+    
+        if [ "$TARGET_SIMULATOR" = "true" ]; then
+            ### echo " on simulator";
+            $valgrind $exe -Xint:$interpreter -Xmx512M -Xss32K -Xbootclasspath:$bpath -DacceptCNF=true -classpath $BASEDIR/dxcore.jar:$BASEDIR/dxclasses.jar $debug_opts $mainclass "$@" >> $BASEDIR/dalvikout 2>&1
+            RESULTCODE=$?
+            if [ ${RESULTCODE} -ne 0 ]; then
+                echo "execute dalvikvm failed with resultcode: ${RESULTCODE}" >> $BASEDIR/dalvikout 2>&1
+            fi
+        else
+            # adb shell dalvikvm -Xint:$interpreter -Djava.io.tmpdir=/data/local/tmp -classpath /data/dxcore.jar:/data/dxclasses.jar dxc.junit.opcodes.aload.Main_testN2
+            # either no output (ok) or
+            # java.lang.RuntimeException: test did not cause the expected verify error, but:java.lang.RuntimeException, msg:AssertionFailedError msg:expected a verification exception
+            #    at dxc.junit.DxUtil.checkVerifyException(DxUtil.java:65)
+            #    at dxc.junit.opcodes.aload.Test_aload.testVFE10(Test_aload.java:181)
+            #    at dxc.junit.opcodes.aload.Main_testVFE10.main(Main_testVFE10.java:5)
+            #    at dalvik.system.NativeStart.main(Native Method)
+        
+            ### echo " on emulator/device with adb push"
+            adb push $BASEDIR/dxcore.jar /data/dxcore.jar &> /dev/null
+            adb push $BASEDIR/dxclasses.jar /data/dxclasses.jar &> /dev/null
+            adb shell "dalvikvm -Djava.io.tmpdir=/data/local/tmp -classpath /data/dxcore.jar:/data/dxclasses.jar $mainclass && echo -n dvmpassed:" >> $BASEDIR/dalvikout 2>&1
+        fi
+        
+        echo -n "mk_s:" >> $BASEDIR/dalvikout
+        # verify tmpout only contains mkdxc_start;mkdxc_stop -> no system.out/err because of exception.
+            # if ok -> green report line else red report with info between mkdxc_start and stop
+        ### echo "vmresult: $vmresult"
+        vmresult=`cat $BASEDIR/dalvikout`
+        if [[ ("$vmresult" == "mk_b:mk_s:") || ("$vmresult" == "mk_b:dvmpassed:mk_s:") ]]; then
+            (( jpassedcnt += 1 )) 
+            echo "<tr class=\"ok\"><td>Success</td><td>$jtitle</td><td>$jcomment</td><td>$details</td></tr>" >> $report
+            ### echo " -> PASSED (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+            echo -n "."
+        elif [[ ("$vmresult" == "mk_b:dvmvfe:mk_s:") || ("$vmresult" == "mk_b:dvmvfe:dvmpassed:mk_s:") ]]; then
+            (( jwarningcnt += 1 )) 
+            echo "<tr class=\"wok\"><td>Warning</td><td>$jtitle</td><td>$jcomment</td><td>Special behavior regarding VerifyError</td></tr>" >> $report
+            ### echo " -> WARNING (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+            echo -n "W"
+        else
+           vmres=`cat $BASEDIR/dalvikout | sed -e 's/mk_b://;s/mk_s://'`
+           vmres="$details<br><pre>$vmres</pre>"    
+            # red with additional info if a VFE failed, red if either a N,B, or E failed
+            jtype=`echo "$mainclass" | sed -e 's/.*_test\([^0-9]*\)[0-9].*/\1/' `
+            if [ "$jtype" == "VFE" ]; then
+                (( jvfefailedcnt += 1 ))
+                echo -n "<tr class=\"nok\"><td>Verifier failure</td><td>$jtitle</td><td>$jcomment</td><td>$vmres</td></tr>" >> $report
+                ### echo " -> VFE FAILED (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+                echo -n "V"
+            else
+                (( jfailedcnt += 1 )) 
+                echo -n "<tr class=\"nok\"><td>Functional failure</td><td>$jtitle</td><td>$jcomment</td><td>$vmres</td></tr>" >> $report
+                ### echo " -> FAILED (passed:$jpassedcnt, failed:$jfailedcnt, vfe failed:$jvfefailedcnt, warnings:$jwarningcnt)"
+                echo -n "F"
+            fi
+        fi
+        
+        (( jcolumns += 1 ))
+        if [ ${jcolumns} -eq 40 ]; then
+            echo ""
+            (( jcolumns = 0 ))
+        fi
+        
+    fi
+      
+done 3<$BASEDIR/data/scriptdata #we use fd nr 3 to avoid subshelling via cat since this looses all variables (and thus also the counters we are interested in).
+
+echo "</table>" >> $report
+let jallcalccnt=$jpassedcnt+$jfailedcnt+$jvfefailedcnt+$jwarningcnt
+if [ $jallcalccnt -ne $jallcnt ]; then
+    echo "<br>error: green & red != total , $jallcalccnt -ne $jallcnt" >> $report
+    exit 1;
+fi
+
+echo "<br>Tests run: ${jallcnt}" >> $report
+echo "<br>Functional failures: ${jfailedcnt}" >> $report
+echo "<br>Verifier failures: ${jvfefailedcnt}" >> $report
+echo "<br>Warnings: ${jwarningcnt}" >> $report
+
+echo $post_report >> $report
+
+if [[ jcolumns -ne 0 ]]; then
+    echo ""
+fi
+
+echo ""
+
+if [[ jallcnt -eq jpassedcnt ]]; then
+    echo "OK (${jpassedcnt} tests)"
+else
+    echo "FAILURES!!!"
+    echo ""
+    echo "Tests run          : ${jallcnt}"
+    echo "Functional failures: ${jfailedcnt}"
+    echo "Verifier failures  : ${jvfefailedcnt}"
+    echo "Warnings           : ${jwarningcnt}"
+fi
+
+echo ""
+echo "Please see complete report in ${report}"
+echo "--------------------------------------------------"
diff --git a/tools/dx-tests/lib/jasmin.jar b/tools/dx-tests/lib/jasmin.jar
new file mode 100644
index 0000000..87db0d0
--- /dev/null
+++ b/tools/dx-tests/lib/jasmin.jar
Binary files differ
diff --git a/tools/dx-tests/lib/junit.jar b/tools/dx-tests/lib/junit.jar
new file mode 100644
index 0000000..674d71e
--- /dev/null
+++ b/tools/dx-tests/lib/junit.jar
Binary files differ
diff --git a/tools/dx-tests/scripts/assemble_cfh.sh b/tools/dx-tests/scripts/assemble_cfh.sh
new file mode 100755
index 0000000..0c8e9c7
--- /dev/null
+++ b/tools/dx-tests/scripts/assemble_cfh.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+# compiles all .cfh files into .class files
+abase=`pwd`
+srcd="$abase/src"
+cout=$abase/out/classes_cfh
+cp=$abase/out/classes_jasmin
+cp2=$abase/out/classes_javac
+
+echo "del old files"
+rm -rf $cout/*
+echo "done del"
+
+echo "src folder:$srcd"
+for myfile in `find $srcd -name "*.cfh"`
+do
+    echo "file:$myfile"
+    java -cp $cout:$cp:$cp2 dxconvext.ClassFileAssembler $myfile $cout
+done
+
+echo "Done!"
diff --git a/tools/dx-tests/scripts/collect_dasm_files.sh b/tools/dx-tests/scripts/collect_dasm_files.sh
new file mode 100644
index 0000000..d4275c0
--- /dev/null
+++ b/tools/dx-tests/scripts/collect_dasm_files.sh
@@ -0,0 +1,154 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+BASEDIR=`pwd`
+CLASSFOLDERS='out/classes_cfh out/classes_jasmin out/classes_javac'
+
+function findClassFile()
+{
+    i=0;
+    for path in $1; 
+    do
+        if [ -f ${path}/$2 ]; then
+            CLASSFOLDER=$path
+            return
+        fi
+    done
+}
+
+function mapOpcode()
+{
+    MAPPED_OPCODE=""
+    if [ -z $1 ]; then
+        MAPPED_OPCODE=""
+        return;
+    fi
+    
+    line=`grep -e "^$1    " ${BASEDIR}/data/opcode_mapping`
+    if [ $? -ne 0 ]; then
+        MAPPED_OPCODE=""
+    else
+        echo $line
+        MAPPED_OPCODE=`echo -n $line | cut -d" " -f2`
+    fi
+}
+
+while read -u 3 myline;
+do
+    jpackageclass=`echo $myline | cut -d";" -f1` # e.g dxc.junit.verify.t482_9.Main_testVFE2
+    jpackageclassfile=`echo $jpackageclass | sed -e 's/\./\//g;s/$/.java/'`
+    echo $jpackageclassfile
+    jtestclass=`echo $myline | cut -d";" -f2` # e.g dxc.junit.verity.t482_9.jm.T_t482_9_1
+    jtestclassfile=`echo $jtestclass | sed -e 's/\./\//g;s/$/.class/'`
+    jtestsourcefile=`echo $jtestclass | sed -e 's/\./\//g;s/$/.java/'`
+#    echo $jtestclassfile
+    
+rm -rf out/tmp
+mkdir -p out/tmp
+
+findClassFile "${CLASSFOLDERS}" $jtestclassfile
+cd ${CLASSFOLDER}
+cp -P --parent $jtestclassfile ${BASEDIR}/out/tmp/
+cd ${BASEDIR}
+
+#findClassFile "${CLASSFOLDERS}" $jpackageclassfile
+#cd ${CLASSFOLDER}
+#cp -P --parents $jpackageclassfile ${BASEDIR}/out/tmp/
+#cd ${BASEDIR}
+
+# echo ${CLASSFOLDER}/${jtestclassfile}
+
+OPCODE=`echo $jtestclass | sed -e 's/.*T_\(.*\)_[0-9]\+[_]*[a-z]*/\1/'`
+mapOpcode ${OPCODE}
+# echo ${OPCODE} " - " ${MAPPED_OPCODE}
+if [ -z ${MAPPED_OPCODE} ]; then
+    continue
+fi
+
+for subcode in `echo $MAPPED_OPCODE | cut -d";" -f1,2 --output-delimiter=" "`; do
+
+    SCRIPT="s#out/classes_[^/]*/dxc/\(.*\)/${OPCODE}/jm/T_${OPCODE}\(.*\)\.class#src/dot/\1/${subcode}/d/T_${subcode}\2.d#"
+    FILEDEST=`echo ${CLASSFOLDER}/${jtestclassfile} | sed -e $SCRIPT`
+    echo ${FILEDEST}
+#    SCRIPT="s#out/classes_[^/]*/dxc/\(.*\)${OPCODE}/Main_\(.*\)\.class#src/dot/\1/${subcode}/Main_\2.d#"
+#    FILEDEST=`echo ${CLASSFOLDER}/${jpackageclassfile} | sed -e $SCRIPT`
+#    echo ${FILEDEST}
+    
+    cd out/tmp
+    OUT=`dx --dex --no-optimize --positions=lines --output="/tmp/dxclasses.jar" ${jtestclassfile} 2>&1`
+    
+    if [ $? -eq 0 ]; then
+        cd ${BASEDIR}
+        mkdir -p `dirname ${FILEDEST}`
+        dexdump -g /tmp/dxclasses.jar > ${FILEDEST}
+        sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${FILEDEST}
+        SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/]\)/${subcode}\1d\2/g"
+        sed -i -e ${SCRIPT} ${FILEDEST}
+        SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+        sed -i -e ${SCRIPT} ${FILEDEST}
+        
+        SCRIPT="s#dxc/\(.*\)/${OPCODE}/\(.*\)#src/dot/\1/${subcode}/\2#"
+        jpackagedestfile=`echo ${jpackageclassfile} | sed -e $SCRIPT`
+        cp src/${jpackageclassfile} ${jpackagedestfile}
+        sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${jpackagedestfile}
+        SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/]\)/${subcode}\1d\2/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        sed -i -e "s/\(package .*\)${OPCODE}/\1${subcode}/" ${jpackagedestfile}
+
+
+        SCRIPT="s#dxc/\(.*\)/${OPCODE}/jm/\(.*\)${OPCODE}\(.*\).class#src/dot/\1/${subcode}/d/\2${subcode}\3.java#"
+        jpackagedestfile=`echo ${jtestclassfile} | sed -e $SCRIPT`
+        cp src/${jtestsourcefile} ${jpackagedestfile}
+        sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${jpackagedestfile}
+        SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/|;]\)/${subcode}\1d\2/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+        sed -i -e ${SCRIPT} ${jpackagedestfile}
+        sed -i -e "s/\(package .*\)${OPCODE}/\1${subcode}/" ${jpackagedestfile}
+        
+        srcdir=`dirname ${jtestsourcefile}`
+        for srcfile in `find src/${srcdir} -maxdepth 1 -type f ! -name "T_*.java" -a -name "*.java"`; do
+            echo $srcfile
+            SCRIPT="s#dxc/\(.*\)/${OPCODE}/jm/\(.*\).java#dot/\1/${subcode}/d/\2.java#"
+            jpackagedestfile=`echo ${srcfile} | sed -e $SCRIPT`
+            cp ${srcfile} ${jpackagedestfile}
+            sed -i -e 's/dxc\([\.|\/]\)junit/dot\1junit/' ${jpackagedestfile}
+            SCRIPT="s/${OPCODE}\([\.|\/]\)jm\([\.|\/|;]\)/${subcode}\1d\2/g"
+            sed -i -e ${SCRIPT} ${jpackagedestfile}
+            SCRIPT="s/T_${OPCODE}/T_${subcode}/g"
+            sed -i -e ${SCRIPT} ${jpackagedestfile}
+            sed -i -e "s/\(package .*\)${OPCODE}/\1${subcode}/" ${jpackagedestfile}
+        done
+        
+        srcdir=`dirname ${jpackageclassfile}`
+        for srcfile in `find src/${srcdir} -maxdepth 1 -type f ! -name "Main_*.java" -a ! -name "Test_*.java" -a -name "*.java"`; do
+            echo $srcfile
+            SCRIPT="s#dxc/\(.*\)/${OPCODE}/\(.*\)#dot/\1/${subcode}/\2#"
+            jpackagedestfile=`echo ${srcfile} | sed -e $SCRIPT`
+            cp -v ${srcfile} ${jpackagedestfile}
+        done
+        
+    else
+        echo "--- not dexable"
+    fi
+    cd ${BASEDIR}
+done
+
+
+done 3<$BASEDIR/data/scriptdata
+
diff --git a/tools/dx-tests/scripts/jm.sh b/tools/dx-tests/scripts/jm.sh
new file mode 100755
index 0000000..c9c1848
--- /dev/null
+++ b/tools/dx-tests/scripts/jm.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+#
+# Copyright (C) 2008 The Android Open Source Project
+#
+# 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.
+
+# 
+echo "compile jasmin files"
+rm -rf out/classes_jasmin/*
+java -jar lib/jasmin.jar -d out/classes_jasmin src/dxc/junit/**/**/**/*.j
+echo "Done!"
\ No newline at end of file
diff --git a/tools/dx-tests/scripts/validate-tests.sh b/tools/dx-tests/scripts/validate-tests.sh
new file mode 100755
index 0000000..df73cf1
--- /dev/null
+++ b/tools/dx-tests/scripts/validate-tests.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+# Quick and dirty way to validate the DX tests against a JVM. Note that
+# even the JVM has different bugs and verification behavior depending
+# on the version. The tests pass 100% for the following setup:
+# 
+# java version "1.6.0"
+# Java(TM) SE Runtime Environment (build 1.6.0-b105)
+# Java HotSpot(TM) Server VM (build 1.6.0-b105, mixed mode)
+#
+# Linux ... 2.6.18.5-gg42workstation-mixed64-32 #1 SMP
+# Tue Nov 25 21:45:59 PST 2008 x86_64 GNU/Linux
+#
+# You can only run the tests if the "dx-tests" target has been built before.
+# 
+java -cp ./lib/junit.jar:$ANDROID_BUILD_TOP/out/target/common/cts/dxconverter/classout/ junit.textui.TestRunner dxc.junit.AllTests
+
+
diff --git a/tools/dx-tests/src/dxc/Main.java b/tools/dx-tests/src/dxc/Main.java
new file mode 100644
index 0000000..04031da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/Main.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc;
+
+import dxc.junit.AllTests;
+import junit.textui.TestRunner;
+
+/**
+ * Main class to run the jasmin tests.
+ */
+public class Main {
+    public static void main(String[] args) {
+        if (args.length == 0) {
+            System.out.println("Running all tests...");
+            TestRunner.run(AllTests.suite());
+        } else {
+            System.out.println("Running selected tests...");
+            TestRunner.main(args);
+        }
+        
+        Runtime.getRuntime().halt(0);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/AllTests.java b/tools/dx-tests/src/dxc/junit/AllTests.java
new file mode 100644
index 0000000..d5867bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/AllTests.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite();
+        // tests basic functionality
+        suite.addTest(dxc.junit.argsreturns.AllTests.suite());
+        // tests all opcodes
+        suite.addTest(dxc.junit.opcodes.AllTests.suite());
+        // tests all constraints that should be enforced by the verifier,
+        // but which do apply to more than one bytecode
+        suite.addTest(dxc.junit.verify.AllTests.suite());
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/DxAbstractMain.java b/tools/dx-tests/src/dxc/junit/DxAbstractMain.java
new file mode 100644
index 0000000..157e489
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/DxAbstractMain.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+package dxc.junit;
+
+public class DxAbstractMain {
+    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+    
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/DxTestCase.java b/tools/dx-tests/src/dxc/junit/DxTestCase.java
new file mode 100644
index 0000000..00b57e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/DxTestCase.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+package dxc.junit;
+
+import junit.framework.TestCase;
+
+public class DxTestCase extends TestCase {
+    
+    // omit the "extends TestCase" and uncomment the following methods if you would like to run the tests as rolled-out, separate tests.
+    
+    /*
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+    */
+    
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/DxUtil.java b/tools/dx-tests/src/dxc/junit/DxUtil.java
new file mode 100644
index 0000000..f1c90b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/DxUtil.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+package dxc.junit;
+
+public class DxUtil {
+    private static boolean isDalvik = false;
+    
+    static {
+        /**
+         * whether in case of a failure, also ClassNotFoundException is accepted.
+         * this makes sense for invalid classes that got rejected by the dx tools
+         * and thus do not exist in .dex format, so that this class missing means a
+         * the expected verify error (though at the dx tool level)
+         */
+//        String acnfS = System.getProperty("acceptCNF");
+//        isDalvik = (acnfS != null && acnfS.equals("true"));
+        //System.out.println("@DX:DxUtil:isDalik="+isDalvik);
+    }
+    
+    public static void checkVerifyException(Throwable t) {
+        // the dalvik vm and other vm handle verify errors differently (see the dalvik verifier)
+        // the dalvik vm only throws a VerifyError, whereas other vm can throw all subclasses of
+        // LinkageError:
+        // - ClassCircularityError
+        // - ClassFormatError
+        // - ExceptionInInitializerError
+        // - IncompatibleClassChangeError
+        // - NoClassDefFoundError
+        // - UnsatisfiedLinkError
+        // - VerifyError
+
+        // in case we are testing the dalvik, we also accept a ClassNotFoundException, 
+        // since that may happen when a verify error was thrown by the dx tool and thus no
+        // classes.dex was written at all. 
+        //System.out.println("@dx:debug:isDalvik:"+isDalvik);
+        /*
+        if ((t instanceof VerifyError || 
+                (isDalvik && t instanceof ClassNotFoundException) || 
+                (!isDalvik && !(t instanceof NoClassDefFoundError) 
+                        && t instanceof LinkageError))) {
+                // ok, this is what we expected
+            System.out.println("@dx:debug:vfe-ok: vfe was:"+t.getClass().getName()+", msg:"+t.getMessage());
+            return;
+        } else {
+            throw new RuntimeException("test did not cause the expected verify error, but:"+t.getClass().getName()+", msg:"+t.getMessage());
+        }
+*/
+        if (t instanceof VerifyError || t instanceof ClassNotFoundException || t instanceof LinkageError) {
+                if (t instanceof VerifyError) {
+                    if (((VerifyError)t).getMessage().contains("Main_")) {
+                        System.out.print("verify failed on Main_");
+                    }
+                }
+                // ok, this is what we expected
+        } else {
+            throw new RuntimeException("Verify error expected", t);
+        }
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/AllTests.java b/tools/dx-tests/src/dxc/junit/argsreturns/AllTests.java
new file mode 100644
index 0000000..fc32868
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/AllTests.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.argsreturns;
+
+import dxc.junit.argsreturns.pargsreturn.Test_pargsreturn;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for basic java vm opcodes: "
+                + "calling method with parameters and return");
+        suite.addTestSuite(Test_pargsreturn.class);
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/Test_pargsreturn.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/Test_pargsreturn.java
new file mode 100644
index 0000000..e6f0f04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/Test_pargsreturn.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.argsreturns.pargsreturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.argsreturns.pargsreturn.jm.T1;
+import dxc.junit.argsreturns.pargsreturn.jm.T2;
+import dxc.junit.argsreturns.pargsreturn.jm.T3;
+import dxc.junit.argsreturns.pargsreturn.jm.T4;
+
+public class Test_pargsreturn extends DxTestCase {
+
+    /**
+     * @title checks return value of a constant
+     */
+    public void testN1() {
+        assertEquals(1234, new T1().run());
+    }
+    
+    /**
+     * @title checks whether the correct int value is returned.
+     */
+    public void testN2() {
+        assertEquals(1234, new T2().run(1234));
+    }
+    
+    /**
+     * @title tests whether the correct int value is set.
+     */
+    public void testN3() {
+        T3 t = new T3();
+        t.run(1234);
+        assertEquals(1234, t.i1);
+    }
+
+    /**
+     * @title tests correct setting of field values
+     */
+    public void testN4() {
+        T4 t = new T4();
+        t.run(1234);
+        assertEquals(50000000000l, t.j1);
+        assertEquals(1234, t.i1);
+    }
+
+    
+    
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.j
new file mode 100644
index 0000000..46eb6b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T1.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    sipush 1234
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.java
new file mode 100644
index 0000000..196ae8d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T1 {
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.j
new file mode 100644
index 0000000..141877c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T2.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.java
new file mode 100644
index 0000000..b89bfd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T2 {
+    public int run(int i) {
+        return i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.j
new file mode 100644
index 0000000..d4ead13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T3.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T3
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)V
+    .limit stack 2
+    .limit locals 2
+    aload_0
+    iload_1
+    putfield dxc.junit.argsreturns.pargsreturn.jm.T3.i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.java
new file mode 100644
index 0000000..e50f39e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T3 {
+    public int i1;
+    
+    public void run(int i) {
+        i1 = i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.j b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.j
new file mode 100644
index 0000000..1b294c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T4.java
+.class public dxc/junit/argsreturns/pargsreturn/jm/T4
+.super java/lang/Object
+
+.field public i1 I
+.field public j1 J
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)V
+    .limit stack 3
+    .limit locals 2
+    aload_0
+    iload_1
+    putfield dxc.junit.argsreturns.pargsreturn.jm.T4.i1 I
+
+    aload_0
+    ldc2_w 50000000000
+    putfield dxc.junit.argsreturns.pargsreturn.jm.T4.j1 J
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.java b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.java
new file mode 100644
index 0000000..bb8da48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/argsreturns/pargsreturn/jm/T4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.argsreturns.pargsreturn.jm;
+
+public class T4 {
+    public int i1;
+    public long j1;
+    
+    public void run(int i) {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/AllTests.java b/tools/dx-tests/src/dxc/junit/opcodes/AllTests.java
new file mode 100644
index 0000000..2c49ccc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/AllTests.java
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for all java vm opcodes");
+        suite.addTestSuite(dxc.junit.opcodes.aaload.Test_aaload.class);
+        suite.addTestSuite(dxc.junit.opcodes.aastore.Test_aastore.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.aconst_null.Test_aconst_null.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload.Test_aload.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_0.Test_aload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_1.Test_aload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_2.Test_aload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.aload_3.Test_aload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.anewarray.Test_anewarray.class);
+        suite.addTestSuite(dxc.junit.opcodes.areturn.Test_areturn.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.arraylength.Test_arraylength.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore.Test_astore.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_0.Test_astore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_1.Test_astore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_2.Test_astore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.astore_3.Test_astore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.athrow.Test_athrow.class);
+        suite.addTestSuite(dxc.junit.opcodes.baload.Test_baload.class);
+        suite.addTestSuite(dxc.junit.opcodes.bastore.Test_bastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.bipush.Test_bipush.class);
+        suite.addTestSuite(dxc.junit.opcodes.caload.Test_caload.class);
+        suite.addTestSuite(dxc.junit.opcodes.castore.Test_castore.class);
+        suite.addTestSuite(dxc.junit.opcodes.checkcast.Test_checkcast.class);
+        suite.addTestSuite(dxc.junit.opcodes.d2f.Test_d2f.class);
+        suite.addTestSuite(dxc.junit.opcodes.d2i.Test_d2i.class);
+        suite.addTestSuite(dxc.junit.opcodes.d2l.Test_d2l.class);
+        suite.addTestSuite(dxc.junit.opcodes.dadd.Test_dadd.class);
+        suite.addTestSuite(dxc.junit.opcodes.daload.Test_daload.class);
+        suite.addTestSuite(dxc.junit.opcodes.dastore.Test_dastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.dcmpg.Test_dcmpg.class);
+        suite.addTestSuite(dxc.junit.opcodes.dcmpl.Test_dcmpl.class);
+        suite.addTestSuite(dxc.junit.opcodes.dconst_0.Test_dconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.dconst_1.Test_dconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.ddiv.Test_ddiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload.Test_dload.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_0.Test_dload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_1.Test_dload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_2.Test_dload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dload_3.Test_dload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.dmul.Test_dmul.class);
+        suite.addTestSuite(dxc.junit.opcodes.dneg.Test_dneg.class);
+        suite.addTestSuite(dxc.junit.opcodes.drem.Test_drem.class);
+        suite.addTestSuite(dxc.junit.opcodes.dreturn.Test_dreturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore.Test_dstore.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_0.Test_dstore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_1.Test_dstore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_2.Test_dstore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dstore_3.Test_dstore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.dsub.Test_dsub.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup.Test_dup.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup_x1.Test_dup_x1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup_x2.Test_dup_x2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup2.Test_dup2.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup2_x1.Test_dup2_x1.class);
+        suite.addTestSuite(dxc.junit.opcodes.dup2_x2.Test_dup2_x2.class);
+        suite.addTestSuite(dxc.junit.opcodes.f2d.Test_f2d.class);
+        suite.addTestSuite(dxc.junit.opcodes.f2i.Test_f2i.class);
+        suite.addTestSuite(dxc.junit.opcodes.f2l.Test_f2l.class);
+        suite.addTestSuite(dxc.junit.opcodes.fadd.Test_fadd.class);
+        suite.addTestSuite(dxc.junit.opcodes.faload.Test_faload.class);
+        suite.addTestSuite(dxc.junit.opcodes.fastore.Test_fastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.fcmpg.Test_fcmpg.class);
+        suite.addTestSuite(dxc.junit.opcodes.fcmpl.Test_fcmpl.class);
+        suite.addTestSuite(dxc.junit.opcodes.fconst_0.Test_fconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.fconst_1.Test_fconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.fconst_2.Test_fconst_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.fdiv.Test_fdiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload.Test_fload.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_0.Test_fload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_1.Test_fload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_2.Test_fload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.fload_3.Test_fload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.fmul.Test_fmul.class);
+        suite.addTestSuite(dxc.junit.opcodes.fneg.Test_fneg.class);
+        suite.addTestSuite(dxc.junit.opcodes.frem.Test_frem.class);
+        suite.addTestSuite(dxc.junit.opcodes.freturn.Test_freturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore.Test_fstore.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_0.Test_fstore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_1.Test_fstore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_2.Test_fstore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.fstore_3.Test_fstore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.fsub.Test_fsub.class);
+        suite.addTestSuite(dxc.junit.opcodes.getfield.Test_getfield.class);
+        suite.addTestSuite(dxc.junit.opcodes.getstatic.Test_getstatic.class);
+        suite.addTestSuite(dxc.junit.opcodes.opc_goto.Test_opc_goto.class);
+        suite.addTestSuite(dxc.junit.opcodes.goto_w.Test_goto_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2b.Test_i2b.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2c.Test_i2c.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2d.Test_i2d.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2f.Test_i2f.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2l.Test_i2l.class);
+        suite.addTestSuite(dxc.junit.opcodes.i2s.Test_i2s.class);
+        suite.addTestSuite(dxc.junit.opcodes.iaload.Test_iaload.class);
+        suite.addTestSuite(dxc.junit.opcodes.iadd.Test_iadd.class);
+        suite.addTestSuite(dxc.junit.opcodes.iand.Test_iand.class);
+        suite.addTestSuite(dxc.junit.opcodes.iastore.Test_iastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_m1.Test_iconst_m1.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_0.Test_iconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_1.Test_iconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_2.Test_iconst_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_3.Test_iconst_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_4.Test_iconst_4.class);
+        suite.addTestSuite(dxc.junit.opcodes.iconst_5.Test_iconst_5.class);
+        suite.addTestSuite(dxc.junit.opcodes.idiv.Test_idiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_acmpeq.Test_if_acmpeq.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_acmpne.Test_if_acmpne.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpeq.Test_if_icmpeq.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpge.Test_if_icmpge.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpgt.Test_if_icmpgt.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmple.Test_if_icmple.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmplt.Test_if_icmplt.class);
+        suite.addTestSuite(dxc.junit.opcodes.if_icmpne.Test_if_icmpne.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifeq.Test_ifeq.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifge.Test_ifge.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifgt.Test_ifgt.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifle.Test_ifle.class);
+        suite.addTestSuite(dxc.junit.opcodes.iflt.Test_iflt.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifne.Test_ifne.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifnonnull.Test_ifnonnull.class);
+        suite.addTestSuite(dxc.junit.opcodes.ifnull.Test_ifnull.class);
+        suite.addTestSuite(dxc.junit.opcodes.iinc.Test_iinc.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload.Test_iload.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_0.Test_iload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_1.Test_iload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_2.Test_iload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.iload_3.Test_iload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.imul.Test_imul.class);
+        suite.addTestSuite(dxc.junit.opcodes.ineg.Test_ineg.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.opc_instanceof.Test_opc_instanceof.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokeinterface.Test_invokeinterface.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokespecial.Test_invokespecial.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokestatic.Test_invokestatic.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.invokevirtual.Test_invokevirtual.class);
+        suite.addTestSuite(dxc.junit.opcodes.ior.Test_ior.class);
+        suite.addTestSuite(dxc.junit.opcodes.irem.Test_irem.class);
+        suite.addTestSuite(dxc.junit.opcodes.ireturn.Test_ireturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.ishl.Test_ishl.class);
+        suite.addTestSuite(dxc.junit.opcodes.ishr.Test_ishr.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore.Test_istore.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_0.Test_istore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_1.Test_istore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_2.Test_istore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.istore_3.Test_istore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.isub.Test_isub.class);
+        suite.addTestSuite(dxc.junit.opcodes.iushr.Test_iushr.class);
+        suite.addTestSuite(dxc.junit.opcodes.ixor.Test_ixor.class);
+        suite.addTestSuite(dxc.junit.opcodes.jsr.Test_jsr.class);
+        suite.addTestSuite(dxc.junit.opcodes.jsr_w.Test_jsr_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.l2d.Test_l2d.class);
+        suite.addTestSuite(dxc.junit.opcodes.l2f.Test_l2f.class);
+        suite.addTestSuite(dxc.junit.opcodes.l2i.Test_l2i.class);
+        suite.addTestSuite(dxc.junit.opcodes.ladd.Test_ladd.class);
+        suite.addTestSuite(dxc.junit.opcodes.laload.Test_laload.class);
+        suite.addTestSuite(dxc.junit.opcodes.land.Test_land.class);
+        suite.addTestSuite(dxc.junit.opcodes.lastore.Test_lastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.lcmp.Test_lcmp.class);
+        suite.addTestSuite(dxc.junit.opcodes.lconst_0.Test_lconst_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.lconst_1.Test_lconst_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldc.Test_ldc.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldc_w.Test_ldc_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldc2_w.Test_ldc2_w.class);
+        suite.addTestSuite(dxc.junit.opcodes.ldiv.Test_ldiv.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload.Test_lload.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_0.Test_lload_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_1.Test_lload_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_2.Test_lload_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.lload_3.Test_lload_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.lmul.Test_lmul.class);
+        suite.addTestSuite(dxc.junit.opcodes.lneg.Test_lneg.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.lookupswitch.Test_lookupswitch.class);
+        suite.addTestSuite(dxc.junit.opcodes.lor.Test_lor.class);
+        suite.addTestSuite(dxc.junit.opcodes.lrem.Test_lrem.class);
+        suite.addTestSuite(dxc.junit.opcodes.lreturn.Test_lreturn.class);
+        suite.addTestSuite(dxc.junit.opcodes.lshl.Test_lshl.class);
+        suite.addTestSuite(dxc.junit.opcodes.lshr.Test_lshr.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore.Test_lstore.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_0.Test_lstore_0.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_1.Test_lstore_1.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_2.Test_lstore_2.class);
+        suite.addTestSuite(dxc.junit.opcodes.lstore_3.Test_lstore_3.class);
+        suite.addTestSuite(dxc.junit.opcodes.lsub.Test_lsub.class);
+        suite.addTestSuite(dxc.junit.opcodes.lushr.Test_lushr.class);
+        suite.addTestSuite(dxc.junit.opcodes.lxor.Test_lxor.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.monitorenter.Test_monitorenter.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.monitorexit.Test_monitorexit.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.multianewarray.Test_multianewarray.class);
+        suite.addTestSuite(dxc.junit.opcodes.opc_new.Test_opc_new.class);
+        suite.addTestSuite(dxc.junit.opcodes.newarray.Test_newarray.class);
+        suite.addTestSuite(dxc.junit.opcodes.nop.Test_nop.class);
+        suite.addTestSuite(dxc.junit.opcodes.pop.Test_pop.class);
+        suite.addTestSuite(dxc.junit.opcodes.pop2.Test_pop2.class);
+        suite.addTestSuite(dxc.junit.opcodes.putfield.Test_putfield.class);
+        suite.addTestSuite(dxc.junit.opcodes.putstatic.Test_putstatic.class);
+        suite.addTestSuite(dxc.junit.opcodes.ret.Test_ret.class);
+        suite.addTestSuite(dxc.junit.opcodes.opc_return.Test_opc_return.class);
+        suite.addTestSuite(dxc.junit.opcodes.saload.Test_saload.class);
+        suite.addTestSuite(dxc.junit.opcodes.sastore.Test_sastore.class);
+        suite.addTestSuite(dxc.junit.opcodes.sipush.Test_sipush.class);
+        suite.addTestSuite(dxc.junit.opcodes.swap.Test_swap.class);
+        suite
+                .addTestSuite(dxc.junit.opcodes.tableswitch.Test_tableswitch.class);
+        suite.addTestSuite(dxc.junit.opcodes.wide.Test_wide.class);
+
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/Test_aaload.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/Test_aaload.java
new file mode 100644
index 0000000..eebfa92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/Test_aaload.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aaload.jm.T_aaload_1;
+
+public class Test_aaload extends DxTestCase {
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN1() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("a", t.run(arr, 0));
+    }
+
+    /**
+     * @title Normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("b", t.run(arr, 1));
+    }
+
+    /**
+     * @title ArrayIndexOutOfBoundsException expected
+     */
+    public void testE1() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Negative index. ArrayIndexOutOfBoundsException expected
+     */
+    public void testE2() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title NullPointerException expected
+     */
+    public void testE3() {
+        T_aaload_1 t = new T_aaload_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int
+     */
+    public void testVFE6() {
+        try { // opcodes.aastore.jm
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.aaload.jm.T_aaload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.j
new file mode 100644
index 0000000..90ecad7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_1.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.java
new file mode 100644
index 0000000..8cdd527
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_1 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.j
new file mode 100644
index 0000000..6f906b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_2.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    iload_2
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.java
new file mode 100644
index 0000000..55c8238
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_2 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.j
new file mode 100644
index 0000000..370de70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_3.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+;    iload_2
+    aaload
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.java
new file mode 100644
index 0000000..0afdc21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_3 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.j
new file mode 100644
index 0000000..94d7275
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_4.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;D)Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    dload_2
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.java
new file mode 100644
index 0000000..4505b73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_4 {
+    
+    public String run(String [] arr, double idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.j
new file mode 100644
index 0000000..a34bcdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_5.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;J)Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    lload_2
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.java
new file mode 100644
index 0000000..33b3896
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_5 {
+    
+    public String run(String [] arr, long idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.j
new file mode 100644
index 0000000..e4dbc17
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_6.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.java
new file mode 100644
index 0000000..35c428f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_6 {
+    
+    public String run(Object a, String[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.j
new file mode 100644
index 0000000..86a256d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_7.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([F[Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.java
new file mode 100644
index 0000000..4456205
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_7 {
+    
+    public String run(float[] a, String[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.j
new file mode 100644
index 0000000..5cd99ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_8.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    aaload
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.java
new file mode 100644
index 0000000..1888233
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_8 {
+    
+    public String run(long[] a, String[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.j
new file mode 100644
index 0000000..27de7bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aaload_9.java
+.class public dxc/junit/opcodes/aaload/jm/T_aaload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    aaload
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.java
new file mode 100644
index 0000000..33c3824
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aaload/jm/T_aaload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aaload.jm;
+
+public class T_aaload_9 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/Test_aastore.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/Test_aastore.java
new file mode 100644
index 0000000..419c7b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/Test_aastore.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aastore.jm.T_aastore_1;
+import dxc.junit.opcodes.aastore.jm.T_aastore_10;
+import dxc.junit.opcodes.aastore.jm.T_aastore_11;
+import dxc.junit.opcodes.aastore.jm.T_aastore_4;
+
+public class Test_aastore extends DxTestCase {
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN1() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = new String[2];
+        t.run(arr, 0, "hello");
+        assertEquals("hello", arr[0]);
+    }
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN2() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] value = {"world", null, ""};
+        String[] arr = new String[2];
+        for (int i = 0; i < value.length; i++) {
+            t.run(arr, 1, value[i]);
+            assertEquals(value[i], arr[1]);
+        }
+    }
+
+    /**
+     * @title Normal test. Trying different indexes 
+     */
+    public void testN3() {
+        T_aastore_10 t = new T_aastore_10();
+        Integer[] arr = new Integer[2];
+        Integer value = new Integer(12345);
+        t.run(arr, 0, value);
+        assertEquals(value, arr[0]);
+    }
+
+    /**
+     * @title  Check assignement compatibility rules
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.aastore.jm.SubClass
+        // @uses dxc.junit.opcodes.aastore.jm.SuperClass
+        // @uses dxc.junit.opcodes.aastore.jm.SuperInterface
+        // @uses dxc.junit.opcodes.aastore.jm.SuperInterface2
+        T_aastore_11 t = new T_aastore_11();
+        assertEquals(3, t.run());
+
+    }
+
+    /**
+     * @title ArrayIndexOutOfBoundsException expected
+     */
+    public void testE1() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, arr.length, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE2() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, -1, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aastore_1 t = new T_aastore_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0, "abc");
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayStoreException
+     */
+    public void testE4() {
+        T_aastore_4 t = new T_aastore_4();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, 0, this);
+            fail("expected ArrayStoreException");
+        } catch (ArrayStoreException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double, String
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, String
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int, String
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, String
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference, String
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.aastore.jm.T_aastore_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.j
new file mode 100644
index 0000000..abbd91c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_1.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.java
new file mode 100644
index 0000000..bea5c19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_1 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.j
new file mode 100644
index 0000000..1dbfb4b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_10.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/Integer;ILjava/lang/Integer;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.java
new file mode 100644
index 0000000..f94c166
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_10 {
+    
+    public void run(Integer[] arr, int idx, Integer value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.j
new file mode 100644
index 0000000..278f7f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.j
@@ -0,0 +1,132 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_11.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 20
+    .limit locals 10
+    
+    iconst_0
+    istore_1
+
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SubClass
+    astore_2    ; SubClass[]
+    
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SuperClass
+    astore_3    ; SuperClass[]
+    
+    new        dxc/junit/opcodes/aastore/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/aastore/jm/SubClass.<init>()V
+    astore 4    ; SubClass
+    
+    new        dxc/junit/opcodes/aastore/jm/SuperClass
+    dup
+    invokespecial dxc/junit/opcodes/aastore/jm/SuperClass.<init>()V
+    astore 5    ; SuperClass
+    
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SuperInterface
+    astore 6    ; SuperInterface[]
+    
+    iconst_1
+    anewarray java/lang/Object
+    astore 7    ; Object[]
+    
+    iconst_1
+    anewarray dxc/junit/opcodes/aastore/jm/SuperInterface2
+    astore 8    ; SuperInterface2[]    
+    
+; (SubClass -> SuperClass[])
+    aload 3
+    iconst_0
+    aload 4
+    aastore
+    
+; (SubClass -> SuperInterface[])
+    aload 6
+    iconst_0
+    aload 4
+    aastore
+    
+; (SubClass -> Object[])
+    aload 7
+    iconst_0
+    aload 4
+    aastore        
+        
+; !(SuperClass -> SubClass[])    
+Label1:
+    aload 2
+    iconst_0
+    aload 5
+Label10:        
+    nop
+    aastore
+Label11:    
+    goto Label2
+Label12:
+    pop
+    iinc 1 1
+    goto Label2
+        
+; !(SuperClass -> SuperInterface2[])    
+Label2:
+    aload 8
+    iconst_0
+    aload 5
+Label20:    
+    aastore
+Label21:    
+    goto Label3
+Label22:
+    pop
+    iinc 1 1
+    goto Label3
+
+; !(SubClass[] -> SuperInterface[])    
+Label3:
+    aload 6
+    iconst_0
+    aload 2
+Label30:    
+    aastore
+Label31:    
+    goto Label4
+Label32:    
+    pop
+    iinc 1 1
+    goto Label4
+
+Label4:
+Label6:        
+    iload_1
+    ireturn
+    
+.catch java/lang/ArrayStoreException from Label10 to Label11 using Label12
+.catch java/lang/ArrayStoreException from Label20 to Label21 using Label22
+.catch java/lang/ArrayStoreException from Label30 to Label31 using Label32
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.java
new file mode 100644
index 0000000..ad0c222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_11 {
+    
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.j
new file mode 100644
index 0000000..ee00a4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_12.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+    
+    aload_1
+    aload_0
+    aload_3
+    aastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.java
new file mode 100644
index 0000000..c2b1c75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_12 {
+    
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.j
new file mode 100644
index 0000000..2c9d227
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_2.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+
+;    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.java
new file mode 100644
index 0000000..39b0b09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_2 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.j
new file mode 100644
index 0000000..531ab76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_3.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+;    aload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.java
new file mode 100644
index 0000000..2f77f61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_3 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.j
new file mode 100644
index 0000000..38b89e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_4.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;ILjava/lang/Object;)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    aload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.java
new file mode 100644
index 0000000..3c6f558
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_4.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_4 {
+
+//  public void run(Integer[] arr, int idx) {
+    /* similar to
+     * Object x[] = new String[3];
+     * x[0] = new Integer(0);
+     */
+//  }
+    
+    public void run(String[] arr, int idx, Object a) {
+        //arr[idx] = a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.j
new file mode 100644
index 0000000..89e70cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_5.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;DLjava/lang/String;)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+    aload 4
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.java
new file mode 100644
index 0000000..d063623
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_5 {
+
+    public void run(String[] arr, double idx, String value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.j
new file mode 100644
index 0000000..1e5e7ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_6.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([Ljava/lang/String;IJ)V
+    .limit stack 4
+    .limit locals 5
+    
+    aload_1
+    iload_2
+    lload_3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.java
new file mode 100644
index 0000000..449f21c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_6 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.j
new file mode 100644
index 0000000..b89c42f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_7.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;ILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 5
+
+    aload_1
+    iload_2
+    aload 3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.java
new file mode 100644
index 0000000..082f5c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_7 {
+    
+    public void run(Object a, String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.j
new file mode 100644
index 0000000..d6fc147
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_8.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([FILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_2
+    aload 3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.java
new file mode 100644
index 0000000..ef57088
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_8 {
+    
+    public void run(String a[], float[] arr, int idx, String value) {
+        a[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.j
new file mode 100644
index 0000000..83d163f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aastore_9.java
+.class public dxc/junit/opcodes/aastore/jm/T_aastore_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([JILjava/lang/String;)V
+    .limit stack 3
+    .limit locals 5
+
+    aload_1
+    iload_2
+    aload 3
+    aastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.java
new file mode 100644
index 0000000..f5713a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/T_aastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+public class T_aastore_9 {
+    
+    public void run(String a[], long[] arr, int idx, String value) {
+        a[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/TestStubs.java
new file mode 100644
index 0000000..190220f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aastore/jm/TestStubs.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aastore.jm;
+
+
+interface SuperInterface{
+    
+}
+
+interface SuperInterface2{
+    
+}
+
+class SuperClass implements SuperInterface{
+    
+}
+
+class SubClass extends SuperClass{
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/Test_aconst_null.java b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/Test_aconst_null.java
new file mode 100644
index 0000000..531e559
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/Test_aconst_null.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aconst_null;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aconst_null.jm.T_aconst_null_1;
+
+public class Test_aconst_null extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        assertEquals(null, new T_aconst_null_1().run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aconst_null.jm.T_aconst_null_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.j
new file mode 100644
index 0000000..fe997d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.class public dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    aconst_null
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.java
new file mode 100644
index 0000000..0cc8d33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aconst_null.jm;
+
+public class T_aconst_null_1 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2.j
new file mode 100644
index 0000000..9993f2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.class public dxc/junit/opcodes/aconst_null/jm/T_aconst_null_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 0
+    .limit locals 1
+
+    aconst_null
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/Test_aload.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/Test_aload.java
new file mode 100644
index 0000000..cff192e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/Test_aload.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload.jm.T_aload_1;
+import dxc.junit.opcodes.aload.jm.T_aload_1_w;
+import dxc.junit.opcodes.aload.jm.T_aload_2;
+import dxc.junit.opcodes.aload.jm.T_aload_2_w;
+
+/**
+ * NORMAL aload VERSION
+ */
+public class Test_aload extends DxTestCase {
+
+    /**
+     * @title  Test aload 1
+     */
+    public void testN1() {
+        T_aload_1 t = new T_aload_1();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  Test aload 255
+     */
+    public void testN2() {
+        T_aload_2 t = new T_aload_2();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE aload VERSION
+     */
+
+    /**
+     * @title  Test aload 257
+     */
+    public void testN3() {
+        T_aload_1_w t = new T_aload_1_w();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  Test aload_w 1
+     */
+    public void testN4() {
+        T_aload_2_w t = new T_aload_2_w();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload.jm.T_aload_7_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.j
new file mode 100644
index 0000000..8563239
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_1
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.java
new file mode 100644
index 0000000..fb737be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_1 {
+
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.j
new file mode 100644
index 0000000..cb90bcb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 300
+
+    ldc "hello"
+    astore 257
+    ldc "hi"
+    aload 257
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.java
new file mode 100644
index 0000000..eee3830
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_1_w {
+    
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.j
new file mode 100644
index 0000000..2bd7bf4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 4
+    .limit locals 300
+
+    new java/lang/String
+    dup
+    ldc "hello"
+    astore 255
+    ldc "hi"
+    aload 255
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.java
new file mode 100644
index 0000000..23b55e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_2 {
+
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.j
new file mode 100644
index 0000000..fb0bb5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_w 1
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.java
new file mode 100644
index 0000000..34ae0fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_2_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_2_w {
+    
+    public String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.j
new file mode 100644
index 0000000..0c5d5f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 1
+
+    aload 1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.java
new file mode 100644
index 0000000..e09b3f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.j
new file mode 100644
index 0000000..41696c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    aload 300
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.java
new file mode 100644
index 0000000..1bda5b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_3_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_3_w {
+    
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.j
new file mode 100644
index 0000000..d14e595
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_4.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_1
+    fconst_1
+    fstore_2
+    
+    aload 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.java
new file mode 100644
index 0000000..a293d13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.j
new file mode 100644
index 0000000..c611274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_4_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    iconst_1
+    istore 260
+    iconst_1
+    istore 261
+    
+    aload_w 260
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.java
new file mode 100644
index 0000000..17ee8f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_4_w {
+    
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.j
new file mode 100644
index 0000000..c568f54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_5.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    aload 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.java
new file mode 100644
index 0000000..21b90bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.j
new file mode 100644
index 0000000..4c133fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_5_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    dconst_1
+    dstore 261
+    
+    aload_w 260
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.java
new file mode 100644
index 0000000..8331d51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_5_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_5_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.j
new file mode 100644
index 0000000..afbff18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_6.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    ldc "abc"
+    astore_1
+    
+    aload 1
+    aload 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.java
new file mode 100644
index 0000000..2a622c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.j
new file mode 100644
index 0000000..0e62855
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_6_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_6_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 300
+
+    ldc "hello"
+    astore 260
+    
+    aload_w 260
+    aload_w 260
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.java
new file mode 100644
index 0000000..38ec788
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_6_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_6_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.j
new file mode 100644
index 0000000..8aacd2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_7.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_1
+    aload 1
+    ret 1
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.java
new file mode 100644
index 0000000..2ff26f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.j b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.j
new file mode 100644
index 0000000..9b7a8e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_7_w.java
+.class public dxc/junit/opcodes/aload/jm/T_aload_7_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_1
+    aload_w 1
+    ret 1
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.java b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.java
new file mode 100644
index 0000000..110edd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload/jm/T_aload_7_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload.jm;
+
+public class T_aload_7_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/Test_aload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/Test_aload_0.java
new file mode 100644
index 0000000..457d2ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/Test_aload_0.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_0.jm.T_aload_0_1;
+import dxc.junit.opcodes.aload_0.jm.T_aload_0_6;
+
+public class Test_aload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_0_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_0.jm.T_aload_0_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.j
new file mode 100644
index 0000000..99a6407
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_1.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+    
+    ldc "hello"
+    astore_0
+    ldc "hi"
+    aload_0
+    areturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.java
new file mode 100644
index 0000000..cc72d47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.j
new file mode 100644
index 0000000..0e2b130
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_2.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.java
new file mode 100644
index 0000000..ede0a70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.j
new file mode 100644
index 0000000..681f400
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_3.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.java
new file mode 100644
index 0000000..e9ee293
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.j
new file mode 100644
index 0000000..ea898b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_4.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.java
new file mode 100644
index 0000000..c6a30ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.j
new file mode 100644
index 0000000..c30867e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_5.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_1
+    istore_0
+    
+    aload_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.java
new file mode 100644
index 0000000..c9a12a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.j
new file mode 100644
index 0000000..1f823e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_6.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_0
+
+    aload_0
+    aload 0
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.java
new file mode 100644
index 0000000..350126f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.j
new file mode 100644
index 0000000..8e0073c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_7.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    ldc "hello"
+    astore_0
+    
+    aload_0
+    aload_0
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.java
new file mode 100644
index 0000000..7d002ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_7 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.j
new file mode 100644
index 0000000..d2922cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_0_8.java
+.class public dxc/junit/opcodes/aload_0/jm/T_aload_0_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_0
+    aload_0
+    ret 0
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.java
new file mode 100644
index 0000000..1e268b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_0/jm/T_aload_0_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_0.jm;
+
+public class T_aload_0_8 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/Test_aload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/Test_aload_1.java
new file mode 100644
index 0000000..22a129e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/Test_aload_1.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_1.jm.T_aload_1_1;
+import dxc.junit.opcodes.aload_1.jm.T_aload_1_6;
+
+public class Test_aload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_1_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_1.jm.T_aload_1_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.j
new file mode 100644
index 0000000..e2718f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_1.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 2
+    
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_1
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.java
new file mode 100644
index 0000000..e5e4fc6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.j
new file mode 100644
index 0000000..8089467
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_2.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.java
new file mode 100644
index 0000000..d223d29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.j
new file mode 100644
index 0000000..0d98b4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_3.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.java
new file mode 100644
index 0000000..e639b3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.j
new file mode 100644
index 0000000..037314b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_4.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.java
new file mode 100644
index 0000000..4263064
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.j
new file mode 100644
index 0000000..9e84cc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_5.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_1
+    istore_1
+    
+    aload_1
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.java
new file mode 100644
index 0000000..88fb112
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.j
new file mode 100644
index 0000000..2a476d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_6.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+
+    aload_1
+    aload 1
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.java
new file mode 100644
index 0000000..a5b95c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.j
new file mode 100644
index 0000000..dcc158f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_7.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    
+    aload_1
+    aload_1
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.java
new file mode 100644
index 0000000..08930a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_7 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.j
new file mode 100644
index 0000000..a72e6f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_1_8.java
+.class public dxc/junit/opcodes/aload_1/jm/T_aload_1_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    jsr Label1
+    return
+
+Label1:
+    astore_1
+    aload_1
+    ret 1
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.java
new file mode 100644
index 0000000..9fd86cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_1/jm/T_aload_1_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_1.jm;
+
+public class T_aload_1_8 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/Test_aload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/Test_aload_2.java
new file mode 100644
index 0000000..d01c00b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/Test_aload_2.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_2.jm.T_aload_2_1;
+import dxc.junit.opcodes.aload_2.jm.T_aload_2_6;
+
+public class Test_aload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_2_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_2.jm.T_aload_2_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.j
new file mode 100644
index 0000000..cf7efe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_1.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 3
+    
+    ldc "hello"
+    astore_2
+    ldc "hi"
+    aload_2
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.java
new file mode 100644
index 0000000..a57be08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.j
new file mode 100644
index 0000000..12a73ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_2.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.java
new file mode 100644
index 0000000..c2b074d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.j
new file mode 100644
index 0000000..829b23a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_3.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_1
+    fconst_2
+    fstore_2
+    
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.java
new file mode 100644
index 0000000..5fe9956
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.j
new file mode 100644
index 0000000..14565e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_4.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_2
+    
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.java
new file mode 100644
index 0000000..604db5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.j
new file mode 100644
index 0000000..8d3fd27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_5.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    iconst_2
+    istore_2
+    
+    aload_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.java
new file mode 100644
index 0000000..3a39ef9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.j
new file mode 100644
index 0000000..aa81a91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_6.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc "hello"
+    astore_2
+
+    aload_2
+    aload 2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.java
new file mode 100644
index 0000000..a4e9ca0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.j
new file mode 100644
index 0000000..bf69c97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_7.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    ldc "hello"
+    astore_2
+    
+    aload_2
+    aload_2
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.java
new file mode 100644
index 0000000..e9e8773
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_7 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.j
new file mode 100644
index 0000000..d03eedf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_2_8.java
+.class public dxc/junit/opcodes/aload_2/jm/T_aload_2_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    jsr Label1
+    return
+
+Label1:
+    astore_2
+    aload_2
+    ret 2
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.java
new file mode 100644
index 0000000..56e6e7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_2/jm/T_aload_2_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_2.jm;
+
+public class T_aload_2_8 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/Test_aload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/Test_aload_3.java
new file mode 100644
index 0000000..ee67af0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/Test_aload_3.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.aload_3.jm.T_aload_3_1;
+import dxc.junit.opcodes.aload_3.jm.T_aload_3_6;
+
+public class Test_aload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals("hello", T_aload_3_1.run());
+    }
+
+    /**
+     * @title equality of aload_<n> and aload <n>
+     */
+    public void testN2() {
+        assertTrue(T_aload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.21
+     * @title returnAddress may not be loaded from
+     * local variable
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.aload_3.jm.T_aload_3_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.j
new file mode 100644
index 0000000..2d79c90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_1.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    
+    ldc "hello"
+    astore_3
+    ldc "hi"
+    aload_3
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.java
new file mode 100644
index 0000000..27b910f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.j
new file mode 100644
index 0000000..ed1f591
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_2.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.java
new file mode 100644
index 0000000..15743fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.j
new file mode 100644
index 0000000..164dc3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_3.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_2
+    fstore_3
+    
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.java
new file mode 100644
index 0000000..90ff938
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.j
new file mode 100644
index 0000000..d83697a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_4.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.java
new file mode 100644
index 0000000..51b8522
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.j
new file mode 100644
index 0000000..2acfe28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_5.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    iconst_3
+    istore_3
+    
+    aload_3
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.java
new file mode 100644
index 0000000..a2cb2d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.j
new file mode 100644
index 0000000..905342a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_6.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    ldc "hello"
+    astore_3
+
+    aload_3
+    aload 3
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.java
new file mode 100644
index 0000000..ce9727b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_6 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.j
new file mode 100644
index 0000000..1083e93
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_7.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    ldc "hello"
+    astore_3
+    
+    aload_3
+    aload_3
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.java
new file mode 100644
index 0000000..d8f143f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_7 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.j b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.j
new file mode 100644
index 0000000..6699732
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_aload_3_8.java
+.class public dxc/junit/opcodes/aload_3/jm/T_aload_3_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    jsr Label1
+    return
+
+Label1:
+    astore_3
+    aload_3
+    ret 3
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.java b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.java
new file mode 100644
index 0000000..12628ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/aload_3/jm/T_aload_3_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.aload_3.jm;
+
+public class T_aload_3_8 {
+    
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/TestStubs.java
new file mode 100644
index 0000000..08a00cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray;
+
+public class TestStubs {
+    
+private class TestStub{
+    // testE4
+}
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/Test_anewarray.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/Test_anewarray.java
new file mode 100644
index 0000000..ecc1ce2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/Test_anewarray.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.anewarray.jm.T_anewarray_1;
+import dxc.junit.opcodes.anewarray.jm.T_anewarray_6;
+import dxc.junit.opcodes.anewarray.jm.T_anewarray_7;
+
+public class Test_anewarray extends DxTestCase {
+    
+    /**
+     * @title Test for Object
+     */
+    public void testN1() {
+        T_anewarray_1 t = new T_anewarray_1();
+
+        Object[] arr = t.run(10);
+        assertNotNull(arr);
+        assertEquals(10, arr.length);
+        for (int i = 0; i < 10; i++)
+            assertNull(arr[i]);
+    }
+
+    /**
+     * @title Test for String
+     */
+    public void testN2() {
+        T_anewarray_1 t = new T_anewarray_1();
+
+        String[] arr2 = t.run2(5);
+        assertNotNull(arr2);
+        assertEquals(5, arr2.length);
+        for (int i = 0; i < 5; i++)
+            assertNull(arr2[i]);
+    }
+
+    /**
+     * @title Test for Integer
+     */
+    public void testN3() {
+        T_anewarray_1 t = new T_anewarray_1();
+
+        Integer[] arr3 = t.run3(15);
+        assertNotNull(arr3);
+        assertEquals(15, arr3.length);
+        for (int i = 0; i < 15; i++)
+            assertNull(arr3[i]);
+    }
+
+    /**
+     * @title if count is zero, no subsequent dimensions allocated
+     */
+    public void testE1() {
+        T_anewarray_1 t = new T_anewarray_1();
+        Object[] res = t.run(0);
+        try {
+            Object s = res[0];
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE2() {
+        T_anewarray_1 t = new T_anewarray_1();
+        try {
+            t.run(-2);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_anewarray_6 t = new T_anewarray_6();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; eagerly tries to load the array type
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     * <pre>
+     * V(15469) +++ dvmAddClassToHash '[Ldxc/junit/opcodes/anewarray/jm/TestStubs$TestStub;' 0x973d7708 (isnew=1) --> 0x973e1f10  (dalvikvm)
+     * V(15469) Created array class '[Ldxc/junit/opcodes/anewarray/jm/TestStubs$TestStub;' 0x973d7708 (access=0x6000.0010)  (dalvikvm)
+     * </pre>
+     * TestStub class is private. no IllegalAccessError is thrown, but VerifyError
+     */
+    public void testE4() {
+        try {
+            T_anewarray_7 t = new T_anewarray_7();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.17
+     * @title array of more than 255 dimensions
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title constant pool type
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.anewarray.jm.T_anewarray_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.j
new file mode 100644
index 0000000..3fbf658
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_1.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)[Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/Object
+    areturn
+
+.end method
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
+
+.method public run3(I)[Ljava/lang/Integer;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/Integer
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.java
new file mode 100644
index 0000000..4358382
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_1 {
+
+    public Object[] run(int idx) {
+        return new Object[idx];
+    }
+    
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+    
+    public Integer[] run3(int idx) {
+        return new Integer[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.cfh
new file mode 100644
index 0000000..d2fef44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/anewarray/jm/T_anewarray_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{java.lang.String}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 37, len 3, h: 0004: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_2}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 40, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 53, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 62, len 7, h: 0007: utf8{"run2"}
+    // .  .  .  r  u  n  2  
+       01 00 04 72 75 6e 32 
+    // parsed:, offset 69, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 74, len 47, h: 0009: utf8{"dxc/junit/opcodes/anewarray/jm/T_anewarray_2"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  a  n  e  w  a  r  r  a  y  _  2  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 61 6e 65 77 61 72 72 61 79 5f 32 
+    // parsed:, offset 121, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 128, len 19, h: 000b: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 147, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 153, len 21, h: 000d: utf8{"T_anewarray_2.java"}
+    // .  .  .  T  _  a  n  e  w  a  r  r  a  y  _  2  .  j  a  v  a  
+       01 00 12 54 5f 61 6e 65 77 61 72 72 61 79 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 174, len 25, h: 000e: utf8{"(I)[Ljava/lang/String;"}
+    // .  .  .  (  I  )  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 16 28 49 29 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 199, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 202, len 0, h: end constant_pool
+// parsed:, offset 202, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 204, len 2, h: this_class: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_2}
+// .  .  
+   00 04 
+// parsed:, offset 206, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 208, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 210, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 212, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 214, len:72,desc: ()V
+// parsed:, offset 214, len 0, h:  methods[0]: 
+    // parsed:, offset 214, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 218, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 220, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 222, len 0, h:  attributes[0]: 
+        // parsed:, offset 222, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 224, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 228, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 230, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 232, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 241, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 243, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 245, len 0, h: end attributes[0] 
+// parsed:, offset 245, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run2, offset 245, len:41,desc: (I)[Ljava/lang/String;
+// parsed:, offset 245, len 0, h:  methods[1]: 
+    // parsed:, offset 245, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 2, h: name: run2
+    // .  .  
+       00 07 
+    // parsed:, offset 249, len 2, h: descriptor: (I)[Ljava/lang/String;
+    // .  .  
+       00 0e 
+    // parsed:, offset 251, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 253, len 0, h:  attributes[0]: 
+        // parsed:, offset 253, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 255, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 259, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 261, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 263, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: anewarray type{java.lang.String}
+        // .  .  .  
+//@mod           bd 00 03 
+           bd 01 03           
+        // parsed:, offset 4, len 1, h: 0004: areturn
+        // .  
+           b0 
+        // parsed:, offset 272, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 274, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 276, len 0, h: end attributes[0] 
+// parsed:, offset 276, len 0, h: end methods[1] 
+// ========== end-ParseMember:run2, desc: (I)[Ljava/lang/String;
+// parsed:, offset 276, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 278, len 0, h:  attributes[0]: 
+    // parsed:, offset 278, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 280, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 284, len 2, h: source: utf8{"T_anewarray_2.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 286, len 0, h: end attributes[0] 
+// parsed:, offset 286, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.j
new file mode 100644
index 0000000..41c2fc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_2.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.java
new file mode 100644
index 0000000..d58fa37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_2 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.j
new file mode 100644
index 0000000..6e6f638
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_3.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+;    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.java
new file mode 100644
index 0000000..c5b8e54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_3 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.j
new file mode 100644
index 0000000..0ed6b0f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_4.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(F)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    fload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.java
new file mode 100644
index 0000000..1256343
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_4 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.j
new file mode 100644
index 0000000..d5d1770
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_5.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    anewarray [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Ljava/lang/String;
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.java
new file mode 100644
index 0000000..c0f8763
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_5 {
+
+    public String[] run(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.j
new file mode 100644
index 0000000..f2a5369
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_6.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    anewarray dxc/junit/opcodes/anewarray/jm/T_anewarray_61
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.java
new file mode 100644
index 0000000..23fe874
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_6 {
+
+    public Object run() {
+        return new T_anewarray_6[1];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.j
new file mode 100644
index 0000000..8915c0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_7.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    anewarray dxc/junit/opcodes/anewarray/TestStubs$TestStub
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.java
new file mode 100644
index 0000000..b8a9997
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_7 {
+
+    public Object run() {
+        return new T_anewarray_7[1];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.j
new file mode 100644
index 0000000..85e65ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_8.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    anewarray java/lang/String
+
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.java
new file mode 100644
index 0000000..dc349ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_8 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.cfh
new file mode 100644
index 0000000..7f763fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/anewarray/jm/T_anewarray_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 09 
+    // parsed:, offset 15, len 47, h: 0002: utf8{"dxc/junit/opcodes/anewarray/jm/T_anewarray_9"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  a  n  e  w  a  r  r  a  y  _  9  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 61 6e 65 77 61 72 72 61 79 5f 39 
+    // parsed:, offset 62, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 81, len 3, h: 0004: type{java.lang.String}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 84, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 97, len 5, h: 0006: int{0x0000007b / 123}
+    // .  .  .  .  {  
+       03 00 00 00 7b 
+    // parsed:, offset 102, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 7, h: 0008: utf8{"run2"}
+    // .  .  .  r  u  n  2  
+       01 00 04 72 75 6e 32 
+    // parsed:, offset 118, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0c 
+    // parsed:, offset 123, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 130, len 19, h: 000b: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 149, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 155, len 3, h: 000d: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_9}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 158, len 25, h: 000e: utf8{"(I)[Ljava/lang/String;"}
+    // .  .  .  (  I  )  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 16 28 49 29 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 183, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 186, len 21, h: 0010: utf8{"T_anewarray_9.java"}
+    // .  .  .  T  _  a  n  e  w  a  r  r  a  y  _  9  .  j  a  v  a  
+       01 00 12 54 5f 61 6e 65 77 61 72 72 61 79 5f 39 2e 6a 61 76 61 
+// parsed:, offset 207, len 0, h: end constant_pool
+// parsed:, offset 207, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 209, len 2, h: this_class: type{dxc.junit.opcodes.anewarray.jm.T_anewarray_9}
+// .  .  
+   00 0d 
+// parsed:, offset 211, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 213, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 215, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 217, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 219, len:75,desc: ()V
+// parsed:, offset 219, len 0, h:  methods[0]: 
+    // parsed:, offset 219, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 223, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 225, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 227, len 0, h:  attributes[0]: 
+        // parsed:, offset 227, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 229, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 233, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 235, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 237, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 246, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 248, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run2, offset 250, len:44,desc: (I)[Ljava/lang/String;
+// parsed:, offset 250, len 0, h:  methods[1]: 
+    // parsed:, offset 250, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 252, len 2, h: name: run2
+    // .  .  
+       00 08 
+    // parsed:, offset 254, len 2, h: descriptor: (I)[Ljava/lang/String;
+    // .  .  
+       00 0e 
+    // parsed:, offset 256, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 258, len 0, h:  attributes[0]: 
+        // parsed:, offset 258, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 260, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 264, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 266, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 268, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+0000007b
+        // .  .  
+           12 06 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 4, len 3, h: 0004: anewarray type{java.lang.String}
+        // .  .  .  
+//@mod           bd 00 04 
+           bd 00 06 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 280, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 282, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end methods[1] 
+// ========== end-ParseMember:run2, desc: (I)[Ljava/lang/String;
+// parsed:, offset 284, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 286, len 0, h:  attributes[0]: 
+    // parsed:, offset 286, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 288, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 292, len 2, h: source: utf8{"T_anewarray_9.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.j b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.j
new file mode 100644
index 0000000..d91f6f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_anewarray_9.java
+.class public dxc/junit/opcodes/anewarray/jm/T_anewarray_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run2(I)[Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    
+    ldc 123
+    pop
+    
+    iload_1
+    anewarray java/lang/String
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.java
new file mode 100644
index 0000000..30ab5f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/T_anewarray_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class T_anewarray_9 {
+
+    public String[] run2(int idx) {
+        return new String[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/TestStubs.java
new file mode 100644
index 0000000..73452fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/anewarray/jm/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.anewarray.jm;
+
+public class TestStubs {
+    
+private class TestStub{
+    // testE4
+}
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/Runner.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Runner.java
new file mode 100644
index 0000000..580812d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Runner.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn;
+
+public interface Runner {
+    public void doit();
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/RunnerGenerator.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/RunnerGenerator.java
new file mode 100644
index 0000000..e9f34ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/RunnerGenerator.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn;
+
+public interface RunnerGenerator {
+    public Runner run();
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/Test_areturn.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Test_areturn.java
new file mode 100644
index 0000000..5485d03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/Test_areturn.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.areturn.jm.T_areturn_1;
+import dxc.junit.opcodes.areturn.jm.T_areturn_12;
+import dxc.junit.opcodes.areturn.jm.T_areturn_13;
+import dxc.junit.opcodes.areturn.jm.T_areturn_2;
+import dxc.junit.opcodes.areturn.jm.T_areturn_6;
+import dxc.junit.opcodes.areturn.jm.T_areturn_7;
+import dxc.junit.opcodes.areturn.jm.T_areturn_8;
+import dxc.junit.opcodes.areturn.jm.T_areturn_9;
+
+public class Test_areturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_areturn_1 t = new T_areturn_1();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  simple
+     */
+    public void testN2() {
+        T_areturn_1 t = new T_areturn_1();
+        assertEquals(t, t.run2());
+    }
+
+    /**
+     * @title  simple
+     */
+    public void testN3() {
+        T_areturn_1 t = new T_areturn_1();
+        Integer a = 12345;
+        assertEquals(a, t.run3());
+    }
+
+    /**
+     * @title test for null
+     */
+    public void testN4() {
+        T_areturn_2 t = new T_areturn_2();
+        assertNull(t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN5() {
+        T_areturn_6 t = new T_areturn_6();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by areturn
+     */
+    public void testN6() {
+        assertTrue(T_areturn_7.execute());
+    }
+
+    /**
+     * @title  assignment compatibility (TChild returned as TSuper)
+     */
+    public void testN7() {
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper
+        // @uses dxc.junit.opcodes.areturn.jm.TInterface
+        // @uses dxc.junit.opcodes.areturn.jm.TChild
+        T_areturn_12 t = new T_areturn_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  assignment compatibility (TChild returned as TInterface)
+     */
+    public void testN8() {
+        // @uses dxc.junit.opcodes.areturn.jm.TInterface
+        // @uses dxc.junit.opcodes.areturn.jm.TChild
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper
+        T_areturn_13 t = new T_areturn_13();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_areturn_8 t = new T_areturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_areturn_9 t = new T_areturn_9();
+        try {
+            assertEquals("abc", t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title assignment incompatible references
+     */
+    public void testVFE6() {
+        // @uses dxc.junit.opcodes.areturn.jm.TInterface
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper
+        // @uses dxc.junit.opcodes.areturn.jm.TChild
+        try {
+            Class.forName("dxc.junit.opcodes.areturn.jm.T_areturn_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title assignment incompatible references
+     */
+    @SuppressWarnings("cast")
+    public void testVFE7() {
+        // @uses dxc.junit.opcodes.areturn.jm.TSuper2
+        // @uses dxc.junit.opcodes.areturn.Runner
+        // @uses dxc.junit.opcodes.areturn.RunnerGenerator
+        try {
+            RunnerGenerator rg = (RunnerGenerator) Class.forName(
+                    "dxc.junit.opcodes.areturn.jm.T_areturn_15").newInstance();
+            Runner r = rg.run();
+            assertFalse(r instanceof Runner);
+            assertFalse(Runner.class.isAssignableFrom(r.getClass()));
+            // only upon invocation of a concrete method,
+            // a java.lang.IncompatibleClassChangeError is thrown
+            r.doit();
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.j
new file mode 100644
index 0000000..900806d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.j
@@ -0,0 +1,59 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_1.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+    ldc "hello"
+    areturn
+
+.end method
+
+.method public run2()Ljava/lang/Object;
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    areturn
+
+.end method
+
+.method public run3()Ljava/lang/Integer;
+    .limit stack 3
+    .limit locals 2
+
+    new java/lang/Integer
+    dup
+    sipush 12345
+    invokespecial java/lang/Integer/<init>(I)V
+    astore_1
+
+    aload_1
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.java
new file mode 100644
index 0000000..a4a7719
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_1.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_1 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    public Object run2() {
+        return this;
+    }
+    
+    public Integer run3() {
+        Integer value = new Integer(12345);
+        return value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.j
new file mode 100644
index 0000000..db962a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_10.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+;    ldc "abc"
+    fconst_0
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.java
new file mode 100644
index 0000000..efe5c5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_10 {
+    
+    public String run() {
+        return "abc";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.j
new file mode 100644
index 0000000..1a75aee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_11.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_11
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 0
+
+    ldc "hello"
+    areturn
+
+.end method
+
+.method public run()Ljava/lang/String;
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/areturn/jm/T_areturn_11/test()Ljava/lang/String;
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.java
new file mode 100644
index 0000000..ea112ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_11.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_11 {
+    
+    private static String test() {
+        return "hello";
+    }
+    
+    public String run() {
+        return test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.j
new file mode 100644
index 0000000..76f51a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.j
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_12.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method private test()Ldxc/junit/opcodes/areturn/jm/TSuper;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/areturn/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TChild/<init>()V
+
+    areturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_12/test()Ldxc/junit/opcodes/areturn/jm/TSuper;
+
+    instanceof dxc/junit/opcodes/areturn/jm/TChild
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.java
new file mode 100644
index 0000000..6aaa5f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_12.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_12 {
+    
+    private TSuper test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TSuper t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.j
new file mode 100644
index 0000000..c0a8156
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_13.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_13
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method private test()Ldxc/junit/opcodes/areturn/jm/TInterface;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/areturn/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TChild/<init>()V
+    areturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_13/test()Ldxc/junit/opcodes/areturn/jm/TInterface;
+
+    instanceof dxc/junit/opcodes/areturn/jm/TChild
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.java
new file mode 100644
index 0000000..e79f765
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_13.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+public class T_areturn_13 {
+    
+    private TInterface test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TInterface t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.j
new file mode 100644
index 0000000..221015e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_14.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_14
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method private test()Ldxc/junit/opcodes/areturn/jm/TChild;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/areturn/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TSuper/<init>()V
+
+    areturn
+
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_14/test()Ldxc/junit/opcodes/areturn/jm/TChild;
+
+    instanceof dxc/junit/opcodes/areturn/jm/TChild
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.java
new file mode 100644
index 0000000..baa9963
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_14.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+public class T_areturn_14 {
+    
+    private TChild test() {
+        //return new TSuper();
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TChild t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.j
new file mode 100644
index 0000000..afa0940
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_15.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_15
+.super java/lang/Object
+.implements dxc/junit/opcodes/areturn/RunnerGenerator
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ldxc/junit/opcodes/areturn/Runner;
+    .limit stack 2
+
+    new dxc/junit/opcodes/areturn/jm/TSuper2
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/TSuper2/<init>()V
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.java
new file mode 100644
index 0000000..bec3561
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_15.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+public class T_areturn_15 {
+    
+    private TInterface test() {
+        //return new TSuper2();
+        return new TSuper();
+    }
+    
+    public boolean run() {
+        TInterface t = test();
+        return (t instanceof TSuper);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.j
new file mode 100644
index 0000000..20064df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_2.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    aconst_null
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.java
new file mode 100644
index 0000000..a8e0b9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_2 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.j
new file mode 100644
index 0000000..d6e60f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_3.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    ldc "hello"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.java
new file mode 100644
index 0000000..813fc95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_3 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.j
new file mode 100644
index 0000000..a7d470b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_4.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    ldc "hello"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.java
new file mode 100644
index 0000000..0bc7d7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_4 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.j
new file mode 100644
index 0000000..753df23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_5.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+;    ldc "hello"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.java
new file mode 100644
index 0000000..7463e46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_5 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.j
new file mode 100644
index 0000000..372e3e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.j
@@ -0,0 +1,88 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_6.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit locals 6
+    .limit stack 3
+    
+    ldc "a"
+    astore_1
+    ldc "b"
+    astore_2
+    ldc "c"
+    astore 3
+    
+    ldc "d"
+    
+    invokestatic dxc/junit/opcodes/areturn/jm/T_areturn_6/test()Ljava/lang/String;
+    
+    ldc "ddd"
+    if_acmpne Label1
+    
+    ldc "d"
+    if_acmpne Label0
+    
+    aload_1
+    ldc "a"
+    if_acmpne Label0
+    
+    aload_2
+    ldc "b"
+    if_acmpne Label0
+    
+    aload 3
+    ldc "c"
+    if_acmpne Label0    
+    
+    ldc "hello"
+    areturn
+    
+Label1:
+    pop
+Label0:
+    ldc "a"
+    areturn    
+    
+.end method
+
+.method private static test()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 3
+
+    ldc "aaa"
+    astore_0
+
+    ldc "bbb"
+    astore_1
+
+    ldc "ccc"
+    astore_2
+
+    ldc "ddd"
+
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.java
new file mode 100644
index 0000000..685c106
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_6 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    private static String test() {
+        String a = "aaa";
+        String b = "bbb";
+        String c = "ccc";
+        return "ddd";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.j
new file mode 100644
index 0000000..c922898
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.j
@@ -0,0 +1,174 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_7.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value Ljava/lang/Integer;
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 4
+    .limit locals 1
+    
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    new java/lang/Integer
+    dup
+    iconst_0
+    invokespecial java/lang/Integer/<init>(I)V
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.failed Z
+
+    return
+
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_0
+    istore_1
+
+Label4:
+    goto Label0
+
+Label1:
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_7/test()Ljava/lang/Integer;
+    pop
+
+    iinc 1 1
+
+Label0:
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+.end method
+
+
+
+.method private synchronized test()Ljava/lang/Integer;
+    .limit stack 4
+    .limit locals 2
+    
+    new java/lang/Integer
+    dup
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+    invokevirtual java/lang/Integer/intValue()I
+    iconst_1
+    iadd
+    invokespecial java/lang/Integer/<init>(I)V
+    astore_1
+
+    aload_0
+    aload_1
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+
+    invokestatic java/lang/Thread/yield()V
+
+    aload_1
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+    if_acmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.areturn.jm.T_areturn_7.failed Z
+
+Label0:
+    aload_1
+    areturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/areturn/jm/T_areturn_7
+    dup
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+
+Label10:
+    iconst_0
+    ireturn
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.value Ljava/lang/Integer;
+    invokevirtual java/lang/Integer/intValue()I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+    aload_0
+    getfield dxc.junit.opcodes.areturn.jm.T_areturn_7.failed Z
+    ifeq Label2
+    iconst_0
+    goto Label3
+
+Label2:
+    iconst_1
+
+Label3:
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.java
new file mode 100644
index 0000000..f58eb51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_7.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+import dxc.junit.opcodes.areturn.jm.T_areturn_7;
+
+public class T_areturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    Integer value = new Integer(0);
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized Integer test()  {
+        Integer c = new Integer(value.intValue() + 1);
+        
+        value = c;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_areturn_7 test = new T_areturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value.intValue() != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.j
new file mode 100644
index 0000000..953e5eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_8.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+ 
+    aload_0
+    monitorexit
+    ldc "abc"
+    areturn
+
+.end method
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/areturn/jm/T_areturn_8/test()Ljava/lang/String;
+    pop
+
+    iconst_1
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.java
new file mode 100644
index 0000000..f12ed82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_8.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_8 {
+    
+    private synchronized String test() {
+        return "abc";
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.j
new file mode 100644
index 0000000..75b7309
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_areturn_9.java
+.class public dxc/junit/opcodes/areturn/jm/T_areturn_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    ldc "abc"
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.java
new file mode 100644
index 0000000..df35df5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/T_areturn_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+public class T_areturn_9 {
+    
+    public String run() {
+        return "abc";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/TetsStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/TetsStubs.java
new file mode 100644
index 0000000..7b46a68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/areturn/jm/TetsStubs.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.areturn.jm;
+
+
+interface TInterface{
+    
+}
+
+class TSuper implements TInterface {
+    
+}
+
+class TChild extends TSuper {
+    
+}
+
+class TSuper2 {
+    
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/Test_arraylength.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/Test_arraylength.java
new file mode 100644
index 0000000..f5dfd91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/Test_arraylength.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.arraylength;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.arraylength.jm.T_arraylength_1;
+
+public class Test_arraylength extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_arraylength_1 t = new T_arraylength_1();
+        String[] a = new String[5];
+        assertEquals(5, t.run(a));
+    }
+
+    /**
+     * @title NullPointerException expected
+     */
+    public void testNPE1() {
+        T_arraylength_1 t = new T_arraylength_1();
+        try {
+            t.run(null);
+            fail("NPE expected");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.arraylength.jm.T_arraylength_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.arraylength.jm.T_arraylength_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.j b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.j
new file mode 100644
index 0000000..75cd6f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_arraylength_1.java
+.class public dxc/junit/opcodes/arraylength/jm/T_arraylength_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([Ljava/lang/Object;)I
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    arraylength
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.java
new file mode 100644
index 0000000..7b20468
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.arraylength.jm;
+
+public class T_arraylength_1 {
+
+    public int run(Object[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.j b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.j
new file mode 100644
index 0000000..469b364
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.class public dxc/junit/opcodes/arraylength/jm/T_arraylength_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0            ; load "this" pointer
+    arraylength
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.java
new file mode 100644
index 0000000..4ec2183
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.arraylength.jm;
+
+public class T_arraylength_2 {
+
+    public int run() {
+        byte[] ba = null;
+        return ba.length;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.j b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.j
new file mode 100644
index 0000000..30e8cd0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.class public dxc/junit/opcodes/arraylength/jm/T_arraylength_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    arraylength
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.java b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.java
new file mode 100644
index 0000000..6723a27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/arraylength/jm/T_arraylength_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.arraylength.jm;
+
+public class T_arraylength_3 {
+
+    public int run() {
+        byte[] ba = null;
+        return ba.length;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/Test_astore.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/Test_astore.java
new file mode 100644
index 0000000..6e99ace
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/Test_astore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore.jm.T_astore_1;
+import dxc.junit.opcodes.astore.jm.T_astore_1_w;
+import dxc.junit.opcodes.astore.jm.T_astore_5;
+import dxc.junit.opcodes.astore.jm.T_astore_5_w;
+
+public class Test_astore extends DxTestCase {
+
+    /*
+     * NORMAL astore VERSION
+     */
+
+    /**
+     * @title  astore 0
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_1.run());
+    }
+
+    /**
+     * @title  astore 255
+     */
+    public void testN2() {
+        assertEquals("world", T_astore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE astore VERSION
+     */
+
+    /**
+     * @title  astore_w 0
+     */
+    public void testN3() {
+        assertEquals("hello", T_astore_1_w.run());
+    }
+
+    /**
+     * @title  astore 257
+     */
+    public void testN4() {
+        assertEquals("world", T_astore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore.jm.T_astore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.j
new file mode 100644
index 0000000..8791368
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_1.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 1
+    
+    ldc "hello"
+    astore 0
+    ldc "hi"
+    aload 0
+    areturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.java
new file mode 100644
index 0000000..cb6c942
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.j
new file mode 100644
index 0000000..fb6432e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_1_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 4
+    .limit locals 2
+    
+    ldc "hello"
+    astore_w 0
+    ldc "hi"
+    aload 0
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.java
new file mode 100644
index 0000000..ee352e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_1_w {
+    
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.j
new file mode 100644
index 0000000..82d9f21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_2.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.java
new file mode 100644
index 0000000..d6a8eff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.j
new file mode 100644
index 0000000..935d039
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_2_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.java
new file mode 100644
index 0000000..13ddd3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_2_w {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.j
new file mode 100644
index 0000000..8c74ad3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_3.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fconst_1
+    astore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.java
new file mode 100644
index 0000000..a8887d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.j
new file mode 100644
index 0000000..7988f8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_3_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 3
+    .limit locals 2
+
+    fconst_1
+    astore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.java
new file mode 100644
index 0000000..c4c8d3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_3_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_3_w {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.j
new file mode 100644
index 0000000..5a3031a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_4.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    lconst_1
+    astore 0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.java
new file mode 100644
index 0000000..3a20228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.j
new file mode 100644
index 0000000..29e8922
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_4_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    astore 0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.java
new file mode 100644
index 0000000..078beb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_4_w {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.j
new file mode 100644
index 0000000..1d7c782
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_5.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 300
+    
+    ldc "world"
+    astore 255
+    ldc "hi"
+    aload 255
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.java
new file mode 100644
index 0000000..c950130
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_5 {
+
+    public static String run() {
+        return "world";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.j
new file mode 100644
index 0000000..690924f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_5_w.java
+.class public dxc/junit/opcodes/astore/jm/T_astore_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 300
+    
+    ldc "world"
+    astore_w 257
+    ldc "hi"
+    aload 257
+    areturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.java
new file mode 100644
index 0000000..c74bcd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_5_w {
+    
+    public static String run() {
+        return "world";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_6.java
new file mode 100644
index 0000000..6518de1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore/jm/T_astore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore.jm;
+
+public class T_astore_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/Test_astore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/Test_astore_0.java
new file mode 100644
index 0000000..179ae7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/Test_astore_0.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_0.jm.T_astore_0_1;
+import dxc.junit.opcodes.astore_0.jm.T_astore_0_5;
+
+public class Test_astore_0 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_0_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_0.jm.T_astore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_0.jm.T_astore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_0.jm.T_astore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.j
new file mode 100644
index 0000000..50c2732
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_0_1.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 1
+    
+    ldc "hello"
+    astore_0
+    ldc "hi"
+    aload_0
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.java
new file mode 100644
index 0000000..022182d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.j
new file mode 100644
index 0000000..1130fc4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_0_2.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.java
new file mode 100644
index 0000000..10af6e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.j
new file mode 100644
index 0000000..737a6ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_0_3.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    fconst_1
+    astore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.java
new file mode 100644
index 0000000..0e4e1cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.j
new file mode 100644
index 0000000..c8e268b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_0_4.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    lconst_1
+    astore_0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.java
new file mode 100644
index 0000000..4b54fd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.j
new file mode 100644
index 0000000..f7a1082
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_0_5.java
+.class public dxc/junit/opcodes/astore_0/jm/T_astore_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_0
+    aload_0
+    
+    ldc "hello"
+    astore 0
+    aload_0
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.java
new file mode 100644
index 0000000..90f895e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_6.java
new file mode 100644
index 0000000..9b32ca6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_0/jm/T_astore_0_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_0.jm;
+
+public class T_astore_0_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/Test_astore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/Test_astore_1.java
new file mode 100644
index 0000000..48c46b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/Test_astore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_1.jm.T_astore_1_1;
+import dxc.junit.opcodes.astore_1.jm.T_astore_1_5;
+
+public class Test_astore_1 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_1_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_1.jm.T_astore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_1.jm.T_astore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_1.jm.T_astore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.j
new file mode 100644
index 0000000..0e3adb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_1_1.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 2
+    
+    ldc "hello"
+    astore_1
+    ldc "hi"
+    aload_1
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.java
new file mode 100644
index 0000000..6ce3fcc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.j
new file mode 100644
index 0000000..91110d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_1_2.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_1
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.java
new file mode 100644
index 0000000..138f5cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.j
new file mode 100644
index 0000000..2f86fe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_1_3.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fconst_1
+    astore_1
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.java
new file mode 100644
index 0000000..73e0f14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.j
new file mode 100644
index 0000000..6581c7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_1_4.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    lconst_1
+    astore_1
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.java
new file mode 100644
index 0000000..8f831cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.j
new file mode 100644
index 0000000..4189fb3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_1_5.java
+.class public dxc/junit/opcodes/astore_1/jm/T_astore_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    ldc "hello"
+    astore_1
+    aload_1
+
+    ldc "hello"
+    astore 1
+    aload 1
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.java
new file mode 100644
index 0000000..a45382f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_6.java
new file mode 100644
index 0000000..d0e3916
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_1/jm/T_astore_1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_1.jm;
+
+public class T_astore_1_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/Test_astore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/Test_astore_2.java
new file mode 100644
index 0000000..4d05fd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/Test_astore_2.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_2.jm.T_astore_2_1;
+import dxc.junit.opcodes.astore_2.jm.T_astore_2_5;
+
+public class Test_astore_2 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_2_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_2_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_2.jm.T_astore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_2.jm.T_astore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_2.jm.T_astore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.j
new file mode 100644
index 0000000..a974ce1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_2_1.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    
+    ldc "hello"
+    astore_2
+    ldc "hi"
+    aload_2
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.java
new file mode 100644
index 0000000..e581790
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.j
new file mode 100644
index 0000000..750b538
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_2_2.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_2
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.java
new file mode 100644
index 0000000..ee9ffbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.j
new file mode 100644
index 0000000..135abe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_2_3.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    fconst_2
+    astore_2
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.java
new file mode 100644
index 0000000..3c70ad7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.j
new file mode 100644
index 0000000..4708e55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_2_4.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    lconst_1
+    astore_2
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.java
new file mode 100644
index 0000000..46e882d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.j
new file mode 100644
index 0000000..f7edded
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_2_5.java
+.class public dxc/junit/opcodes/astore_2/jm/T_astore_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc "hello"
+    astore_2
+    aload_2
+
+    ldc "hello"
+    astore 2
+    aload_2
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.java
new file mode 100644
index 0000000..1b31c7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_6.java
new file mode 100644
index 0000000..f610892
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_2/jm/T_astore_2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_2.jm;
+
+public class T_astore_2_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/Test_astore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/Test_astore_3.java
new file mode 100644
index 0000000..f8ca21f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/Test_astore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.astore_3.jm.T_astore_3_1;
+import dxc.junit.opcodes.astore_3.jm.T_astore_3_5;
+
+public class Test_astore_3 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals("hello", T_astore_3_1.run());
+    }
+
+    /**
+     * @title equality of astore_<n> and astore <n>
+     */
+    public void testN2() {
+        assertTrue(T_astore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_3.jm.T_astore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_3.jm.T_astore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.astore_3.jm.T_astore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.j
new file mode 100644
index 0000000..12cbc00
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_3_1.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+    
+    ldc "hello"
+    astore_3
+    ldc "hi"
+    aload_3
+    areturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.java
new file mode 100644
index 0000000..5a118f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_1 {
+
+    public static String run() {
+        String a = new String("hello");
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.j
new file mode 100644
index 0000000..a9c6268
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_3_2.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 0
+
+    astore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.java
new file mode 100644
index 0000000..d11fc80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.j
new file mode 100644
index 0000000..52de374
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_3_3.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    fconst_2
+    astore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.java
new file mode 100644
index 0000000..b2aef96
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.j
new file mode 100644
index 0000000..c6623fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_3_4.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    lconst_1
+    astore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.java
new file mode 100644
index 0000000..ae42784
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.j
new file mode 100644
index 0000000..c04ef0b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_astore_3_5.java
+.class public dxc/junit/opcodes/astore_3/jm/T_astore_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    ldc "hello"
+    astore_3
+    aload_3
+
+    ldc "hello"
+    astore 3
+    aload_3
+    
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.java
new file mode 100644
index 0000000..c94d01a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_5 {
+
+    public static boolean run() {
+        String a = new String("hello");
+        return a == a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_6.java
new file mode 100644
index 0000000..3250a5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/astore_3/jm/T_astore_3_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.astore_3.jm;
+
+public class T_astore_3_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/Test_athrow.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/Test_athrow.java
new file mode 100644
index 0000000..c8829e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/Test_athrow.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.athrow.jm.T_athrow_1;
+import dxc.junit.opcodes.athrow.jm.T_athrow_11;
+import dxc.junit.opcodes.athrow.jm.T_athrow_12;
+import dxc.junit.opcodes.athrow.jm.T_athrow_2;
+import dxc.junit.opcodes.athrow.jm.T_athrow_4;
+import dxc.junit.opcodes.athrow.jm.T_athrow_5;
+import dxc.junit.opcodes.athrow.jm.T_athrow_8;
+
+public class Test_athrow extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_athrow_1 t = new T_athrow_1();
+        try {
+            t.run();
+            fail("must throw a RuntimeException");
+        } catch (RuntimeException re) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Throwing of the objectref on the class Throwable
+     */
+    public void testN2() {
+        T_athrow_2 t = new T_athrow_2();
+        try {
+            t.run();
+            fail("must throw a Throwable");
+        } catch (Throwable e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Throwing of the objectref on the subclass of Throwable
+     */
+    public void testN3() {
+        T_athrow_8 t = new T_athrow_8();
+        try {
+            t.run();
+            fail("must throw a Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Nearest matching catch must be executed in case of exception
+     */
+    public void testN4() {
+        T_athrow_12 t = new T_athrow_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  NullPointerException If objectref is null, athrow throws
+     * a NullPointerException instead of objectref
+     */
+    public void testE1() {
+        T_athrow_4 t = new T_athrow_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  IllegalMonitorStateException expected
+     */
+    public void testE2() {
+        T_athrow_5 t = new T_athrow_5();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title IllegalMonitorStateException if structural lock rule violated -
+     */
+    public void testE3() {
+        T_athrow_11 t = new T_athrow_11();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        } catch (NullPointerException npe) {
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail ("expected IllegalMonitorStateException, but got NPE");
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - String
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.19 
+     * @title Throwing of the objectref on the class which is not
+     *          the class Throwable or a subclass of Throwable.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.athrow.jm.T_athrow_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.j
new file mode 100644
index 0000000..6c0c1a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_1.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/RuntimeException
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.java
new file mode 100644
index 0000000..657ed24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_1 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.j
new file mode 100644
index 0000000..96562a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_10.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new    java/lang/String
+    dup
+    invokespecial java/lang/String/<init>()V
+    athrow
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.java
new file mode 100644
index 0000000..e9aceca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_10 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.j
new file mode 100644
index 0000000..37429eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.j
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_11.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private test()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    new java/lang/NullPointerException
+    dup
+    invokespecial java/lang/NullPointerException/<init>()V
+
+    athrow
+
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/athrow/jm/T_athrow_11/test()V
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.java
new file mode 100644
index 0000000..43a0f0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_11.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_11 {
+
+    private void test() {
+        throw new NullPointerException();
+    }
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.j
new file mode 100644
index 0000000..fc0ba94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_12.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+
+Label0:
+    new java/lang/RuntimeException
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+Label5:
+    astore_1
+Label2:
+    iconst_1
+    ireturn
+
+Label3:
+    astore_1
+    iconst_0
+    ireturn
+
+.catch java/lang/RuntimeException from Label0 to Label5 using Label5
+.catch java/lang/RuntimeException from Label0 to Label2 using Label3
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.java
new file mode 100644
index 0000000..b7aca69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_12.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_12 {
+
+    public boolean run() {
+        try{
+            try {
+                throw new RuntimeException();
+            }catch(RuntimeException e1) {
+                return true;
+            }
+        } catch(RuntimeException e2) {
+        }
+        return false;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.j
new file mode 100644
index 0000000..7df7277
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_2.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .throws java/lang/Throwable
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Throwable
+    dup
+    invokespecial java/lang/Throwable/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.java
new file mode 100644
index 0000000..13be1ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_2 {
+
+    public void run() throws Throwable {
+        throw new Throwable();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.cfh
new file mode 100644
index 0000000..d95df9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/athrow/jm/T_athrow_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 07 
+    // parsed:, offset 15, len 5, h: 0002: method{java.lang.RuntimeException.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 20, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 39, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 67, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 72, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 79, len 18, h: 0009: utf8{"T_athrow_3.java"}
+    // .  .  .  T  _  a  t  h  r  o  w  _  3  .  j  a  v  a  
+       01 00 0f 54 5f 61 74 68 72 6f 77 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 97, len 41, h: 000a: utf8{"dxc/junit/opcodes/athrow/jm/T_athrow_3"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  a  t  h  r  o  w  /  j  m  /  T  _  a  t  h  r  o  w  _  3  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 61 74 68 72 6f 77 2f 6a 6d 2f 54 5f 61 74 68 72 6f 77 5f 33 
+    // parsed:, offset 138, len 29, h: 000b: utf8{"java/lang/RuntimeException"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  R  u  n  t  i  m  e  E  x  c  e  p  t  i  o  n  
+       01 00 1a 6a 61 76 61 2f 6c 61 6e 67 2f 52 75 6e 74 69 6d 65 45 78 63 65 70 74 69 6f 6e 
+    // parsed:, offset 167, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 173, len 3, h: 000d: type{java.lang.RuntimeException}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 176, len 3, h: 000e: type{dxc.junit.opcodes.athrow.jm.T_athrow_3}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 179, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 182, len 0, h: end constant_pool
+// parsed:, offset 182, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 184, len 2, h: this_class: type{dxc.junit.opcodes.athrow.jm.T_athrow_3}
+// .  .  
+   00 0e 
+// parsed:, offset 186, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 188, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 190, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 192, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 194, len:75,desc: ()V
+// parsed:, offset 194, len 0, h:  methods[0]: 
+    // parsed:, offset 194, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 196, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 198, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 200, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 202, len 0, h:  attributes[0]: 
+        // parsed:, offset 202, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 204, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 208, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 210, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 212, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 221, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 223, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 225, len 0, h: end attributes[0] 
+// parsed:, offset 225, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 225, len:44,desc: ()V
+// parsed:, offset 225, len 0, h:  methods[1]: 
+    // parsed:, offset 225, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 227, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 229, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 231, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 233, len 0, h:  attributes[0]: 
+        // parsed:, offset 233, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 235, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 239, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 241, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 243, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: new type{java.lang.RuntimeException}
+        // .  .  .  
+//@mod           bb 00 0d 
+           bb 01 0d           
+        // parsed:, offset 3, len 1, h: 0003: dup
+        // Y  
+           59 
+        // parsed:, offset 4, len 3, h: 0004: invokespecial method{java.lang.RuntimeException.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 7, len 1, h: 0007: athrow
+        // .  
+           bf 
+        // parsed:, offset 255, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 257, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 259, len 0, h: end attributes[0] 
+// parsed:, offset 259, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 259, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 261, len 0, h:  attributes[0]: 
+    // parsed:, offset 261, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 263, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 267, len 2, h: source: utf8{"T_athrow_3.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 269, len 0, h: end attributes[0] 
+// parsed:, offset 269, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.j
new file mode 100644
index 0000000..c4ea4ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_3.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/RuntimeException
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.java
new file mode 100644
index 0000000..8d985e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_3 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.j
new file mode 100644
index 0000000..9f74fd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_4.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aconst_null
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.java
new file mode 100644
index 0000000..a50d5cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_4 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.j
new file mode 100644
index 0000000..887180b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_5.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public synchronized run()V
+    .limit stack 2
+    .limit locals 1
+    
+    aload_0
+    monitorexit
+    
+    new java/lang/NullPointerException
+    dup
+    invokespecial java/lang/NullPointerException/<init>()V
+
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.java
new file mode 100644
index 0000000..3296cda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_5 {
+
+    public synchronized void run() {
+            throw new NullPointerException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.j
new file mode 100644
index 0000000..754f150
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_6.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.java
new file mode 100644
index 0000000..0ec671c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_6 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.j
new file mode 100644
index 0000000..7ef0094
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_7.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    fconst_0
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.java
new file mode 100644
index 0000000..8b4146c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_7 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.j
new file mode 100644
index 0000000..6a3a04a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_8.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .throws java/lang/Error
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Error
+    dup
+    invokespecial java/lang/Error/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.java
new file mode 100644
index 0000000..0ee1856
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_8 {
+
+    public void run() throws Error {
+        throw new Error();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.j b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.j
new file mode 100644
index 0000000..6bcef31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_athrow_9.java
+.class public dxc/junit/opcodes/athrow/jm/T_athrow_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/RuntimeException/<init>()V
+    athrow
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.java b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.java
new file mode 100644
index 0000000..9dea3b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/athrow/jm/T_athrow_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.athrow.jm;
+
+public class T_athrow_9 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/Test_baload.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/Test_baload.java
new file mode 100644
index 0000000..8cd4511
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/Test_baload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.baload.jm.T_baload_1;
+
+public class Test_baload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        arr[1] = 100;
+        assertEquals(100, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        arr[0] = 100;
+        assertEquals(100, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_baload_1 t = new T_baload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_baload_1 t = new T_baload_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, short
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], short
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.baload.jm.T_baload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.j
new file mode 100644
index 0000000..1d028c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_1.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.java
new file mode 100644
index 0000000..bfb95ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_1 {
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.j
new file mode 100644
index 0000000..d21f2e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_2.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.java
new file mode 100644
index 0000000..74f6686
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_2 {
+
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.j
new file mode 100644
index 0000000..7f20dfb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_3.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.java
new file mode 100644
index 0000000..f9ffedd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_3 {
+
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.j
new file mode 100644
index 0000000..26e2c63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_4.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BD)B
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.java
new file mode 100644
index 0000000..17b9452
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_4 {
+
+    public byte run(byte[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.j
new file mode 100644
index 0000000..821f3d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_5.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BJ)B
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    baload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.java
new file mode 100644
index 0000000..0e033dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_5 {
+
+    public byte run(byte[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.j
new file mode 100644
index 0000000..b02bf0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_6.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[BI)B
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    baload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.java
new file mode 100644
index 0000000..819ec21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_6 {
+
+    public byte run(Object a, byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.j
new file mode 100644
index 0000000..32607e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_7.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[BI)B
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    baload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.java
new file mode 100644
index 0000000..af1d1af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_7 {
+
+    public byte run(double[] a, byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.j
new file mode 100644
index 0000000..b7dd523
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_8.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([I[BI)B
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    baload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.java
new file mode 100644
index 0000000..eeb6197
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_8 {
+
+    public byte run(int[] a, byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.j
new file mode 100644
index 0000000..f47a328
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_baload_9.java
+.class public dxc/junit/opcodes/baload/jm/T_baload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BI)B
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    baload
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.java
new file mode 100644
index 0000000..9471c7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/baload/jm/T_baload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.baload.jm;
+
+public class T_baload_9 {
+    
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/Test_bastore.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/Test_bastore.java
new file mode 100644
index 0000000..e183f0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/Test_bastore.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.bastore.jm.T_bastore_1;
+
+public class Test_bastore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 1, (byte) 100);
+        assertEquals(100, arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 0, (byte) 100);
+        assertEquals(100, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_bastore_1 t = new T_bastore_1();
+        try {
+            t.run(null, 2, (byte) 100);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_bastore_1 t = new T_bastore_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int,
+     * short
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * short
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int,
+     * short
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * short
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.bastore.jm.T_bastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.j
new file mode 100644
index 0000000..49c11df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_1.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.java
new file mode 100644
index 0000000..82c22a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_1 {
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.j
new file mode 100644
index 0000000..d67c623
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_2.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.java
new file mode 100644
index 0000000..a34acf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_2 {
+
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.j
new file mode 100644
index 0000000..68920fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_3.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.java
new file mode 100644
index 0000000..533b440
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_3 {
+
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.j
new file mode 100644
index 0000000..a4f8aaa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_4.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BDI)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.java
new file mode 100644
index 0000000..6dbb401
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_4 {
+
+    public void run(byte[] arr, double idx, byte value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.j
new file mode 100644
index 0000000..49c1303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_5.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([BIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload 3
+;   l2i
+;    i2s    
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.java
new file mode 100644
index 0000000..af3fe81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_5 {
+
+    public void run(byte[] arr, int idx, long value) {
+        arr[idx] = (byte)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.j
new file mode 100644
index 0000000..e6ce2e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_6.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.java
new file mode 100644
index 0000000..4db5a94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_6 {
+
+    public void run(Object a, byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.j
new file mode 100644
index 0000000..4470df9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_7.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[BIB)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.java
new file mode 100644
index 0000000..d97dd1d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_7 {
+
+    public void run(double a[], byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.j
new file mode 100644
index 0000000..54feab5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_8.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[BIB)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    bastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.java
new file mode 100644
index 0000000..77b58c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_8 {
+
+    public void run(long a[], byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.j
new file mode 100644
index 0000000..f2f3ec3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bastore_9.java
+.class public dxc/junit/opcodes/bastore/jm/T_bastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([BIB)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    bastore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.java
new file mode 100644
index 0000000..9b62a2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bastore/jm/T_bastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bastore.jm;
+
+public class T_bastore_9 {
+    
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/Test_bipush.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/Test_bipush.java
new file mode 100644
index 0000000..2eb5bce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/Test_bipush.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bipush;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.bipush.jm.T_bipush_1;
+import dxc.junit.opcodes.bipush.jm.T_bipush_2;
+import dxc.junit.opcodes.bipush.jm.T_bipush_3;
+
+public class Test_bipush extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_bipush_1 t = new T_bipush_1();
+        assertEquals(100, t.run());
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testB1() {
+        T_bipush_2 t = new T_bipush_2();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testB2() {
+        T_bipush_3 t = new T_bipush_3();
+        assertEquals(-1, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.bipush.jm.T_bipush_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.j
new file mode 100644
index 0000000..40d0a80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bipush_1.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()B
+    bipush 100
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.java
new file mode 100644
index 0000000..5c2667d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_1 {
+
+    public byte run() {
+        return (byte)100;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.j
new file mode 100644
index 0000000..17b6e3a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bipush_2.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()B
+    .limit stack 1
+    .limit locals 1
+
+    bipush 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.java
new file mode 100644
index 0000000..9b04e4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_2 {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.j
new file mode 100644
index 0000000..7e93411
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bipush_3.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()B
+    .limit stack 1
+    .limit locals 1
+
+    bipush -1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.java
new file mode 100644
index 0000000..0fad6c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_3 {
+
+    public byte run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.j b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.j
new file mode 100644
index 0000000..0d9b7d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_bipush_4.java
+.class public dxc/junit/opcodes/bipush/jm/T_bipush_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()B
+    .limit stack 1
+;    .limit locals 1
+
+    bipush 1
+    bipush 1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.java b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.java
new file mode 100644
index 0000000..4740577
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/bipush/jm/T_bipush_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.bipush.jm;
+
+public class T_bipush_4 {
+
+    public byte run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/Test_caload.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/Test_caload.java
new file mode 100644
index 0000000..3db3080
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/Test_caload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.caload.jm.T_caload_1;
+
+public class Test_caload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        arr[1] = 'g';
+        assertEquals('g', t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        arr[0] = 'g';
+        assertEquals('g', t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_caload_1 t = new T_caload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_caload_1 t = new T_caload_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, char
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], char
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.caload.jm.T_caload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.j
new file mode 100644
index 0000000..3d541a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_1.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.java
new file mode 100644
index 0000000..beb189c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_1 {
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.j
new file mode 100644
index 0000000..9df1729
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_2.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.java
new file mode 100644
index 0000000..fffa0bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_2 {
+
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.j
new file mode 100644
index 0000000..28233b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_3.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.java
new file mode 100644
index 0000000..4d12ec7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_3 {
+
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.j
new file mode 100644
index 0000000..8d67495
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_4.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CD)C
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.java
new file mode 100644
index 0000000..2e9c3e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_4 {
+
+    public char run(char[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.j
new file mode 100644
index 0000000..9a3eb23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_5.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CJ)C
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    caload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.java
new file mode 100644
index 0000000..2fde894
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_5 {
+
+    public char run(char[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.j
new file mode 100644
index 0000000..549c5fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_6.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[CI)C
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    caload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.java
new file mode 100644
index 0000000..c4b5fb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_6 {
+
+    public char run(Object a, char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.j
new file mode 100644
index 0000000..9c7513a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_7.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[CI)C
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    caload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.java
new file mode 100644
index 0000000..0b93a7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_7 {
+
+    public char run(double[] a, char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.j
new file mode 100644
index 0000000..34f05f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_8.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([I[CI)C
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    caload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.java
new file mode 100644
index 0000000..41c435d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_8 {
+
+    public char run(int[] a, char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.j
new file mode 100644
index 0000000..d0489ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_caload_9.java
+.class public dxc/junit/opcodes/caload/jm/T_caload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CI)C
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    caload
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.java
new file mode 100644
index 0000000..c5c29e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/caload/jm/T_caload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.caload.jm;
+
+public class T_caload_9 {
+    
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/Test_castore.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/Test_castore.java
new file mode 100644
index 0000000..c427cd6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/Test_castore.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.castore.jm.T_castore_1;
+
+public class Test_castore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        t.run(arr, 1, 'g');
+        assertEquals('g', arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        t.run(arr, 0, 'g');
+        assertEquals('g', arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_castore_1 t = new T_castore_1();
+        try {
+            t.run(null, 2, 'g');
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_castore_1 t = new T_castore_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, char
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * char
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, char
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * char
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.castore.jm.T_castore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.j
new file mode 100644
index 0000000..5936fc5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_1.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.java
new file mode 100644
index 0000000..011ac3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_1 {
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.j
new file mode 100644
index 0000000..6589661
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_2.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.java
new file mode 100644
index 0000000..b04e352
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_2 {
+
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.j
new file mode 100644
index 0000000..2253cc7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_3.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.java
new file mode 100644
index 0000000..55be405
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_3 {
+
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.j
new file mode 100644
index 0000000..11c390f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_4.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CDC)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.java
new file mode 100644
index 0000000..3666fa1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_4 {
+
+    public void run(char[] arr, double idx, char value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.j
new file mode 100644
index 0000000..3cfa149
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_5.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([CIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload 3
+;   l2i
+;    i2s    
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.java
new file mode 100644
index 0000000..1d43a3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_5 {
+
+    public void run(char[] arr, int idx, long value) {
+        arr[idx] = (char)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.j
new file mode 100644
index 0000000..f5caba3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_6.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.java
new file mode 100644
index 0000000..57ad883
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_6 {
+
+    public void run(Object a, char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.j
new file mode 100644
index 0000000..81a790e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_7.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[CIC)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.java
new file mode 100644
index 0000000..62418ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_7 {
+
+    public void run(double a[], char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.j
new file mode 100644
index 0000000..8e33f1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_8.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[CIC)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    castore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.java
new file mode 100644
index 0000000..d5bfaba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_8 {
+
+    public void run(long a[], char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.j
new file mode 100644
index 0000000..955dc0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_castore_9.java
+.class public dxc/junit/opcodes/castore/jm/T_castore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([CIC)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    castore
+
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.java
new file mode 100644
index 0000000..097fcfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/castore/jm/T_castore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.castore.jm;
+
+public class T_castore_9 {
+    
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/Test_checkcast.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/Test_checkcast.java
new file mode 100644
index 0000000..a6f2350
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/Test_checkcast.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_1;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_2;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_3;
+import dxc.junit.opcodes.checkcast.jm.T_checkcast_7;
+
+public class Test_checkcast extends DxTestCase {
+    
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_checkcast_1 t = new T_checkcast_1();
+        String s = "";
+        assertEquals(s, t.run(s));
+    }
+
+    /**
+     * @title check null value
+     */
+    public void testN2() {
+        T_checkcast_1 t = new T_checkcast_1();
+        assertNull(t.run(null));
+    }
+
+    /**
+     * @title normal class
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.checkcast.jm.SubClass
+        // @uses dxc.junit.opcodes.checkcast.jm.SuperClass
+        // @uses dxc.junit.opcodes.checkcast.jm.SuperInterface
+        // @uses dxc.junit.opcodes.checkcast.jm.SuperInterface2
+        
+        T_checkcast_2 t = new T_checkcast_2();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected ClassCastException
+     */
+    public void testE1() {
+        T_checkcast_1 t = new T_checkcast_1();
+        try {
+            t.run(this);
+            fail("expected ClassCastException");
+        } catch (ClassCastException iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ClassCastException. checkcast [[[Ldxc/junit/opcodes/checkcast/jm/TestStubs$TestStub;
+     * dalvikvm throws ClassCastException as demanded by checkcast, but
+     * does not claim a IllegalAccessError to a private class - ok, 
+     * since checkcast does what the spec says it should do.
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.checkcast.jm.TestStubs$TestStub
+        try {
+            T_checkcast_3 t = new T_checkcast_3();
+            t.run();
+            fail("expected ClassCastException");
+        } catch (ClassCastException cce) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_checkcast_7 t = new T_checkcast_7();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError iae) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm; early resolution
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.checkcast.jm.T_checkcast_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.j
new file mode 100644
index 0000000..2efe0d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_1.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.java
new file mode 100644
index 0000000..c416457
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_1 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.j
new file mode 100644
index 0000000..01d2e59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.j
@@ -0,0 +1,139 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_2.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 20
+    .limit locals 2
+    
+    iconst_0
+    istore_1
+    
+; (SubClass instanceof SuperClass)    
+    new        dxc/junit/opcodes/checkcast/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SubClass.<init>()V
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperClass
+    pop
+    
+; (SubClass[] instanceof SuperClass[])    
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+    checkcast [Ldxc/junit/opcodes/checkcast/jm/SuperClass;
+    pop    
+    
+; (SubClass[] instanceof Object)    
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+    checkcast java/lang/Object
+    pop
+    
+; (SubClass instanceof SuperInterface)    
+    new dxc/junit/opcodes/checkcast/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SubClass.<init>()V    
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperInterface
+    pop
+        
+
+; !(SuperClass instanceof SubClass)    
+Label1:
+    new dxc/junit/opcodes/checkcast/jm/SuperClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SuperClass.<init>()V
+Label10:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SubClass
+    pop
+Label11:    
+    goto Label2
+Label12:
+    pop
+    iinc 1 1
+    goto Label2
+        
+; !(SubClass instanceof SuperInterface2)    
+Label2:
+    new dxc/junit/opcodes/checkcast/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/checkcast/jm/SubClass.<init>()V    
+Label20:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperInterface2
+    pop
+Label21:    
+    goto Label3
+Label22:
+    pop
+    iinc 1 1
+    goto Label3
+
+; !(SubClass[] instanceof SuperInterface)    
+Label3:
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+Label30:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SuperInterface
+    pop
+Label31:    
+    goto Label4
+Label32:    
+    pop
+    iinc 1 1
+    goto Label4
+
+; !(SubClass[] instanceof SubClass)    
+Label4:
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SubClass
+Label40:    
+    checkcast dxc/junit/opcodes/checkcast/jm/SubClass
+    pop
+Label41:    
+    goto Label5
+Label42:
+    pop
+    iinc 1 1
+    goto Label5    
+    
+; !(SuperClass[] instanceof SubClass[])    
+Label5:
+    iconst_1
+    anewarray dxc/junit/opcodes/checkcast/jm/SuperClass
+Label50:    
+    checkcast [Ldxc/junit/opcodes/checkcast/jm/SubClass;
+    pop
+Label51:    
+    goto Label6
+Label52:
+    pop
+    iinc 1 1
+    
+Label6:        
+    iload_1
+    ireturn
+    
+.catch java/lang/ClassCastException from Label10 to Label11 using Label12
+.catch java/lang/ClassCastException from Label20 to Label21 using Label22
+.catch java/lang/ClassCastException from Label30 to Label31 using Label32
+.catch java/lang/ClassCastException from Label40 to Label41 using Label42
+.catch java/lang/ClassCastException from Label50 to Label51 using Label52
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.java
new file mode 100644
index 0000000..08b8ec8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.j
new file mode 100644
index 0000000..84ec459
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_3.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    checkcast [[[Ldxc/junit/opcodes/checkcast/jm/TestStubs$TestStub;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.java
new file mode 100644
index 0000000..c9c5652
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.cfh
new file mode 100644
index 0000000..27a40ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/checkcast/jm/T_checkcast_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 19, h: 0004: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 66, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 75, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 81, len 47, h: 0007: utf8{"dxc/junit/opcodes/checkcast/jm/T_checkcast_4"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  c  h  e  c  k  c  a  s  t  /  j  m  /  T  _  c  h  e  c  k  c  a  s  t  _  4  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 63 68 65 63 6b 63 61 73 74 2f 6a 6d 2f 54 5f 63 68 65 63 6b 63 61 73 74 5f 34 
+    // parsed:, offset 128, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 133, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 140, len 21, h: 000a: utf8{"T_checkcast_4.java"}
+    // .  .  .  T  _  c  h  e  c  k  c  a  s  t  _  4  .  j  a  v  a  
+       01 00 12 54 5f 63 68 65 63 6b 63 61 73 74 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 161, len 3, h: 000b: type{java.lang.String}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 164, len 41, h: 000c: utf8{"(Ljava/lang/Object;)Ljava/lang/String;"}
+    // .  .  &  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 26 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 205, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 211, len 3, h: 000e: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_4}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 214, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 217, len 0, h: end constant_pool
+// parsed:, offset 217, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 219, len 2, h: this_class: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_4}
+// .  .  
+   00 0e 
+// parsed:, offset 221, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 223, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 227, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 229, len:72,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[0]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 239, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 243, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 260, len:41,desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 260, len 0, h:  methods[1]: 
+    // parsed:, offset 260, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 262, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 264, len 2, h: descriptor: (Ljava/lang/Object;)Ljava/lang/String;
+    // .  .  
+       00 0c 
+    // parsed:, offset 266, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 268, len 0, h:  attributes[0]: 
+        // parsed:, offset 268, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 270, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 274, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 276, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 278, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: checkcast type{java.lang.String}
+        // .  .  .  
+//@mod           c0 00 0b 
+           c0 01 0b 
+        // parsed:, offset 4, len 1, h: 0004: areturn
+        // .  
+           b0 
+        // parsed:, offset 287, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 289, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 291, len 0, h: end attributes[0] 
+// parsed:, offset 291, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 291, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 293, len 0, h:  attributes[0]: 
+    // parsed:, offset 293, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 295, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 299, len 2, h: source: utf8{"T_checkcast_4.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 301, len 0, h: end attributes[0] 
+// parsed:, offset 301, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.j
new file mode 100644
index 0000000..9066302
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_4.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.java
new file mode 100644
index 0000000..e5d5fbc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_4 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.j
new file mode 100644
index 0000000..b4e645b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_5.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    fconst_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.java
new file mode 100644
index 0000000..afb4ba2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_5 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.j
new file mode 100644
index 0000000..7ae206c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_6.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+;    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.java
new file mode 100644
index 0000000..6389d85
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_6 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.j
new file mode 100644
index 0000000..b3ad568
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_7.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    checkcast [[[Ldxc/junit/opcodes/checkcast/jm/foobar1;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.java
new file mode 100644
index 0000000..98167f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.cfh
new file mode 100644
index 0000000..fa33a5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/checkcast/jm/T_checkcast_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{java.lang.String}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 37, len 47, h: 0004: utf8{"dxc/junit/opcodes/checkcast/jm/T_checkcast_8"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  c  h  e  c  k  c  a  s  t  /  j  m  /  T  _  c  h  e  c  k  c  a  s  t  _  8  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 63 68 65 63 6b 63 61 73 74 2f 6a 6d 2f 54 5f 63 68 65 63 6b 63 61 73 74 5f 38 
+    // parsed:, offset 84, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 97, len 5, h: 0006: int{0x0000007b / 123}
+    // .  .  .  .  {  
+       03 00 00 00 7b 
+    // parsed:, offset 102, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 117, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0e 
+    // parsed:, offset 122, len 21, h: 000a: utf8{"T_checkcast_8.java"}
+    // .  .  .  T  _  c  h  e  c  k  c  a  s  t  _  8  .  j  a  v  a  
+       01 00 12 54 5f 63 68 65 63 6b 63 61 73 74 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 143, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 150, len 19, h: 000c: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 169, len 41, h: 000d: utf8{"(Ljava/lang/Object;)Ljava/lang/String;"}
+    // .  .  &  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 26 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 210, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 216, len 3, h: 000f: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_8}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 219, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 222, len 0, h: end constant_pool
+// parsed:, offset 222, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 224, len 2, h: this_class: type{dxc.junit.opcodes.checkcast.jm.T_checkcast_8}
+// .  .  
+   00 0f 
+// parsed:, offset 226, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 228, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 230, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 232, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 234, len:75,desc: ()V
+// parsed:, offset 234, len 0, h:  methods[0]: 
+    // parsed:, offset 234, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 236, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 238, len 2, h: descriptor: ()V
+    // .  .  
+       00 0e 
+    // parsed:, offset 240, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 242, len 0, h:  attributes[0]: 
+        // parsed:, offset 242, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 244, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 248, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 252, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 261, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 263, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 265, len 0, h: end attributes[0] 
+// parsed:, offset 265, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 265, len:44,desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 265, len 0, h:  methods[1]: 
+    // parsed:, offset 265, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 267, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 269, len 2, h: descriptor: (Ljava/lang/Object;)Ljava/lang/String;
+    // .  .  
+       00 0d 
+    // parsed:, offset 271, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 273, len 0, h:  attributes[0]: 
+        // parsed:, offset 273, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 275, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 279, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 281, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 283, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+0000007b
+        // .  .  
+           12 06 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 4, len 3, h: 0004: checkcast type{java.lang.String}
+        // .  .  .  
+//@mod           c0 00 03 
+           c0 00 06 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 295, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 297, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 299, len 0, h: end attributes[0] 
+// parsed:, offset 299, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Ljava/lang/String;
+// parsed:, offset 299, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 301, len 0, h:  attributes[0]: 
+    // parsed:, offset 301, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 303, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 307, len 2, h: source: utf8{"T_checkcast_8.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 309, len 0, h: end attributes[0] 
+// parsed:, offset 309, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.j b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.j
new file mode 100644
index 0000000..bf537de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_checkcast_8.java
+.class public dxc/junit/opcodes/checkcast/jm/T_checkcast_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+    .limit stack 1
+    .limit locals 2
+    
+    ldc 123
+    pop
+    
+    aload_1
+    checkcast java/lang/String
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.java
new file mode 100644
index 0000000..cce0c88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/T_checkcast_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+public class T_checkcast_8 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/TestStubs.java
new file mode 100644
index 0000000..97476a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/checkcast/jm/TestStubs.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.checkcast.jm;
+
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // testE2
+    }
+}
+
+interface SuperInterface{
+    
+}
+
+interface SuperInterface2{
+    
+}
+
+class SuperClass implements SuperInterface{
+    
+}
+
+class SubClass extends SuperClass{
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/Test_d2f.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/Test_d2f.java
new file mode 100644
index 0000000..3571b8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/Test_d2f.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2f;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.d2f.jm.T_d2f_1;
+
+public class Test_d2f extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.71
+     */
+    public void testN1() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(2.71f, t.run(2.71d));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(1f, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(-1f, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(0f, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB3() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(-0f, t.run(-0d));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_d2f_1 t = new T_d2f_1();
+        assertTrue(Float.isNaN(t.run(Double.NaN)));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_d2f_1 t = new T_d2f_1();
+        assertTrue(Float.isInfinite(t.run(Double.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_d2f_1 t = new T_d2f_1();
+        assertTrue(Float.isInfinite(t.run(Double.NEGATIVE_INFINITY)));
+    }
+
+
+    /**
+     * @title  Argument = -Double.MIN_VALUE
+     */
+    public void testB7() {
+        T_d2f_1 t = new T_d2f_1();
+        assertEquals(-0f, t.run(-4.9E-324d));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2f.jm.T_d2f_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.j
new file mode 100644
index 0000000..461f86a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2f_1.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)F
+    .limit stack 3
+    .limit locals 3
+    dload_1
+    d2f
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.java
new file mode 100644
index 0000000..e63f2c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_1 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.j
new file mode 100644
index 0000000..a65c7ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2f_2.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)F
+    .limit stack 3
+    .limit locals 3
+
+;    dload_1
+    d2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.java
new file mode 100644
index 0000000..5dca9a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_2 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.j
new file mode 100644
index 0000000..4c02168
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2f_3.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)F
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    d2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.java
new file mode 100644
index 0000000..6be1325
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_3 {
+
+    public float run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.j
new file mode 100644
index 0000000..dc79276
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2f_4.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    d2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.java
new file mode 100644
index 0000000..240dfea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_4 {
+
+    public float run(long a) {
+        return (float) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.j b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.j
new file mode 100644
index 0000000..c743637
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2f_5.java
+.class public dxc/junit/opcodes/d2f/jm/T_d2f_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    d2f
+    freturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.java b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.java
new file mode 100644
index 0000000..b9a986b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2f/jm/T_d2f_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2f.jm;
+
+public class T_d2f_5 {
+    
+    public float run(double a) {
+        return (float)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/Test_d2i.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/Test_d2i.java
new file mode 100644
index 0000000..a316201
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/Test_d2i.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2i;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.d2i.jm.T_d2i_1;
+
+public class Test_d2i extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.9999999d
+     */
+    public void testN1() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(2, t.run(2.9999999d));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(1, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(-1, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB1() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(0, t.run(-0d));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB2() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(0, t.run(Double.NaN));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_d2i_1 t = new T_d2i_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2i.jm.T_d2i_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.j
new file mode 100644
index 0000000..d14f823
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2i_1.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)I
+    .limit stack 3
+    .limit locals 3
+    dload_1
+    d2i
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.java
new file mode 100644
index 0000000..5d55cac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_1 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.j
new file mode 100644
index 0000000..f0bd798
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2i_2.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)I
+    .limit stack 3
+    .limit locals 3
+
+;    dload_1
+    d2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.java
new file mode 100644
index 0000000..6228cc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_2 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.j
new file mode 100644
index 0000000..d9be73a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2i_3.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 3
+ 
+    fload_1
+ ;   d2f
+     d2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.java
new file mode 100644
index 0000000..a83ae18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_3 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.j
new file mode 100644
index 0000000..beb0d2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2i_4.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+
+    ;l2f
+    d2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.java
new file mode 100644
index 0000000..78aba37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_4 {
+
+    public int run(long a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.j b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.j
new file mode 100644
index 0000000..9816ceb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2i_5.java
+.class public dxc/junit/opcodes/d2i/jm/T_d2i_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    d2i
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.java b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.java
new file mode 100644
index 0000000..cf5b3ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2i/jm/T_d2i_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2i.jm;
+
+public class T_d2i_5 {
+    
+    public int run(double a) {
+        return (int)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/Test_d2l.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/Test_d2l.java
new file mode 100644
index 0000000..d1bbd05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/Test_d2l.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2l;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.d2l.jm.T_d2l_1;
+
+public class Test_d2l extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.9999999
+     */
+    public void testN1() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(2l, t.run(2.9999999d));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(1l, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(-1l, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB3() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(0l, t.run(-0));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(0l, t.run(Double.NaN));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_d2l_1 t = new T_d2l_1();
+        assertEquals(Long.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.d2l.jm.T_d2l_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.j
new file mode 100644
index 0000000..10de4b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2l_1.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)J
+    .limit stack 3
+    .limit locals 3
+    dload_1
+    d2l
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.java
new file mode 100644
index 0000000..b40863a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_1 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.j
new file mode 100644
index 0000000..37831f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2l_2.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)J
+    .limit stack 3
+    .limit locals 3
+
+;    dload_1
+    d2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.java
new file mode 100644
index 0000000..9985d3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_2 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.j
new file mode 100644
index 0000000..0476a8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2l_3.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    d2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.java
new file mode 100644
index 0000000..96d73bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_3 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.j
new file mode 100644
index 0000000..c0551c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2l_4.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)J
+    .limit stack 3
+    .limit locals 3
+
+    lload_1
+;    l2d
+    d2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.java
new file mode 100644
index 0000000..0bb55a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_4 {
+
+    public long run(long a) {
+        return (long)(double)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.j b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.j
new file mode 100644
index 0000000..262b187
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_d2l_5.java
+.class public dxc/junit/opcodes/d2l/jm/T_d2l_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    d2l
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.java b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.java
new file mode 100644
index 0000000..049e587
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/d2l/jm/T_d2l_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.d2l.jm;
+
+public class T_d2l_5 {
+    
+    public long run(double a) {
+        return (long)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/Test_dadd.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/Test_dadd.java
new file mode 100644
index 0000000..891f6ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/Test_dadd.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dadd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dadd.jm.T_dadd_1;
+
+public class Test_dadd extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB5() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_dadd_1 t = new T_dadd_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dadd.jm.T_dadd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.j
new file mode 100644
index 0000000..34c23af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dadd_1.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    dadd
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.java
new file mode 100644
index 0000000..5edfe5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.j
new file mode 100644
index 0000000..bcfa2a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dadd_2.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3    
+    dadd
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.java
new file mode 100644
index 0000000..bc97e0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_2 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.j
new file mode 100644
index 0000000..1318e2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dadd_3.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    dadd
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.java
new file mode 100644
index 0000000..640d826
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_3 {
+
+    public double run(double a, double b) {
+        return a+(double)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.j
new file mode 100644
index 0000000..da1c93f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dadd_4.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    dadd
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.java
new file mode 100644
index 0000000..8e0f36d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_4 {
+
+    public double run(double a, double b) {
+        return (double)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.j
new file mode 100644
index 0000000..dfea131
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dadd_5.java
+.class public dxc/junit/opcodes/dadd/jm/T_dadd_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dadd
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.java
new file mode 100644
index 0000000..fadd2ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dadd/jm/T_dadd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dadd.jm;
+
+public class T_dadd_5 {
+    
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/Test_daload.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/Test_daload.java
new file mode 100644
index 0000000..9fd9893
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/Test_daload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.daload.jm.T_daload_1;
+
+public class Test_daload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        arr[1] = 3.1415d;
+        assertEquals(3.1415d, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        arr[0] = 3.1415d;
+        assertEquals(3.1415d, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_daload_1 t = new T_daload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_daload_1 t = new T_daload_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.daload.jm.T_daload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.j
new file mode 100644
index 0000000..51f291f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_1.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.java
new file mode 100644
index 0000000..652138a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_1 {
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.j
new file mode 100644
index 0000000..21d2c6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_2.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.java
new file mode 100644
index 0000000..666682d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_2 {
+
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.j
new file mode 100644
index 0000000..5a695a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_3.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.java
new file mode 100644
index 0000000..2f8da59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_3 {
+
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.j
new file mode 100644
index 0000000..d7bd17e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_4.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DD)D
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.java
new file mode 100644
index 0000000..9572731
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_4 {
+
+    public double run(double[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.j
new file mode 100644
index 0000000..f2025aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_5.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DJ)D
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2f
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.java
new file mode 100644
index 0000000..5dd8ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_5 {
+
+    public double run(double[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.j
new file mode 100644
index 0000000..52caafd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_6.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[DI)D
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    daload
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.java
new file mode 100644
index 0000000..3632e5b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_6 {
+
+    public double run(Object a, double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.j
new file mode 100644
index 0000000..694971e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_7.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[FI)D
+    .limit stack 2
+    .limit locals 4
+    aload_2
+    iload_3
+    daload
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.java
new file mode 100644
index 0000000..eac7cd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_7 {
+
+    public double run(double[] a, double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.j
new file mode 100644
index 0000000..ef9a1a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_8.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([J[DI)D
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    daload
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.java
new file mode 100644
index 0000000..994a158
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_8 {
+
+    public double run(long[] a, double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.j
new file mode 100644
index 0000000..fa0ef03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_daload_9.java
+.class public dxc/junit/opcodes/daload/jm/T_daload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DI)D
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    daload
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.java
new file mode 100644
index 0000000..440e7a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/daload/jm/T_daload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.daload.jm;
+
+public class T_daload_9 {
+    
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/Test_dastore.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/Test_dastore.java
new file mode 100644
index 0000000..223d812
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/Test_dastore.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dastore.jm.T_dastore_1;
+
+public class Test_dastore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        t.run(arr, 1, 2.7d);
+        assertEquals(2.7d, arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        t.run(arr, 0, 2.7d);
+        assertEquals(2.7d, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, 2, 2.7d);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_dastore_1 t = new T_dastore_1();
+        try {
+            t.run(null, 2, 2.7d);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_dastore_1 t = new T_dastore_1();
+        double[] arr = new double[2];
+        try {
+            t.run(arr, -1, 2.7d);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int,
+     * double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float[], int,
+     * double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int,
+     * double
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * double
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.dastore.jm.T_dastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.j
new file mode 100644
index 0000000..5088f55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_1.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.java
new file mode 100644
index 0000000..927890e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_1 {
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.j
new file mode 100644
index 0000000..2e663f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_2.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 3
+    .limit locals 5
+
+    aload_1
+    iload_2
+    ;dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.java
new file mode 100644
index 0000000..fac0a98
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_2 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.j
new file mode 100644
index 0000000..a2a2b00
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_3.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 3
+    .limit locals 5
+
+    ;aload_1
+    iload_2
+    dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.java
new file mode 100644
index 0000000..c6fc58c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_3 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.j
new file mode 100644
index 0000000..38e7bab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_4.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DDD)V
+    .limit stack 6
+    .limit locals 6
+
+    aload_1
+    dload_2
+;    d2i
+    dload 4
+
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.java
new file mode 100644
index 0000000..4d368a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_4 {
+
+    public void run(double[] arr, double idx, double value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.j
new file mode 100644
index 0000000..cf5f55e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_5.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([DIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+;    l2f
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.java
new file mode 100644
index 0000000..c5b7ff8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_5 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = (double)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.j
new file mode 100644
index 0000000..f3eace3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_6.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;ID)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_2
+    dload_3
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.java
new file mode 100644
index 0000000..cbbf398
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_6 {
+
+    public void run(Object a, double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.j
new file mode 100644
index 0000000..0ad9369
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_7.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[FID)V
+    .limit stack 4
+    .limit locals 6
+    
+    aload_2
+    iload_3
+    dload 4
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.java
new file mode 100644
index 0000000..f6225df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_7 {
+
+    public void run(double a[], float[] arr, int idx, double value) {
+        a[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.j
new file mode 100644
index 0000000..c04e9a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_8.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[DID)V
+    .limit stack 4
+    .limit locals 6
+    
+    aload_1
+    iload_3
+    dload 4
+    dastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.java
new file mode 100644
index 0000000..705e711
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_8 {
+
+    public void run(long a[], double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.j
new file mode 100644
index 0000000..b8ef436
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dastore_9.java
+.class public dxc/junit/opcodes/dastore/jm/T_dastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([DID)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    aload_0
+    dload_3
+    dastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.java
new file mode 100644
index 0000000..af682a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dastore/jm/T_dastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dastore.jm;
+
+public class T_dastore_9 {
+    
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/Test_dcmpg.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/Test_dcmpg.java
new file mode 100644
index 0000000..bb99cd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/Test_dcmpg.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dcmpg.jm.T_dcmpg_1;
+
+public class Test_dcmpg extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_dcmpg_1 t = new T_dcmpg_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpg.jm.T_dcmpg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.j
new file mode 100644
index 0000000..788ed13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpg_1.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)I
+    .limit stack 4
+    .limit locals 6
+    
+    dload_1
+    dload_3
+    
+    dcmpg 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.java
new file mode 100644
index 0000000..4b9e6c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.j
new file mode 100644
index 0000000..e8d237d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpg_2.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+;    fload_3
+    dcmpg
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.java
new file mode 100644
index 0000000..6ff5dff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_2 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.j
new file mode 100644
index 0000000..fb5f6d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpg_3.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+    fconst_1
+    dcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.java
new file mode 100644
index 0000000..1101f00
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_3 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.j
new file mode 100644
index 0000000..8e23715
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpg_4.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1    
+    dload_1
+
+    dcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.java
new file mode 100644
index 0000000..ae2d937
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_4 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.j
new file mode 100644
index 0000000..9f9d92f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpg_5.java
+.class public dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.java
new file mode 100644
index 0000000..45663f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpg/jm/T_dcmpg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpg.jm;
+
+public class T_dcmpg_5 {
+    
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/Test_dcmpl.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/Test_dcmpl.java
new file mode 100644
index 0000000..045c181
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/Test_dcmpl.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dcmpl.jm.T_dcmpl_1;
+
+public class Test_dcmpl extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(-1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_dcmpl_1 t = new T_dcmpl_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dcmpl.jm.T_dcmpl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.j
new file mode 100644
index 0000000..35b12a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpl_1.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)I
+    .limit stack 4
+    .limit locals 6
+    
+    dload_1
+    dload_3
+    
+    dcmpl 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.java
new file mode 100644
index 0000000..7effb95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.j
new file mode 100644
index 0000000..d4fa52c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpl_2.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+;    fload_3
+    dcmpl
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.java
new file mode 100644
index 0000000..583256a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_2 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.j
new file mode 100644
index 0000000..4db6e33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpl_3.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    dload_1
+    fconst_1
+    dcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.java
new file mode 100644
index 0000000..fdb3329
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_3 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.j
new file mode 100644
index 0000000..7b18e83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpl_4.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1    
+    dload_1
+
+    dcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.java
new file mode 100644
index 0000000..f2a8b24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_4 {
+
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.j
new file mode 100644
index 0000000..56d80b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dcmpl_5.java
+.class public dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)Z
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.java
new file mode 100644
index 0000000..79d1bf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dcmpl/jm/T_dcmpl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dcmpl.jm;
+
+public class T_dcmpl_5 {
+    
+    public boolean run(double a, double b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/Test_dconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/Test_dconst_0.java
new file mode 100644
index 0000000..1dc0718
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/Test_dconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dconst_0.jm.T_dconst_0_1;
+
+public class Test_dconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_dconst_0_1 t = new T_dconst_0_1();
+        double b = 1234d;
+        double c = 1234d;
+        double d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dconst_0.jm.T_dconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.j
new file mode 100644
index 0000000..c6b15b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dconst_0_1.java
+.class public dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    dconst_0
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.java
new file mode 100644
index 0000000..bb40485
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dconst_0.jm;
+
+public class T_dconst_0_1 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.j
new file mode 100644
index 0000000..163d026
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dconst_0_2.java
+.class public dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 1
+;    .limit locals 1
+
+    dconst_0
+    dconst_0
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.java
new file mode 100644
index 0000000..47856ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_0/jm/T_dconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dconst_0.jm;
+
+public class T_dconst_0_2 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/Test_dconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/Test_dconst_1.java
new file mode 100644
index 0000000..2b15a2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/Test_dconst_1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dconst_1.jm.T_dconst_1_1;
+
+public class Test_dconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_dconst_1_1 t = new T_dconst_1_1();
+        double b = 1235d;
+        double c = 1234d;
+        double d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dconst_1.jm.T_dconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.j
new file mode 100644
index 0000000..2636b26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dconst_1_1.java
+.class public dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    dconst_1
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.java
new file mode 100644
index 0000000..a332a75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dconst_1.jm;
+
+public class T_dconst_1_1 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.j
new file mode 100644
index 0000000..9a17a14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dconst_1_2.java
+.class public dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 1
+;    .limit locals 1
+
+    dconst_1
+    dconst_1
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.java
new file mode 100644
index 0000000..88726ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dconst_1/jm/T_dconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dconst_1.jm;
+
+public class T_dconst_1_2 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/Test_ddiv.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/Test_ddiv.java
new file mode 100644
index 0000000..e97558a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/Test_ddiv.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ddiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ddiv.jm.T_ddiv_1;
+
+public class Test_ddiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_ddiv_1 t = new T_ddiv_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double /
+     * reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ddiv.jm.T_ddiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.j
new file mode 100644
index 0000000..97285f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ddiv_1.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    ddiv
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.java
new file mode 100644
index 0000000..bb7e5d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.j
new file mode 100644
index 0000000..fd03c32
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ddiv_2.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3
+    ddiv
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.java
new file mode 100644
index 0000000..a3c1b12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_2 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.j
new file mode 100644
index 0000000..1d5da57
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ddiv_3.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    ddiv
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.java
new file mode 100644
index 0000000..8fc4917
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_3 {
+
+    public double run(float a, double b) {
+        return (double)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.j
new file mode 100644
index 0000000..037c781
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ddiv_4.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    ddiv
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.java
new file mode 100644
index 0000000..3861a04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_4 {
+
+    public double run(long a, double b) {
+        return (double)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.j
new file mode 100644
index 0000000..f7d28aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ddiv_5.java
+.class public dxc/junit/opcodes/ddiv/jm/T_ddiv_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    ddiv
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.java
new file mode 100644
index 0000000..51f30d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ddiv/jm/T_ddiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ddiv.jm;
+
+public class T_ddiv_5 {
+    
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/Test_dload.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/Test_dload.java
new file mode 100644
index 0000000..87607ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/Test_dload.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload.jm.T_dload_1;
+import dxc.junit.opcodes.dload.jm.T_dload_1_w;
+import dxc.junit.opcodes.dload.jm.T_dload_2;
+import dxc.junit.opcodes.dload.jm.T_dload_2_w;
+
+public class Test_dload extends DxTestCase {
+
+    /*
+     * NORMAL dload VERSION
+     */
+
+    /**
+     * @title  Test dload 1
+     */
+    public void testN1() {
+        T_dload_1 t = new T_dload_1();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @title  Test dload 255
+     */
+    public void testN2() {
+        T_dload_2 t = new T_dload_2();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE dload VERSION
+     */
+
+    /**
+     * @title  Test dload 257
+     */
+    public void testN3() {
+        T_dload_1_w t = new T_dload_1_w();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @title  Test dload_w 1
+     */
+    public void testN4() {
+        T_dload_2_w t = new T_dload_2_w();
+        assertEquals(1d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload.jm.T_dload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.j
new file mode 100644
index 0000000..ea6f194
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 6
+    
+    dconst_1
+    dstore 4
+    dconst_0
+    dload 4
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.java
new file mode 100644
index 0000000..7775049
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_1 {
+
+    public double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.j
new file mode 100644
index 0000000..c6c9056
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore 257
+    dconst_0
+    dload 257
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.java
new file mode 100644
index 0000000..337b02d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_1_w {
+
+    public double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.j
new file mode 100644
index 0000000..dd97744
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore 255
+    dconst_0
+    dload 255
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.java
new file mode 100644
index 0000000..002071f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_2 {
+
+      public double run() {
+          return 1d;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.j
new file mode 100644
index 0000000..0874c3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore 1
+    dconst_0
+    dload_w 1
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.java
new file mode 100644
index 0000000..c5140b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_2_w {
+
+      public double run() {
+          return 1d;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.j
new file mode 100644
index 0000000..bed08c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 0
+
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.java
new file mode 100644
index 0000000..eefa007
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.j
new file mode 100644
index 0000000..7618f0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    dload 300
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.java
new file mode 100644
index 0000000..01eb395
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_3_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.j
new file mode 100644
index 0000000..a1731d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_4.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.java
new file mode 100644
index 0000000..13c99db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.j
new file mode 100644
index 0000000..855d01e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_4_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    fconst_1
+    fstore 260
+    fconst_1
+    fstore 261
+    
+    dload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.java
new file mode 100644
index 0000000..6810298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_4_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.j
new file mode 100644
index 0000000..d363cab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_5.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.java
new file mode 100644
index 0000000..1428a19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.j
new file mode 100644
index 0000000..bf96314
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_5_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    
+    dload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.java
new file mode 100644
index 0000000..8010dc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_5_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.j
new file mode 100644
index 0000000..07b4434
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_6.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    dconst_1
+    dstore_0
+    
+    dload 0
+    dload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.java
new file mode 100644
index 0000000..41b6572
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.j
new file mode 100644
index 0000000..4a92f33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_6_w.java
+.class public dxc/junit/opcodes/dload/jm/T_dload_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    dload_w 260
+    dload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.java
new file mode 100644
index 0000000..d2d54e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload/jm/T_dload_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload.jm;
+
+public class T_dload_6_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/Test_dload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/Test_dload_0.java
new file mode 100644
index 0000000..3386d70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/Test_dload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_0.jm.T_dload_0_1;
+import dxc.junit.opcodes.dload_0.jm.T_dload_0_6;
+
+public class Test_dload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_0_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_0.jm.T_dload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.j
new file mode 100644
index 0000000..efadce3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_0_1.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_0
+    dconst_0
+    dload_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.java
new file mode 100644
index 0000000..b6c0a13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.j
new file mode 100644
index 0000000..7da999c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_0_2.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.java
new file mode 100644
index 0000000..05fe279
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.j
new file mode 100644
index 0000000..07fa8f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_0_3.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_0
+    fconst_1
+    fstore_1
+    
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.java
new file mode 100644
index 0000000..86dcec7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.j
new file mode 100644
index 0000000..6254ac4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_0_4.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.java
new file mode 100644
index 0000000..ffcfe2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.j
new file mode 100644
index 0000000..6c7c879
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_0_5.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    dload_0
+    dload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.java
new file mode 100644
index 0000000..1cdadbc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.j
new file mode 100644
index 0000000..43843a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_0_6.java
+.class public dxc/junit/opcodes/dload_0/jm/T_dload_0_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    dconst_1
+    dstore_0
+
+    dload_0
+    dload 0
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.java
new file mode 100644
index 0000000..03e3a47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_0/jm/T_dload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_0.jm;
+
+public class T_dload_0_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/Test_dload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/Test_dload_1.java
new file mode 100644
index 0000000..78e1d63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/Test_dload_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_1.jm.T_dload_1_1;
+import dxc.junit.opcodes.dload_1.jm.T_dload_1_6;
+
+public class Test_dload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_1_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_1.jm.T_dload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.j
new file mode 100644
index 0000000..f0b8614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1_1.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_1
+    dconst_0
+    dload_1
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.java
new file mode 100644
index 0000000..08c6c4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.j
new file mode 100644
index 0000000..c3c537b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1_2.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.java
new file mode 100644
index 0000000..e9d012a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.j
new file mode 100644
index 0000000..23521db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1_3.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_1
+    fconst_1
+    fstore_2
+    
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.java
new file mode 100644
index 0000000..ce229e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.j
new file mode 100644
index 0000000..ae50746
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1_4.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.java
new file mode 100644
index 0000000..3e6eadb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.j
new file mode 100644
index 0000000..247a0ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1_5.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    dload_1
+    dload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.java
new file mode 100644
index 0000000..569b8be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.j
new file mode 100644
index 0000000..6a3adfe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_1_6.java
+.class public dxc/junit/opcodes/dload_1/jm/T_dload_1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+
+    dload_1
+    dload 1
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.java
new file mode 100644
index 0000000..fda7e3a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_1/jm/T_dload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_1.jm;
+
+public class T_dload_1_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/Test_dload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/Test_dload_2.java
new file mode 100644
index 0000000..b0d5ede
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/Test_dload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_2.jm.T_dload_2_1;
+import dxc.junit.opcodes.dload_2.jm.T_dload_2_6;
+
+public class Test_dload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_2_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_2.jm.T_dload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.j
new file mode 100644
index 0000000..5dbb5f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2_1.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_2
+    dconst_0
+    dload_2
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.java
new file mode 100644
index 0000000..bd20ce7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.j
new file mode 100644
index 0000000..998877e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2_2.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.java
new file mode 100644
index 0000000..eeab9cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.j
new file mode 100644
index 0000000..d907737
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2_3.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    fstore_2
+    fconst_1
+    fstore_3
+    
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.java
new file mode 100644
index 0000000..7c20960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.j
new file mode 100644
index 0000000..2330dd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2_4.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_2
+    
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.java
new file mode 100644
index 0000000..d01ef76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.j
new file mode 100644
index 0000000..1680575
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2_5.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    
+    dload_2
+    dload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.java
new file mode 100644
index 0000000..96be034
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.j
new file mode 100644
index 0000000..64411be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_2_6.java
+.class public dxc/junit/opcodes/dload_2/jm/T_dload_2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+
+    dload_2
+    dload 2
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.java
new file mode 100644
index 0000000..e98944a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_2/jm/T_dload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_2.jm;
+
+public class T_dload_2_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/Test_dload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/Test_dload_3.java
new file mode 100644
index 0000000..8d88d4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/Test_dload_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dload_3.jm.T_dload_3_1;
+import dxc.junit.opcodes.dload_3.jm.T_dload_3_6;
+
+public class Test_dload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1d, T_dload_3_1.run());
+    }
+
+    /**
+     * @title equality of dload_<n> and dload <n>
+     */
+    public void testN2() {
+        assertTrue(T_dload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dload_3.jm.T_dload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.j
new file mode 100644
index 0000000..3e4ec5d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3_1.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 5
+    
+    dconst_1
+    dstore_3
+    dconst_0
+    dload_3
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.java
new file mode 100644
index 0000000..a5cb748
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.j
new file mode 100644
index 0000000..5d3d072
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3_2.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.java
new file mode 100644
index 0000000..da11e14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.j
new file mode 100644
index 0000000..8558fa9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3_3.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    fconst_1
+    fstore_3
+    fconst_1
+    fstore 4
+    
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.java
new file mode 100644
index 0000000..1534e50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.j
new file mode 100644
index 0000000..28fce45
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3_4.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.java
new file mode 100644
index 0000000..6b22af4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.j
new file mode 100644
index 0000000..b9ceac4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3_5.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    
+    dload_3
+    dload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.java
new file mode 100644
index 0000000..48b7cfe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.j
new file mode 100644
index 0000000..eecc7a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dload_3_6.java
+.class public dxc/junit/opcodes/dload_3/jm/T_dload_3_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+
+    dload_3
+    dload 3
+    dcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.java
new file mode 100644
index 0000000..4be5f77
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dload_3/jm/T_dload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dload_3.jm;
+
+public class T_dload_3_6 {
+
+    public static boolean run() {
+        double i = 1d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/Test_dmul.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/Test_dmul.java
new file mode 100644
index 0000000..4f0c55b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/Test_dmul.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dmul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dmul.jm.T_dmul_1;
+
+public class Test_dmul extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_dmul_1 t = new T_dmul_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dmul.jm.T_dmul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.j
new file mode 100644
index 0000000..4bd9247
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dmul_1.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    dmul
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.java
new file mode 100644
index 0000000..c4ad6fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.j
new file mode 100644
index 0000000..744f9ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dmul_2.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3   
+    dmul
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.java
new file mode 100644
index 0000000..7616c9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_2 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.j
new file mode 100644
index 0000000..222294b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dmul_3.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 4
+    .limit locals 5
+    fload_1
+    dload_2    
+    dmul
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.java
new file mode 100644
index 0000000..7732dbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_3 {
+
+    public double run(float a, double b) {
+        return (double)a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.j
new file mode 100644
index 0000000..376b985
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dmul_4.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    l2d
+    dload_3
+    dmul
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.java
new file mode 100644
index 0000000..7fe4ff0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_4 {
+
+    public double run(long a, double b) {
+        return (double)a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.j
new file mode 100644
index 0000000..c6783ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dmul_5.java
+.class public dxc/junit/opcodes/dmul/jm/T_dmul_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dmul
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.java
new file mode 100644
index 0000000..d4c5811
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dmul/jm/T_dmul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dmul.jm;
+
+public class T_dmul_5 {
+    
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/Test_dneg.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/Test_dneg.java
new file mode 100644
index 0000000..6f17737
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/Test_dneg.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dneg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dneg.jm.T_dneg_1;
+
+public class Test_dneg extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-1d, t.run(1d));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(1d, t.run(-1d));
+    }
+
+    /**
+     * @title  Argument = +0
+     */
+    public void testN3() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-0d, t.run(+0d));
+    }
+
+    /**
+     * @title  Argument = -2.7
+     */
+    public void testN4() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(2.7d, t.run(-2.7d));
+    }
+
+
+    /**
+     * @title  Argument = Double.NaN
+     */
+    public void testB1() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(Double.NaN, t.run(Double.NaN));
+    }
+
+    /**
+     * @title  Argument = Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-1.7976931348623157E308d, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Double.MIN
+     */
+    public void testB5() {
+        T_dneg_1 t = new T_dneg_1();
+        assertEquals(-4.9E-324d, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dneg.jm.T_dneg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.j
new file mode 100644
index 0000000..17acbbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_1.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+    dload_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.java
new file mode 100644
index 0000000..9b33e9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_1 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.j
new file mode 100644
index 0000000..7f8266c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dneg_2.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 2
+    ;dload_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.java
new file mode 100644
index 0000000..27ec6ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_2 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.j
new file mode 100644
index 0000000..98aa60e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dneg_3.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    fconst_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.java
new file mode 100644
index 0000000..c7a68a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_3 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.j
new file mode 100644
index 0000000..fbbac9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dneg_4.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    lconst_1
+    dneg
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.java
new file mode 100644
index 0000000..ee85927
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_4 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.j
new file mode 100644
index 0000000..6e7874d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dneg_5.java
+.class public dxc/junit/opcodes/dneg/jm/T_dneg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    dneg
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.java
new file mode 100644
index 0000000..1fb3c3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dneg/jm/T_dneg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dneg.jm;
+
+public class T_dneg_5 {
+    
+    public double run(double d) {
+        return -d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/Test_drem.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/Test_drem.java
new file mode 100644
index 0000000..f8a9de5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/Test_drem.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.drem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.drem.jm.T_drem_1;
+
+public class Test_drem extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_drem_1 t = new T_drem_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_drem_1 t = new T_drem_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.drem.jm.T_drem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.j
new file mode 100644
index 0000000..15501a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_drem_1.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    drem
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.java
new file mode 100644
index 0000000..36f7787
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_1 {
+
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.j
new file mode 100644
index 0000000..1c256c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_drem_2.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3    
+    drem
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.java
new file mode 100644
index 0000000..5268322
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_2 {
+
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.j
new file mode 100644
index 0000000..f0cc966
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_drem_3.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    drem
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.java
new file mode 100644
index 0000000..2687fec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_3 {
+
+    public double run(double a, float b) {
+        return a%(double)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.j
new file mode 100644
index 0000000..8b9dc80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_drem_4.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    l2d
+    dload_3
+    drem
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.java
new file mode 100644
index 0000000..bf104e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_4 {
+
+    public double run(long a, double b) {
+        return (double)a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.j
new file mode 100644
index 0000000..75dc941
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_drem_5.java
+.class public dxc/junit/opcodes/drem/jm/T_drem_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    drem
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.java
new file mode 100644
index 0000000..2d3f76b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/drem/jm/T_drem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.drem.jm;
+
+public class T_drem_5 {
+    
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/Test_dreturn.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/Test_dreturn.java
new file mode 100644
index 0000000..90e9e7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/Test_dreturn.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_1;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_6;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_7;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_8;
+import dxc.junit.opcodes.dreturn.jm.T_dreturn_9;
+
+public class Test_dreturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_dreturn_1 t = new T_dreturn_1();
+        assertEquals(123456d, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_dreturn_6 t = new T_dreturn_6();
+        assertEquals(123456d, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by dreturn
+     */
+    public void testN3() {
+        assertTrue(T_dreturn_7.execute());
+    }
+
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_dreturn_8 t = new T_dreturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_dreturn_9 t = new T_dreturn_9();
+        try {
+            assertEquals(1d, t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dreturn.jm.T_dreturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.j
new file mode 100644
index 0000000..b4c8d87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_1.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    ldc2_w 123456.0
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.java
new file mode 100644
index 0000000..2f6e798
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_1 {
+
+    public double run() {
+        return 123456d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.j
new file mode 100644
index 0000000..fbfd76a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_10.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()D
+    .limit stack 2
+    .limit locals 0
+    dconst_1
+    dreturn
+.end method
+
+
+
+.method public run()D
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/dreturn/jm/T_dreturn_10/test()D
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.java
new file mode 100644
index 0000000..49208c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_10 {
+    
+    private static double test() {
+        return 1d;
+    }
+    
+    public double run() {
+        return test();
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.j
new file mode 100644
index 0000000..ed2f42a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_11.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.java
new file mode 100644
index 0000000..ed86640
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_11 {
+    
+    public double run() {
+        return 0d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.j
new file mode 100644
index 0000000..19a7298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_2.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.java
new file mode 100644
index 0000000..3d2bc88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_2 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.j
new file mode 100644
index 0000000..0a80e55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_3.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.java
new file mode 100644
index 0000000..dac5e4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_3 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.j
new file mode 100644
index 0000000..811f72c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_4.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    ;dconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.java
new file mode 100644
index 0000000..8e3b4ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_4 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.j
new file mode 100644
index 0000000..3a666f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_5.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    fconst_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.java
new file mode 100644
index 0000000..62063b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_5 {
+
+    public double run() {
+        return 0d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.j
new file mode 100644
index 0000000..4f72ff5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.j
@@ -0,0 +1,90 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_6.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit locals 12
+    .limit stack 6
+    
+    dconst_1
+    dstore_1
+    ldc2_w 2.0
+    dstore_3
+    ldc2_w 3.0
+    dstore 5
+    
+    ldc2_w 4.0
+    
+    invokestatic dxc/junit/opcodes/dreturn/jm/T_dreturn_6/test()D
+    
+    ldc2_w 4444.0
+    dcmpl
+    ifne Label1
+    
+    ldc2_w 4.0
+    dcmpl
+    ifne Label0
+    
+    dload_1
+    dconst_1
+    dcmpl
+    ifne Label0
+    
+    dload_3
+    ldc2_w 2.0
+    dcmpl
+    ifne Label0
+    
+    dload 5
+    ldc2_w 3.0
+    dcmpl
+    ifne Label0    
+    
+    ldc2_w 123456.0
+    dreturn
+
+Label1:
+    pop2
+Label0:
+    dconst_0
+    dreturn
+
+.end method
+
+.method private static test()D
+    .limit locals 8
+    .limit stack 4
+    
+    ldc2_w 1111.0
+    dstore_1
+    ldc2_w 2222.0
+    dstore_3
+    ldc2_w 3333.0
+    dstore 5
+    
+    ldc2_w 5555.0
+    
+    ldc2_w 4444.0
+    dreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.java
new file mode 100644
index 0000000..e3c2681
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_6 {
+
+    public double run() {
+        return 123456d;
+    }
+    
+    private static double test() {
+        double a = 1111d;
+        double b = 2222d;
+        double c = 3333d;
+        return 4444d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.j
new file mode 100644
index 0000000..2297b9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.j
@@ -0,0 +1,166 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_7.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value D
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    dconst_0
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/dreturn/jm/T_dreturn_7/test()D
+    pop2
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()D
+    .limit stack 5
+    .limit locals 3
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+    dup2
+    dstore_1
+
+    dconst_1
+    dadd
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+
+    dload_1
+    dconst_1
+    dadd
+    dstore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    dload_1
+    aload_0
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+    dcmpl
+    ifeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.failed Z
+
+Label0:
+    dload_1
+    dreturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 5
+    .limit locals 4
+
+    new dxc/junit/opcodes/dreturn/jm/T_dreturn_7
+    dup
+    invokespecial dxc/junit/opcodes/dreturn/jm/T_dreturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.value D
+    ldc2_w 2000.0
+    dcmpl
+    ifne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.dreturn.jm.T_dreturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.java
new file mode 100644
index 0000000..d02da66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_7.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    double value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized double test()    {
+        value++;
+        double c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_dreturn_7 test = new T_dreturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.j
new file mode 100644
index 0000000..9b8b0b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_8.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()D
+    .limit stack 2
+    aload_0
+    monitorexit
+       dconst_0
+    dreturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/dreturn/jm/T_dreturn_8/test()D
+    pop2
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.java
new file mode 100644
index 0000000..27aa409
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_8 {
+    
+    private synchronized double test() {
+        return 0d;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.j
new file mode 100644
index 0000000..2895b44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dreturn_9.java
+.class public dxc/junit/opcodes/dreturn/jm/T_dreturn_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    dconst_1
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.java
new file mode 100644
index 0000000..9d9c41d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dreturn/jm/T_dreturn_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dreturn.jm;
+
+public class T_dreturn_9 {
+    
+    public double run() {
+        return 1d;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/Test_dstore.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/Test_dstore.java
new file mode 100644
index 0000000..3288dd7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/Test_dstore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore.jm.T_dstore_1;
+import dxc.junit.opcodes.dstore.jm.T_dstore_1_w;
+import dxc.junit.opcodes.dstore.jm.T_dstore_5;
+import dxc.junit.opcodes.dstore.jm.T_dstore_5_w;
+
+public class Test_dstore extends DxTestCase {
+
+    /*
+     * NORMAL dstore VERSION
+     */
+
+    /**
+     * @title  dstore 0
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_1.run());
+    }
+
+    /**
+     * @title  dstore 255
+     */
+    public void testN2() {
+        assertEquals(1d, T_dstore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE dstore VERSION
+     */
+
+    /**
+     * @title  dstore_w 0
+     */
+    public void testN3() {
+        assertEquals(1d, T_dstore_1_w.run());
+    }
+
+    /**
+     * @title  dstore 257
+     */
+    public void testN4() {
+        assertEquals(1d, T_dstore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore.jm.T_dstore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.j
new file mode 100644
index 0000000..dfc1a4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_1.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 2
+    
+    dconst_1
+    dstore 0
+    dconst_0
+    dload 0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.java
new file mode 100644
index 0000000..211bf9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.j
new file mode 100644
index 0000000..3bd52da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_1_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 2
+    
+    dconst_1
+    dstore_w 0
+    dconst_0
+    dload 0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.java
new file mode 100644
index 0000000..c855bb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_1_w {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.j
new file mode 100644
index 0000000..1e7e045
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_2.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.java
new file mode 100644
index 0000000..1a3e865
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.j
new file mode 100644
index 0000000..95c3b6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_2_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.java
new file mode 100644
index 0000000..9db43ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_2_w {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.j
new file mode 100644
index 0000000..ca8d79f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_3.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.java
new file mode 100644
index 0000000..f858789
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.j
new file mode 100644
index 0000000..9f90254
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_3_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.java
new file mode 100644
index 0000000..e0d3e8f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_3_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.j
new file mode 100644
index 0000000..45912a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_4.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.java
new file mode 100644
index 0000000..8aef1df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.j
new file mode 100644
index 0000000..95fc6f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_4_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.java
new file mode 100644
index 0000000..0e34bdd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_4_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.j
new file mode 100644
index 0000000..b92bac5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_5.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore 255
+    dconst_0
+    dload 255
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.java
new file mode 100644
index 0000000..5bfd48b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_5 {
+
+    public static double run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.j
new file mode 100644
index 0000000..3efeed0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_5_w.java
+.class public dxc/junit/opcodes/dstore/jm/T_dstore_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 300
+    
+    dconst_1
+    dstore_w 257
+    dconst_0
+    dload 257
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.java
new file mode 100644
index 0000000..6a5bf97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore/jm/T_dstore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore.jm;
+
+public class T_dstore_5_w {
+
+    public static double run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/Test_dstore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/Test_dstore_0.java
new file mode 100644
index 0000000..c365e69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/Test_dstore_0.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_0.jm.T_dstore_0_1;
+import dxc.junit.opcodes.dstore_0.jm.T_dstore_0_5;
+
+public class Test_dstore_0 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_0_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_0.jm.T_dstore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_0.jm.T_dstore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_0.jm.T_dstore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.j
new file mode 100644
index 0000000..c145f7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_0_1.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 2
+    
+    dconst_1
+    dstore_0
+    dconst_0
+    dload_0
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.java
new file mode 100644
index 0000000..225c851
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.j
new file mode 100644
index 0000000..2fc0cf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_0_2.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.java
new file mode 100644
index 0000000..468a023
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.j
new file mode 100644
index 0000000..a401b73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_0_3.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.java
new file mode 100644
index 0000000..d22bee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.j
new file mode 100644
index 0000000..c3ad00d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_0_4.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.java
new file mode 100644
index 0000000..80fd08e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.j
new file mode 100644
index 0000000..6a7124b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_0_5.java
+.class public dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+
+    dconst_1
+    dstore_0
+    dload_0
+
+    dconst_1
+    dstore 0
+    dload_0
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.java
new file mode 100644
index 0000000..e0596d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_0/jm/T_dstore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_0.jm;
+
+public class T_dstore_0_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/Test_dstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/Test_dstore_1.java
new file mode 100644
index 0000000..54dda38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/Test_dstore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_1.jm.T_dstore_1_1;
+import dxc.junit.opcodes.dstore_1.jm.T_dstore_1_5;
+
+public class Test_dstore_1 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_1_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_1.jm.T_dstore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_1.jm.T_dstore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_1.jm.T_dstore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.j
new file mode 100644
index 0000000..99f316a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_1_1.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 3
+    
+    dconst_1
+    dstore_1
+    dconst_0
+    dload_1
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.java
new file mode 100644
index 0000000..f57c81b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.j
new file mode 100644
index 0000000..32d1a60
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_1_2.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.java
new file mode 100644
index 0000000..292b860
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.j
new file mode 100644
index 0000000..6dd7feb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_1_3.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.java
new file mode 100644
index 0000000..3f55d47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.j
new file mode 100644
index 0000000..bfce7ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_1_4.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.java
new file mode 100644
index 0000000..242e0a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.j
new file mode 100644
index 0000000..12dd5a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_1_5.java
+.class public dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    dconst_1
+    dstore_1
+    dload_1
+
+    dconst_1
+    dstore 1
+    dload_1
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.java
new file mode 100644
index 0000000..492506a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_1/jm/T_dstore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_1.jm;
+
+public class T_dstore_1_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/Test_dstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/Test_dstore_2.java
new file mode 100644
index 0000000..c00b007
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/Test_dstore_2.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_2.jm.T_dstore_2_1;
+import dxc.junit.opcodes.dstore_2.jm.T_dstore_2_5;
+
+public class Test_dstore_2 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_2_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_2_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_2.jm.T_dstore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_2.jm.T_dstore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_2.jm.T_dstore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.j
new file mode 100644
index 0000000..c2a76bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_2_1.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_2
+    dconst_0
+    dload_2
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.java
new file mode 100644
index 0000000..ab0b839
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.j
new file mode 100644
index 0000000..4f07c20
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_2_2.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.java
new file mode 100644
index 0000000..3fc3729
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.j
new file mode 100644
index 0000000..07f8d4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_2_3.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    dstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.java
new file mode 100644
index 0000000..3e29214
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.j
new file mode 100644
index 0000000..eba9a71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_2_4.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    dstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.java
new file mode 100644
index 0000000..3b9bb03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.j
new file mode 100644
index 0000000..1b9a614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_2_5.java
+.class public dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    dload_2
+
+    dconst_1
+    dstore 2
+    dload_2
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.java
new file mode 100644
index 0000000..556be2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_2/jm/T_dstore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_2.jm;
+
+public class T_dstore_2_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/Test_dstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/Test_dstore_3.java
new file mode 100644
index 0000000..860a614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/Test_dstore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dstore_3.jm.T_dstore_3_1;
+import dxc.junit.opcodes.dstore_3.jm.T_dstore_3_5;
+
+public class Test_dstore_3 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(1d, T_dstore_3_1.run());
+    }
+
+    /**
+     * @title equality of dstore_<n> and dstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_dstore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_3.jm.T_dstore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_3.jm.T_dstore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dstore_3.jm.T_dstore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.j
new file mode 100644
index 0000000..3738af3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_3_1.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()D
+    .limit stack 4
+    .limit locals 5
+    
+    dconst_1
+    dstore_3
+    dconst_0
+    dload_3
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.java
new file mode 100644
index 0000000..847e07a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_1 {
+
+    public static double run() {
+        return 1d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.j
new file mode 100644
index 0000000..626d1e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_3_2.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    dstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.java
new file mode 100644
index 0000000..21293d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.j
new file mode 100644
index 0000000..9d232e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_3_3.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    fconst_1
+    dstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.java
new file mode 100644
index 0000000..b0ac2a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.j
new file mode 100644
index 0000000..2250519
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_3_4.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    dstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.java
new file mode 100644
index 0000000..7f1a8d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.j
new file mode 100644
index 0000000..4808894
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dstore_3_5.java
+.class public dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    dload_3
+
+    dconst_1
+    dstore 3
+    dload_3
+    
+    dcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.java
new file mode 100644
index 0000000..f1b6ce4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dstore_3/jm/T_dstore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dstore_3.jm;
+
+public class T_dstore_3_5 {
+
+    public static boolean run() {
+        double i = 2d;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/Test_dsub.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/Test_dsub.java
new file mode 100644
index 0000000..25ae6eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/Test_dsub.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dsub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dsub.jm.T_dsub_1;
+
+public class Test_dsub extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title  Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title  Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title  Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title  Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_dsub_1 t = new T_dsub_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dsub.jm.T_dsub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.j
new file mode 100644
index 0000000..62af343
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dsub_1.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    dload_3
+    dsub
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.java
new file mode 100644
index 0000000..ab16ff8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.j
new file mode 100644
index 0000000..988f027
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dsub_2.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+    dload_1
+    ; dload_3    
+    dsub
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.java
new file mode 100644
index 0000000..f85699e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_2 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.j
new file mode 100644
index 0000000..0e6e7db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dsub_3.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)D
+    .limit stack 4
+    .limit locals 5
+    fload_1
+    dload_2    
+    dsub
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.java
new file mode 100644
index 0000000..e57d3c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_3 {
+
+    public double run(float a, double b) {
+        return (double)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.j
new file mode 100644
index 0000000..e592dc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dsub_4.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JD)D
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    dsub
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.java
new file mode 100644
index 0000000..3dcd8c8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_4 {
+
+    public double run(long a, double b) {
+        return (double)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.j
new file mode 100644
index 0000000..b83d875
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dsub_5.java
+.class public dxc/junit/opcodes/dsub/jm/T_dsub_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DD)D
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    aload_0
+    dsub
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.java
new file mode 100644
index 0000000..47ee270
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dsub/jm/T_dsub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dsub.jm;
+
+public class T_dsub_5 {
+    
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/Test_dup.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/Test_dup.java
new file mode 100644
index 0000000..5e84815
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/Test_dup.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup.jm.T_dup_1;
+import dxc.junit.opcodes.dup.jm.T_dup_6;
+import dxc.junit.opcodes.dup.jm.T_dup_7;
+
+
+public class Test_dup extends DxTestCase {
+
+    /**
+     * @title  type of argument - int
+     */
+    public void testN1() {
+        T_dup_1 t = new T_dup_1();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @title  type of argument - float
+     */
+    public void testN2() {
+        T_dup_6 t = new T_dup_6();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @title  type of argument - reference
+     */
+    public void testN3() {
+        T_dup_7 t = new T_dup_7();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments 
+     */
+    public void testVFE1() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double 
+     */
+    public void testVFE2() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long 
+     */
+    public void testVFE3() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.dup.jm.T_dup_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.j
new file mode 100644
index 0000000..c1b71e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_1.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_4
+    dup
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.java
new file mode 100644
index 0000000..c1d2de7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.j
new file mode 100644
index 0000000..fc18b59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_2.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    ; iconst_4
+    dup
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.java
new file mode 100644
index 0000000..a9729cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.j
new file mode 100644
index 0000000..4414dc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_3.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+    dconst_1
+    dup
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.java
new file mode 100644
index 0000000..07c156d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.j
new file mode 100644
index 0000000..a200e95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_4.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1
+    dup
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.java
new file mode 100644
index 0000000..f5a1819
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.j
new file mode 100644
index 0000000..a346cd4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_5.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+    
+    iconst_4
+    dup
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.java
new file mode 100644
index 0000000..28e1688
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.j
new file mode 100644
index 0000000..46c002a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_6.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    dup
+    fcmpl
+    ifeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.java
new file mode 100644
index 0000000..1ff2719
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.j
new file mode 100644
index 0000000..2e31bb8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_7.java
+.class public dxc/junit/opcodes/dup/jm/T_dup_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    aload_0
+    dup
+    if_acmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.java
new file mode 100644
index 0000000..17d9abe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup/jm/T_dup_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup.jm;
+
+public class T_dup_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/Test_dup2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/Test_dup2.java
new file mode 100644
index 0000000..c73ef3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/Test_dup2.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup2.jm.T_dup2_1;
+import dxc.junit.opcodes.dup2.jm.T_dup2_3;
+import dxc.junit.opcodes.dup2.jm.T_dup2_4;
+import dxc.junit.opcodes.dup2.jm.T_dup2_6;
+
+public class Test_dup2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int
+     */
+    public void testN1() {
+        T_dup2_1 t = new T_dup2_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float
+     */
+    public void testN2() {
+        T_dup2_6 t = new T_dup2_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, int
+     */
+    public void testN3() {
+        T_dup2_3 t = new T_dup2_3();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - long, int
+     */
+    public void testN4() {
+        T_dup2_4 t = new T_dup2_4();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2.jm.T_dup2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2.jm.T_dup2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.j
new file mode 100644
index 0000000..07a81b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.j
@@ -0,0 +1,57 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_1.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    iconst_3
+    iconst_4
+    dup2            
+    
+    iconst_4
+    if_icmpne Label3
+    
+    iconst_3
+    if_icmpne Label2
+    
+    iconst_4
+    if_icmpne Label1
+    
+    iconst_3
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.java
new file mode 100644
index 0000000..b72b82d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.j
new file mode 100644
index 0000000..e7ad7f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_2.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    iconst_4
+    dup2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.java
new file mode 100644
index 0000000..c2d0e43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.j
new file mode 100644
index 0000000..5f526d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_3.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 6
+    .limit locals 3
+    dconst_1
+    dup2
+    
+    dcmpl
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.java
new file mode 100644
index 0000000..aa2ac10
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.j
new file mode 100644
index 0000000..9424ac6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_4.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 6
+    .limit locals 3
+    lconst_1
+    dup2
+    
+    lcmp
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.java
new file mode 100644
index 0000000..f451f5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.j
new file mode 100644
index 0000000..757caaa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_5.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    iconst_4
+    dup2
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.java
new file mode 100644
index 0000000..2af55a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.j
new file mode 100644
index 0000000..d68f7b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_6.java
+.class public dxc/junit/opcodes/dup2/jm/T_dup2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    fconst_0
+    fconst_1
+    dup2
+    
+    fconst_1
+    fcmpl
+    ifne Label3
+    
+    fconst_0
+    fcmpl
+    ifne Label2
+    
+    fconst_1
+    fcmpl
+    ifne Label1
+    
+    fconst_0
+    fcmpl
+    ifne Label0
+    
+    iconst_1
+    ireturn
+
+Label3:
+    pop
+Label2:
+    pop    
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.java
new file mode 100644
index 0000000..9fa9ff1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2/jm/T_dup2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2.jm;
+
+public class T_dup2_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/Test_dup2_x1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/Test_dup2_x1.java
new file mode 100644
index 0000000..2ba5c11
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/Test_dup2_x1.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_1;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_3;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_4;
+import dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_6;
+
+public class Test_dup2_x1 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int, int
+     */
+    public void testN1() {
+        T_dup2_x1_1 t = new T_dup2_x1_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float, float
+     */
+    public void testN2() {
+        T_dup2_x1_6 t = new T_dup2_x1_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, int
+     */
+    public void testN3() {
+        T_dup2_x1_3 t = new T_dup2_x1_3();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title type of argument - long, int
+     */
+    public void testN4() {
+        T_dup2_x1_4 t = new T_dup2_x1_4();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x1.jm.T_dup2_x1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.j
new file mode 100644
index 0000000..6d2c106
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.j
@@ -0,0 +1,59 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x1_1.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    iconst_3
+    iconst_4
+    iconst_5    ; 3 4 5
+    dup2_x1        ; 4 5 3 4 5
+    iconst_5
+    if_icmpne Label4    ; 4 5 3 4
+    iconst_4
+    if_icmpne Label3    ; 4 5 3 
+    iconst_3
+    if_icmpne Label2    ; 4 5 
+    iconst_5
+    if_icmpne Label1    ; 4
+    iconst_4
+    if_icmpne Label0    ; 
+
+    iconst_1
+    ireturn
+    
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.java
new file mode 100644
index 0000000..471e097
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.j
new file mode 100644
index 0000000..fbdd36b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x1_2.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    iconst_3
+    iconst_4
+    ;iconst_5
+    dup2_x1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.java
new file mode 100644
index 0000000..afa7a67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.j
new file mode 100644
index 0000000..23c3cf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x1_3.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 3
+    
+    iconst_5
+    dconst_1
+    dup2_x1        ; [1] 5 [1]
+    
+    dconst_1    ; [1] 5 [1] [1]
+    dcmpl        ; [1] 5
+    ifne Label2
+    iconst_5    ; [1] 5 5
+    if_icmpne Label1
+       dconst_1    ; [1][1]
+    dcmpl        ; 
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+ Label2:
+     pop
+ Label1:
+     pop2
+ Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.java
new file mode 100644
index 0000000..fdd9b7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.j
new file mode 100644
index 0000000..c719ab6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x1_4.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 3
+    
+    iconst_5
+    lconst_1
+    dup2_x1        ; [1] 5 [1]
+    
+    lconst_1    ; [1] 5 [1] [1]
+    lcmp        ; [1] 5
+    ifne Label2
+    iconst_5    ; [1] 5 5
+    if_icmpne Label1
+       lconst_1    ; [1][1]
+    lcmp        ; 
+    ifne Label0
+    
+    iconst_1
+    ireturn
+    
+ Label2:
+     pop
+ Label1:
+     pop2
+ Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.java
new file mode 100644
index 0000000..92e6cd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.j
new file mode 100644
index 0000000..81a5836
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x1_5.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 1
+    
+    iconst_3
+    iconst_4
+    iconst_5
+    dup2_x1
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.java
new file mode 100644
index 0000000..46036a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.j
new file mode 100644
index 0000000..45cd2b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.j
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x1_6.java
+.class public dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    fconst_0
+    fconst_1
+    fconst_2    ; 0 1 2
+    dup2_x1        ; 1 2 0 1 2
+    fconst_2
+    fcmpl         ; 1 2 0 1
+    ifne Label4    
+    fconst_1
+    fcmpl         ; 1 2 0 
+    ifne Label3    
+    fconst_0
+    fcmpl         ; 1 2 
+    ifne Label2    
+    fconst_2
+    fcmpl         ; 1
+    ifne Label1    
+    fconst_1
+    fcmpl         ;
+    ifne Label0     
+
+    iconst_1
+    ireturn
+    
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.java
new file mode 100644
index 0000000..050d49c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x1/jm/T_dup2_x1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x1.jm;
+
+public class T_dup2_x1_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/Test_dup2_x2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/Test_dup2_x2.java
new file mode 100644
index 0000000..e211f3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/Test_dup2_x2.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_1;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_2;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_3;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_4;
+import dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_5;
+
+public class Test_dup2_x2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int, int, int
+     */
+    public void testN1() {
+        T_dup2_x2_1 t = new T_dup2_x2_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float, float, float
+     */
+    public void testN2() {
+        T_dup2_x2_2 t = new T_dup2_x2_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, float, int
+     */
+    public void testN3() {
+        T_dup2_x2_3 t = new T_dup2_x2_3();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title type of argument - int, float, long
+     */
+    public void testN4() {
+        T_dup2_x2_4 t = new T_dup2_x2_4();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title type of argument - double, long
+     */
+    public void testN5() {
+        T_dup2_x2_5 t = new T_dup2_x2_5();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup2_x2.jm.T_dup2_x2_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.j
new file mode 100644
index 0000000..b7be303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.j
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x2_1.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    iconst_2
+    iconst_3
+    iconst_4
+    iconst_5    ; 2 3 4 5
+    dup2_x2        ; 4 5 2 3 4 5
+    iconst_5
+    if_icmpne Label5    ; 4 5 2 3 4 
+    iconst_4
+    if_icmpne Label4    ; 4 5 2 3 
+    iconst_3
+    if_icmpne Label3    ; 4 5 2 
+    iconst_2
+    if_icmpne Label2    ; 4 5
+    iconst_5
+    if_icmpne Label1    ; 4
+    iconst_4
+    if_icmpne Label0    ; 4
+
+    iconst_1
+    ireturn
+   
+Label5:
+    pop 
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.java
new file mode 100644
index 0000000..3d02ff3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.j
new file mode 100644
index 0000000..aa231cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.j
@@ -0,0 +1,75 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x2_2.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    fconst_2
+    ldc 3.0f
+    ldc 4.0f
+    ldc 5.0f    ; 2 3 4 5
+    dup2_x2        ; 4 5 2 3 4 5
+    
+    ldc 5.0f
+    fcmpl        ; 4 5 2 3 4
+    ifne Label5
+
+    ldc 4.0f
+    fcmpl        ; 4 5 2 3
+    ifne Label4
+         
+    ldc 3.0f
+    fcmpl        ; 4 5 2
+    ifne Label3
+
+    fconst_2
+    fcmpl        ; 4 5
+    ifne Label2
+    
+    ldc 5.0f
+    fcmpl        ; 4
+    ifne Label1
+    
+    ldc 4.0f
+    fcmpl        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label5:
+    pop 
+Label4:
+    pop
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.java
new file mode 100644
index 0000000..12f6dbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.j
new file mode 100644
index 0000000..6c42a29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.j
@@ -0,0 +1,66 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x2_3.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    ldc2_w 3.0d
+    ldc 4.0f
+    iconst_5    ; [3] 4.0 5
+    dup2_x2        ; 4.0 5 [3] 4.0 5
+    
+    iconst_5
+    if_icmpne Label4    ; 4.0 5 [3] 4.0
+
+    ldc 4.0f
+    fcmpl        ; 4.0 5 [3]
+    ifne Label3
+         
+    ldc2_w 3.0d
+    dcmpl        ; 4.0 5
+    ifne Label2
+
+    iconst_5
+    if_icmpne Label1 ; 4.0
+    
+    ldc 4.0f
+    fcmpl        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label4:
+    pop
+Label3:
+    pop2
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.java
new file mode 100644
index 0000000..e714059
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.j
new file mode 100644
index 0000000..61533bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x2_4.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    iconst_3
+    ldc 4.0f
+    ldc2_w 5    ; 3 4.0 [5]
+    dup2_x2        ; [5] 3 4.0 [5]
+    
+    ldc2_w 5
+    lcmp
+    ifne Label3    ; [5] 3 4.0
+
+    ldc 4.0f
+    fcmpl        ; [5] 3
+    ifne Label2
+         
+    iconst_3
+    if_icmpne Label1 ; [5]
+
+    ldc2_w 5
+    lcmp        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop2
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.java
new file mode 100644
index 0000000..64f1368
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.j
new file mode 100644
index 0000000..58b4209
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x2_5.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    
+    ldc2_w 4.0d
+    ldc2_w 5    ; [4.] [5]
+    dup2_x2        ; [5] [4.] [5]
+    
+    ldc2_w 5
+    lcmp
+    ifne Label2    ; [5] [4.]
+
+    ldc2_w 4.0d
+    dcmpl        ; [5]
+    ifne Label1
+         
+    ldc2_w 5
+    lcmp        ;
+    ifne Label0
+
+    iconst_1
+    ireturn
+   
+Label2:
+    pop2
+Label1:
+    pop2
+Label0:    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.java
new file mode 100644
index 0000000..e3ba641
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.j
new file mode 100644
index 0000000..1912e5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x2_6.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 8
+    .limit locals 2
+    iconst_2
+    iconst_3
+    iconst_4
+    ;iconst_5
+    dup2_x2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.java
new file mode 100644
index 0000000..a38100d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.j
new file mode 100644
index 0000000..d4a70f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup2_x2_7.java
+.class public dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 1
+    
+    iconst_2
+    iconst_3
+    iconst_4
+    iconst_5
+    dup2_x2
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.java
new file mode 100644
index 0000000..cf71ad1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup2_x2/jm/T_dup2_x2_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup2_x2.jm;
+
+public class T_dup2_x2_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/Test_dup_x1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/Test_dup_x1.java
new file mode 100644
index 0000000..6e3f57e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/Test_dup_x1.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_1;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_6;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_7;
+import dxc.junit.opcodes.dup_x1.jm.T_dup_x1_8;
+
+public class Test_dup_x1 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int
+     */
+    public void testN1() {
+        T_dup_x1_1 t = new T_dup_x1_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float
+     */
+    public void testN2() {
+        T_dup_x1_6 t = new T_dup_x1_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, int
+     */
+    public void testN3() {
+        T_dup_x1_7 t = new T_dup_x1_7();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - reference
+     */
+    public void testN4() {
+        T_dup_x1_8 t = new T_dup_x1_8();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x1.jm.T_dup_x1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.j
new file mode 100644
index 0000000..4dc02d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_1.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    iconst_4
+    iconst_5
+    dup_x1
+    
+    iconst_5
+    if_icmpne Label2
+
+    iconst_4
+    if_icmpne Label1
+
+    iconst_5
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+Label2:
+    pop
+Label1:
+    pop
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.java
new file mode 100644
index 0000000..01af921
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.j
new file mode 100644
index 0000000..fd6f37b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_2.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    iconst_4
+    ;iconst_5
+    dup_x1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.java
new file mode 100644
index 0000000..8a21b44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.j
new file mode 100644
index 0000000..f009a81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_3.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+    dconst_1
+    dup_x1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.java
new file mode 100644
index 0000000..58ab4cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.j
new file mode 100644
index 0000000..e6eaece
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_4.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1
+    dup_x1
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.java
new file mode 100644
index 0000000..db5cbc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.j
new file mode 100644
index 0000000..79c3d8c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_5.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_4
+    iconst_5
+    dup_x1
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.java
new file mode 100644
index 0000000..b1cc14a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.j
new file mode 100644
index 0000000..32d43ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_6.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    fconst_2
+    fconst_1
+    dup_x1
+    
+    fconst_1
+    fcmpl
+    ifne Label2
+    
+    fconst_2
+    fcmpl
+    ifne Label1
+
+    fconst_1
+    fcmpl
+    ifne Label0
+
+    iconst_1
+    ireturn
+    
+Label2:
+    pop
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.java
new file mode 100644
index 0000000..63d7511
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.j
new file mode 100644
index 0000000..6f28a6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_7.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    fconst_2
+    iconst_1
+    dup_x1
+
+    iconst_1
+    if_icmpne Label2
+        
+    fconst_2
+    fcmpl
+    ifne Label1
+    
+    iconst_1
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+    
+Label2:
+    pop    
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.java
new file mode 100644
index 0000000..ce0579d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.j
new file mode 100644
index 0000000..726cc7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x1_8.java
+.class public dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    
+    aload_0
+    aconst_null
+    dup_x1
+
+    aconst_null
+    if_acmpne Label2
+        
+    aload_0
+    if_acmpne Label1
+    
+    aconst_null
+    if_acmpne Label0
+
+    iconst_1
+    ireturn
+    
+Label2:
+    pop    
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+.end method
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.java
new file mode 100644
index 0000000..ed52228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x1/jm/T_dup_x1_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x1.jm;
+
+public class T_dup_x1_8 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/Test_dup_x2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/Test_dup_x2.java
new file mode 100644
index 0000000..38f1650
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/Test_dup_x2.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.dup_x2.jm.T_dup_x2_1;
+import dxc.junit.opcodes.dup_x2.jm.T_dup_x2_6;
+import dxc.junit.opcodes.dup_x2.jm.T_dup_x2_7;
+
+public class Test_dup_x2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - int, int, int
+     */
+    public void testN1() {
+        T_dup_x2_1 t = new T_dup_x2_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - float, float, float
+     */
+    public void testN2() {
+        T_dup_x2_6 t = new T_dup_x2_6();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  type of argument - double, int
+     */
+    public void testN3() {
+        T_dup_x2_7 t = new T_dup_x2_7();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.dup_x2.jm.T_dup_x2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.j
new file mode 100644
index 0000000..5c24e22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.j
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x2_1.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    iconst_3
+    iconst_4            
+    iconst_5            ; 3 4 5
+    dup_x2                ; 5 3 4 5
+    
+    iconst_5            ; 5 3 4 5 5
+    if_icmpne Label3    ; 5 3 4
+    
+    iconst_4            ; 5 3 4 4
+    if_icmpne Label2    ; 5 3
+    
+    iconst_3            ; 5 3 3
+    if_icmpne Label1    ; 5
+    
+    iconst_5            ; 5 5 
+    if_icmpne Label0    ; 
+
+    iconst_1
+    ireturn
+    
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop 
+    
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.java
new file mode 100644
index 0000000..abeff61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_1 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.j
new file mode 100644
index 0000000..6bf6328
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x2_2.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 2
+    iconst_4
+    ;iconst_5
+    dup_x2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.java
new file mode 100644
index 0000000..b085559
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_2 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.j
new file mode 100644
index 0000000..10a2800
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x2_3.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 3
+    dconst_1
+    dup_x2
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.java
new file mode 100644
index 0000000..ff5cd9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_3 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.j
new file mode 100644
index 0000000..db1f32b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x2_4.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    .limit locals 3
+
+    lconst_1
+    dup_x2
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.java
new file mode 100644
index 0000000..8a66e42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_4 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.j
new file mode 100644
index 0000000..e952b56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x2_5.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 1
+    
+    iconst_3
+    iconst_4
+    iconst_5
+    dup_x2
+
+    if_icmpeq Label1
+    
+    iconst_0
+    ireturn
+    
+Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.java
new file mode 100644
index 0000000..c685f59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.j
new file mode 100644
index 0000000..f67f224
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.j
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x2_6.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    fconst_0
+    fconst_1            
+    fconst_2            ; 0 1 2
+    dup_x2                ; 2 0 1 2
+    
+    fconst_2            ; 2 0 1 2 2
+    fcmpl                ; 2 0 1
+    ifne Label3    
+    
+    fconst_1            ; 2 0 1 1
+    fcmpl                ; 2 0
+    ifne Label2            
+    
+    fconst_0            ; 2 0 0
+    fcmpl                ; 2
+    ifne Label1    
+    
+    fconst_2            ; 2 2
+    fcmpl                ; 
+    ifne Label0    
+
+    iconst_1
+    ireturn
+    
+Label3:
+    pop
+Label2:
+    pop
+Label1:
+    pop 
+    
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.java
new file mode 100644
index 0000000..352f746
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_6 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.j b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.j
new file mode 100644
index 0000000..497fbca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_dup_x2_7.java
+.class public dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 5
+    .limit locals 2
+    
+    dconst_1
+    iconst_3              ; [1] 3
+    dup_x2                ; 3 [1] 3
+    
+    iconst_3            ; 3 [1] 3 3
+    if_icmpne Label2    ; 3 [1]    
+    
+    dconst_1            ; 3 [1] [1]
+    dcmpl                ; 3
+    ifne Label1            
+    
+    iconst_3            ; 0
+    if_icmpne Label0    ;    
+    
+    iconst_1
+    ireturn
+    
+Label2:
+    pop2
+Label1:
+    pop 
+Label0:    
+    iconst_0
+    ireturn
+        
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.java b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.java
new file mode 100644
index 0000000..3427222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/dup_x2/jm/T_dup_x2_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.dup_x2.jm;
+
+public class T_dup_x2_7 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/Test_f2d.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/Test_f2d.java
new file mode 100644
index 0000000..af2a661
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/Test_f2d.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2d;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.f2d.jm.T_f2d_1;
+
+public class Test_f2d extends DxTestCase {
+
+    /**
+     * @title  Argument = 0.5
+     */
+    public void testN1() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(0.5d, t.run(0.5f), 0d);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_f2d_1 t = new T_f2d_1();
+        double r = 0x1.fffffeP+127d;
+        assertEquals(r, t.run(Float.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_f2d_1 t = new T_f2d_1();
+        double r = 0x0.000002P-126d;
+        assertEquals(r, t.run(Float.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = -0
+     */
+    public void testB3() {
+        T_f2d_1 t = new T_f2d_1();
+        assertEquals(-0d, t.run(-0), 0d);
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_f2d_1 t = new T_f2d_1();
+        assertTrue(Double.isNaN(t.run(Float.NaN)));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_f2d_1 t = new T_f2d_1();
+        assertTrue(Double.isInfinite(t.run(Float.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_f2d_1 t = new T_f2d_1();
+        assertTrue(Double.isInfinite(t.run(Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2d.jm.T_f2d_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.j
new file mode 100644
index 0000000..7c39854
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2d_1.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+    fload_1
+    f2d
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.java
new file mode 100644
index 0000000..86f6024
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_1 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.j
new file mode 100644
index 0000000..27d5ce9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2d_2.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+;    fload_1
+    f2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.java
new file mode 100644
index 0000000..92464dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_2 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.j
new file mode 100644
index 0000000..8bd52a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2d_3.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)D
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    f2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.java
new file mode 100644
index 0000000..7668c19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_3 {
+
+    public double run(double a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.j
new file mode 100644
index 0000000..0535199
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2d_4.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2f
+    f2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.java
new file mode 100644
index 0000000..21cfd1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_4 {
+
+    public double run(long a) {
+        return (float) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.j
new file mode 100644
index 0000000..4a25d44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2d_5.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)D
+    .limit stack 1
+    .limit locals 2
+
+    fload_1
+    f2d
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.java
new file mode 100644
index 0000000..b01c814
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_5 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.j b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.j
new file mode 100644
index 0000000..2f90d81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2d_6.java
+.class public dxc/junit/opcodes/f2d/jm/T_f2d_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    f2d
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.java b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.java
new file mode 100644
index 0000000..8ac2102
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2d/jm/T_f2d_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2d.jm;
+
+public class T_f2d_6 {
+    
+    public double run(float a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/Test_f2i.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/Test_f2i.java
new file mode 100644
index 0000000..0968e96
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/Test_f2i.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2i;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.f2i.jm.T_f2i_1;
+
+public class Test_f2i extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.999999f
+     */
+    public void testN1() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(2, t.run(2.999999f));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(1, t.run(1f));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(-1, t.run(-1f));
+    }
+
+    /**
+     * @title  Argument = -0f
+     */
+    public void testB1() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(0, t.run(-0f));
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB2() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(0, t.run(Float.NaN));
+    }
+
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_f2i_1 t = new T_f2i_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.f2i.jm.T_f2i_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.j
new file mode 100644
index 0000000..ddc0dc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2i_1.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 2
+    fload_1
+    f2i
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.java
new file mode 100644
index 0000000..b8ae3e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_1 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.j
new file mode 100644
index 0000000..2676a82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2i_2.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 2
+
+;    fload_1
+    f2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.java
new file mode 100644
index 0000000..888f9a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_2 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.j
new file mode 100644
index 0000000..8a819ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2i_3.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)I
+    .limit stack 2
+    .limit locals 3
+ 
+    dload_1
+ ;   d2f
+     f2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.java
new file mode 100644
index 0000000..fb68cc8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_3 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.j
new file mode 100644
index 0000000..9df3571
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2i_4.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+
+    ;l2f
+    f2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.java
new file mode 100644
index 0000000..7f487a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_4 {
+
+    public int run(long a) {
+        return (int)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.j b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.j
new file mode 100644
index 0000000..a18e695
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2i_5.java
+.class public dxc/junit/opcodes/f2i/jm/T_f2i_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    f2i
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.java b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.java
new file mode 100644
index 0000000..d09408c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2i/jm/T_f2i_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2i.jm;
+
+public class T_f2i_5 {
+    
+    public int run(float a) {
+        return (int)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/Test_f2l.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/Test_f2l.java
new file mode 100644
index 0000000..ae6f98f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/Test_f2l.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2l;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.f2l.jm.T_f2l_1;
+
+public class Test_f2l extends DxTestCase {
+
+    /**
+     * @title  Argument = 2.999999f
+     */
+    public void testN1() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(2l, t.run(2.999999f));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+         T_f2l_1 t = new T_f2l_1();
+         assertEquals(1l, t.run(1));
+    }
+    
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+         T_f2l_1 t = new T_f2l_1();
+         assertEquals(-1l, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(0l, t.run(0));
+    }
+    
+    /**
+     * @title  Argument = NaN
+     */
+    public void testB4() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(0l, t.run(Float.NaN));
+    }
+    
+    /**
+     * @title  Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+    
+    /**
+     * @title  Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_f2l_1 t = new T_f2l_1();
+        assertEquals(Long.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments 
+     */
+    public void testVFE1() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double 
+     */
+    public void testVFE2() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long 
+     */
+    public void testVFE3() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference 
+     */
+    public void testVFE5() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.f2l.jm.T_f2l_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.j
new file mode 100644
index 0000000..0416969
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2l_1.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+    fload_1
+    f2l
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.java
new file mode 100644
index 0000000..1aa20c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_1 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.j
new file mode 100644
index 0000000..df4d9e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2l_2.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+
+;    fload_1
+    f2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.java
new file mode 100644
index 0000000..61a830d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_2 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.j
new file mode 100644
index 0000000..72ff8f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2l_3.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    f2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.java
new file mode 100644
index 0000000..c755d86
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_3 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.j
new file mode 100644
index 0000000..293a938
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2l_4.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2f
+    f2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.java
new file mode 100644
index 0000000..1a82262
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_4 {
+
+    public long run(long a) {
+        return (long)(float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.j
new file mode 100644
index 0000000..534ec84
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2l_5.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)J
+    .limit stack 1
+    .limit locals 2
+
+    fload_1
+    f2l
+    
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.java
new file mode 100644
index 0000000..ecc44b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_5 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.j b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.j
new file mode 100644
index 0000000..55af8b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_f2l_6.java
+.class public dxc/junit/opcodes/f2l/jm/T_f2l_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    f2l
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.java b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.java
new file mode 100644
index 0000000..9984255
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/f2l/jm/T_f2l_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.f2l.jm;
+
+public class T_f2l_6 {
+    
+    public long run(float a) {
+        return (long)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/Test_fadd.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/Test_fadd.java
new file mode 100644
index 0000000..a2fef55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/Test_fadd.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fadd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fadd.jm.T_fadd_1;
+
+public class Test_fadd extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fadd_1 t = new T_fadd_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_fadd_1 t = new T_fadd_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fadd.jm.T_fadd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.j
new file mode 100644
index 0000000..81aa01f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fadd_1.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fadd
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.java
new file mode 100644
index 0000000..a093407
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.j
new file mode 100644
index 0000000..57ee8d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fadd_2.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fadd
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.java
new file mode 100644
index 0000000..6dfb686
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_2 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.j
new file mode 100644
index 0000000..dadd9e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fadd_3.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fadd
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.java
new file mode 100644
index 0000000..3f26ebd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_3 {
+
+    public float run(float a, double b) {
+        return a+(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.j
new file mode 100644
index 0000000..6c6aac1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fadd_4.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fadd
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.java
new file mode 100644
index 0000000..6224205
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_4 {
+
+    public float run(long a, float b) {
+        return (float)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.j
new file mode 100644
index 0000000..e964fb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fadd_5.java
+.class public dxc/junit/opcodes/fadd/jm/T_fadd_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    aload_0
+    fadd
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.java
new file mode 100644
index 0000000..78855ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fadd/jm/T_fadd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fadd.jm;
+
+public class T_fadd_5 {
+    
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/Test_faload.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/Test_faload.java
new file mode 100644
index 0000000..6a04f7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/Test_faload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.faload.jm.T_faload_1;
+
+public class Test_faload extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        arr[1] = 3.1415f;
+        assertEquals(3.1415f, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        arr[0] = 3.1415f;
+        assertEquals(3.1415f, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_faload_1 t = new T_faload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_faload_1 t = new T_faload_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.faload.jm.T_faload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.j
new file mode 100644
index 0000000..448ac41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_1.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.java
new file mode 100644
index 0000000..b8173a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_1 {
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.j
new file mode 100644
index 0000000..0f06fe4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_2.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.java
new file mode 100644
index 0000000..4894ed9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_2 {
+
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.j
new file mode 100644
index 0000000..14e2b64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_3.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.java
new file mode 100644
index 0000000..0ca882b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_3 {
+
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.j
new file mode 100644
index 0000000..12c6259
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_4.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FD)F
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.java
new file mode 100644
index 0000000..efff3d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_4 {
+
+    public float run(float[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.j
new file mode 100644
index 0000000..eb3e0d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_5.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FJ)F
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.java
new file mode 100644
index 0000000..d5a8738
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_5 {
+
+    public float run(float[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.j
new file mode 100644
index 0000000..2592e0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_6.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[FI)F
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    faload
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.java
new file mode 100644
index 0000000..b70478f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_6 {
+
+    public float run(Object a, float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.j
new file mode 100644
index 0000000..6ed18fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_7.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[FI)F
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    faload
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.java
new file mode 100644
index 0000000..401a9cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_7 {
+
+    public float run(double[] a, float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.j
new file mode 100644
index 0000000..5e94ca0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_8.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([J[FI)F
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    faload
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.java
new file mode 100644
index 0000000..4b6d235
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_8 {
+
+    public float run(long[] a, float[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.j
new file mode 100644
index 0000000..3a8e65c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_faload_9.java
+.class public dxc/junit/opcodes/faload/jm/T_faload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FI)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    faload
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.java
new file mode 100644
index 0000000..a53e367
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/faload/jm/T_faload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.faload.jm;
+
+public class T_faload_9 {
+    
+    public float run(float[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/Test_fastore.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/Test_fastore.java
new file mode 100644
index 0000000..bf2a6c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/Test_fastore.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fastore.jm.T_fastore_1;
+
+public class Test_fastore extends DxTestCase {
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN1() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        t.run(arr, 1, 2.7f);
+        assertEquals(2.7f, arr[1]);
+    }
+
+    /**
+     * @title normal test. Trying different indexes
+     */
+    public void testN2() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        t.run(arr, 0, 2.7f);
+        assertEquals(2.7f, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, 2, 2.7f);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_fastore_1 t = new T_fastore_1();
+        try {
+            t.run(null, 2, 2.7f);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_fastore_1 t = new T_fastore_1();
+        float[] arr = new float[2];
+        try {
+            t.run(arr, -1, 2.7f);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int,
+     * float
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * float
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int,
+     * float
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * float
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.fastore.jm.T_fastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.j
new file mode 100644
index 0000000..82dc298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_1.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.java
new file mode 100644
index 0000000..9977fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_1 {
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.j
new file mode 100644
index 0000000..09d9ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_2.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.java
new file mode 100644
index 0000000..d9e9013
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_2 {
+
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.j
new file mode 100644
index 0000000..861cc0f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_3.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.java
new file mode 100644
index 0000000..7d55003
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_3 {
+
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.j
new file mode 100644
index 0000000..12318b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_4.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FDF)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    fload 4
+
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.java
new file mode 100644
index 0000000..6d3b631
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_4 {
+
+    public void run(float[] arr, double idx, float value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.j
new file mode 100644
index 0000000..4c2325d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_5.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([FIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+;    l2f
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.java
new file mode 100644
index 0000000..34e158a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_5 {
+
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = (float)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.j
new file mode 100644
index 0000000..b1cabb8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_6.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    fload_3
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.java
new file mode 100644
index 0000000..39d8539
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_6 {
+
+    public void run(Object a, float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.j
new file mode 100644
index 0000000..3bf14f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_7.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[FIF)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    fload 4
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.java
new file mode 100644
index 0000000..8766fd1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_7 {
+
+    public void run(double a[], float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.j
new file mode 100644
index 0000000..138ccc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_8.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[FIF)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    fload 4
+    fastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.java
new file mode 100644
index 0000000..38264cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_8 {
+
+    public void run(long a[], float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.j
new file mode 100644
index 0000000..66e8723
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fastore_9.java
+.class public dxc/junit/opcodes/fastore/jm/T_fastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([FIF)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    fload_3
+    fastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.java
new file mode 100644
index 0000000..af77ce5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fastore/jm/T_fastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fastore.jm;
+
+public class T_fastore_9 {
+    
+    public void run(float[] arr, int idx, float value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/Test_fcmpg.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/Test_fcmpg.java
new file mode 100644
index 0000000..5af23b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/Test_fcmpg.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fcmpg.jm.T_fcmpg_1;
+
+public class Test_fcmpg extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_fcmpg_1 t = new T_fcmpg_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpg.jm.T_fcmpg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.j
new file mode 100644
index 0000000..557db8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpg_1.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)I
+    .limit stack 2
+    .limit locals 3
+    
+    fload_1
+    fload_2
+    
+    fcmpg 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.java
new file mode 100644
index 0000000..90916a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.j
new file mode 100644
index 0000000..98a5a14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpg_2.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+;    fload_2
+    fcmpg
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.java
new file mode 100644
index 0000000..76fc02e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_2 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.j
new file mode 100644
index 0000000..8404b13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpg_3.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 4
+    .limit locals 3
+
+    fload_1
+    dconst_1
+    fcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.java
new file mode 100644
index 0000000..f559c7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_3 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.j
new file mode 100644
index 0000000..f6ed938
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpg_4.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    fload_1
+
+    fcmpg 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.java
new file mode 100644
index 0000000..b540532
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_4 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.j
new file mode 100644
index 0000000..cb0a344
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpg_5.java
+.class public dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.java
new file mode 100644
index 0000000..75872f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpg/jm/T_fcmpg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpg.jm;
+
+public class T_fcmpg_5 {
+    
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/Test_fcmpl.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/Test_fcmpl.java
new file mode 100644
index 0000000..78c0b03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/Test_fcmpl.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fcmpl.jm.T_fcmpl_1;
+
+public class Test_fcmpl extends DxTestCase {
+
+    /**
+     * @title  Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(-1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = +0, -0
+     */
+    public void testB2() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_fcmpl_1 t = new T_fcmpl_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fcmpl.jm.T_fcmpl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.j
new file mode 100644
index 0000000..3bf5533
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpl_1.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)I
+    .limit stack 2
+    .limit locals 3
+    
+    fload_1
+    fload_2
+    
+    fcmpl 
+    dup
+    ifeq Label0
+    ifgt Label1
+    
+    iconst_m1
+    ireturn
+    
+    Label0:
+    iconst_0
+    ireturn
+
+    Label1:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.java
new file mode 100644
index 0000000..2dd1c26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.j
new file mode 100644
index 0000000..01d6c1a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpl_2.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+;    fload_2
+    fcmpl
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.java
new file mode 100644
index 0000000..12cb22f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_2 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.j
new file mode 100644
index 0000000..f944312
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpl_3.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 4
+    .limit locals 3
+
+    fload_1
+    dconst_1
+    fcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.java
new file mode 100644
index 0000000..984516a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_3 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.j
new file mode 100644
index 0000000..42a0161
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpl_4.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    fload_1
+
+    fcmpl 
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.java
new file mode 100644
index 0000000..ca79301
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_4 {
+
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.j
new file mode 100644
index 0000000..65742db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fcmpl_5.java
+.class public dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fcmpl
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.java
new file mode 100644
index 0000000..0a661b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fcmpl/jm/T_fcmpl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fcmpl.jm;
+
+public class T_fcmpl_5 {
+    
+    public boolean run(float a, float b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/Test_fconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/Test_fconst_0.java
new file mode 100644
index 0000000..cf2b492
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/Test_fconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fconst_0.jm.T_fconst_0_1;
+
+public class Test_fconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test 
+     */
+    public void testN1() {
+        T_fconst_0_1 t = new T_fconst_0_1();
+        float b = 1234f;
+        float c = 1234f;
+        float d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fconst_0.jm.T_fconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.j
new file mode 100644
index 0000000..f96b078
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fconst_0_1.java
+.class public dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    fconst_0
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.java
new file mode 100644
index 0000000..976773d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_0.jm;
+
+public class T_fconst_0_1 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.j
new file mode 100644
index 0000000..864b359
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fconst_0_2.java
+.class public dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+;    .limit locals 1
+
+    fconst_0
+    fconst_0
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.java
new file mode 100644
index 0000000..0f7267b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_0/jm/T_fconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_0.jm;
+
+public class T_fconst_0_2 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/Test_fconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/Test_fconst_1.java
new file mode 100644
index 0000000..25ae549
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/Test_fconst_1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fconst_1.jm.T_fconst_1_1;
+
+public class Test_fconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_fconst_1_1 t = new T_fconst_1_1();
+        float b = 1235f;
+        float c = 1234f;
+        float d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fconst_1.jm.T_fconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.j
new file mode 100644
index 0000000..af3a723
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fconst_1_1.java
+.class public dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    fconst_1
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.java
new file mode 100644
index 0000000..b9751a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_1.jm;
+
+public class T_fconst_1_1 {
+
+    public float run() {
+        return 1f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.j
new file mode 100644
index 0000000..98c41d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fconst_1_2.java
+.class public dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+;    .limit locals 1
+
+    fconst_1
+    fconst_1
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.java
new file mode 100644
index 0000000..6fa39d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_1/jm/T_fconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_1.jm;
+
+public class T_fconst_1_2 {
+
+    public float run() {
+        return 1f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/Test_fconst_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/Test_fconst_2.java
new file mode 100644
index 0000000..4aeaf8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/Test_fconst_2.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fconst_2.jm.T_fconst_2_1;
+
+public class Test_fconst_2 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_fconst_2_1 t = new T_fconst_2_1();
+        float b = 1236f;
+        float c = 1234f;
+        float d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fconst_2.jm.T_fconst_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.j
new file mode 100644
index 0000000..2c7ef7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fconst_2_1.java
+.class public dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    fconst_2
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.java
new file mode 100644
index 0000000..7ac0339
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_2.jm;
+
+public class T_fconst_2_1 {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.j
new file mode 100644
index 0000000..795fb7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fconst_2_2.java
+.class public dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+;    .limit locals 1
+
+    fconst_2
+    fconst_2
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.java
new file mode 100644
index 0000000..f910831
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fconst_2/jm/T_fconst_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fconst_2.jm;
+
+public class T_fconst_2_2 {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/Test_fdiv.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/Test_fdiv.java
new file mode 100644
index 0000000..ce1f3d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/Test_fdiv.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fdiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fdiv.jm.T_fdiv_1;
+
+public class Test_fdiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_fdiv_1 t = new T_fdiv_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fdiv.jm.T_fdiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.j
new file mode 100644
index 0000000..a64d47f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fdiv_1.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fdiv
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.java
new file mode 100644
index 0000000..4d6c2e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.j
new file mode 100644
index 0000000..6755eaf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fdiv_2.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fdiv
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.java
new file mode 100644
index 0000000..447fe13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_2 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.j
new file mode 100644
index 0000000..06872a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fdiv_3.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fdiv
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.java
new file mode 100644
index 0000000..24d8a09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_3 {
+
+    public float run(float a, double b) {
+        return a/(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.j
new file mode 100644
index 0000000..a8e98ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fdiv_4.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fdiv
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.java
new file mode 100644
index 0000000..0c2cc97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_4 {
+
+    public float run(long a, float b) {
+        return (float)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.j
new file mode 100644
index 0000000..c273a5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fdiv_5.java
+.class public dxc/junit/opcodes/fdiv/jm/T_fdiv_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fdiv
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.java
new file mode 100644
index 0000000..f93de7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fdiv/jm/T_fdiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fdiv.jm;
+
+public class T_fdiv_5 {
+    
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/Test_fload.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/Test_fload.java
new file mode 100644
index 0000000..736ebbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/Test_fload.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload.jm.T_fload_1;
+import dxc.junit.opcodes.fload.jm.T_fload_1_w;
+import dxc.junit.opcodes.fload.jm.T_fload_2;
+import dxc.junit.opcodes.fload.jm.T_fload_2_w;
+
+public class Test_fload extends DxTestCase {
+
+    /*
+     * NORMAL fload VERSION
+     */
+
+    /**
+     * @title  Test fload 1
+     */
+    public void testN1() {
+        T_fload_1 t = new T_fload_1();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @title  Test fload 255
+     */
+    public void testN2() {
+        T_fload_2 t = new T_fload_2();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE fload VERSION
+     */
+
+    /**
+     * @title  Test fload 257
+     */
+    public void testN3() {
+        T_fload_1_w t = new T_fload_1_w();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @title  Test fload_w 1
+     */
+    public void testN4() {
+        T_fload_2_w t = new T_fload_2_w();
+        assertEquals(2f, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload.jm.T_fload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.j
new file mode 100644
index 0000000..d48d674
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 6
+    
+    fconst_2
+    fstore 4
+    fconst_1
+    fload 4
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.java
new file mode 100644
index 0000000..0659eb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_1 {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.j
new file mode 100644
index 0000000..5c3e03e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore 257
+    fconst_1
+    fload 257
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.java
new file mode 100644
index 0000000..0a75402
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_1_w {
+
+    public float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.j
new file mode 100644
index 0000000..affbbcc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore 255
+    fconst_1
+    fload 255
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.java
new file mode 100644
index 0000000..5f955cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_2 {
+
+      public float run() {
+          return 2f;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.j
new file mode 100644
index 0000000..8cfd4b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    fstore 1
+    fconst_1
+    fload_w 1
+    
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.java
new file mode 100644
index 0000000..06e678d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_2_w {
+
+      public float run() {
+          return 2f;
+      }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.j
new file mode 100644
index 0000000..b46e1ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.java
new file mode 100644
index 0000000..4a96c8d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.j
new file mode 100644
index 0000000..ca096aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 300
+
+    fload 300
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.java
new file mode 100644
index 0000000..e097e18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_3_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.j
new file mode 100644
index 0000000..0fb25c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_4.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.java
new file mode 100644
index 0000000..07f75b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.j
new file mode 100644
index 0000000..d58ae6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_4_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    fload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.java
new file mode 100644
index 0000000..8ae2258
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_4_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.j
new file mode 100644
index 0000000..94dc078
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_5.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.java
new file mode 100644
index 0000000..7f7dc3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.j
new file mode 100644
index 0000000..dbffaa5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_5_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    
+    fload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.java
new file mode 100644
index 0000000..0cabc57
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_5_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.j
new file mode 100644
index 0000000..b4c0270
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_6.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    fstore_0
+    
+    fload 0
+    fload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.java
new file mode 100644
index 0000000..8ce1234
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.j
new file mode 100644
index 0000000..32e9795
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_6_w.java
+.class public dxc/junit/opcodes/fload/jm/T_fload_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 300
+
+    fconst_1
+    fstore 260
+    
+    fload_w 260
+    fload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.java
new file mode 100644
index 0000000..5f61753
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload/jm/T_fload_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload.jm;
+
+public class T_fload_6_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/Test_fload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/Test_fload_0.java
new file mode 100644
index 0000000..b796eb7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/Test_fload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_0.jm.T_fload_0_1;
+import dxc.junit.opcodes.fload_0.jm.T_fload_0_6;
+
+public class Test_fload_0 extends DxTestCase {
+
+    /**
+     * @title  value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_0_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_0.jm.T_fload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.j
new file mode 100644
index 0000000..c7b69ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_0_1.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore_0
+    fconst_1
+    fload_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.java
new file mode 100644
index 0000000..a577960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.j
new file mode 100644
index 0000000..6a795e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_0_2.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.java
new file mode 100644
index 0000000..482b227
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.j
new file mode 100644
index 0000000..4b378f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_0_3.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.java
new file mode 100644
index 0000000..31db2e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.j
new file mode 100644
index 0000000..23f2597
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_0_4.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.java
new file mode 100644
index 0000000..c812def
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.j
new file mode 100644
index 0000000..f767cfd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_0_5.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    fstore_0
+    
+    fload_0
+    fload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.java
new file mode 100644
index 0000000..98ebafd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.j
new file mode 100644
index 0000000..dd42b7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_0_6.java
+.class public dxc/junit/opcodes/fload_0/jm/T_fload_0_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 1
+
+    fconst_2
+    fstore_0
+
+    fload_0
+    fload 0
+    fcmpl 
+    
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.java
new file mode 100644
index 0000000..1a337b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_0/jm/T_fload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_0.jm;
+
+public class T_fload_0_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/Test_fload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/Test_fload_1.java
new file mode 100644
index 0000000..91a6112
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/Test_fload_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_1.jm.T_fload_1_1;
+import dxc.junit.opcodes.fload_1.jm.T_fload_1_6;
+
+public class Test_fload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_1_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title (index must be no greater than the value
+     * of max_locals-1).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_1.jm.T_fload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.j
new file mode 100644
index 0000000..93f205e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1_1.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    fstore_1
+    fconst_1
+    fload_1
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.java
new file mode 100644
index 0000000..7e2f5c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.j
new file mode 100644
index 0000000..fabb478
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1_2.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.java
new file mode 100644
index 0000000..6e54dd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.j
new file mode 100644
index 0000000..f28c5bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1_3.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.java
new file mode 100644
index 0000000..10e5e25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.j
new file mode 100644
index 0000000..f0154b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1_4.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.java
new file mode 100644
index 0000000..cd6f66a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.j
new file mode 100644
index 0000000..6778df6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1_5.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    fstore_1
+    
+    fload_1
+    fload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.java
new file mode 100644
index 0000000..ba47f43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.j
new file mode 100644
index 0000000..8557f82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_1_6.java
+.class public dxc/junit/opcodes/fload_1/jm/T_fload_1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    fconst_2
+    fstore_1
+
+    fload_1
+    fload 1
+    fcmpl 
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.java
new file mode 100644
index 0000000..31d567b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_1/jm/T_fload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_1.jm;
+
+public class T_fload_1_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/Test_fload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/Test_fload_2.java
new file mode 100644
index 0000000..7a5bb47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/Test_fload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_2.jm.T_fload_2_1;
+import dxc.junit.opcodes.fload_2.jm.T_fload_2_6;
+
+public class Test_fload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_2_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title (index must be no greater than the value
+     * of max_locals-1).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_2.jm.T_fload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.j
new file mode 100644
index 0000000..e6fcb75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2_1.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 3
+    
+    fconst_2
+    fstore_2
+    fconst_1
+    fload_2
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.java
new file mode 100644
index 0000000..c4b1790
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.j
new file mode 100644
index 0000000..1d44d0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2_2.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.java
new file mode 100644
index 0000000..e86cd01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.j
new file mode 100644
index 0000000..4cc8b98
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2_3.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.java
new file mode 100644
index 0000000..09a7cdf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.j
new file mode 100644
index 0000000..9a1382d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2_4.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_2
+    
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.java
new file mode 100644
index 0000000..082bc9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.j
new file mode 100644
index 0000000..8e37b39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2_5.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    fconst_1
+    fstore_2
+    
+    fload_2
+    fload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.java
new file mode 100644
index 0000000..b3dcd24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.j
new file mode 100644
index 0000000..85d7c90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_2_6.java
+.class public dxc/junit/opcodes/fload_2/jm/T_fload_2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    fconst_2
+    fstore_2
+
+    fload_2
+    fload 2
+    fcmpl 
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.java
new file mode 100644
index 0000000..a584e41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_2/jm/T_fload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_2.jm;
+
+public class T_fload_2_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/Test_fload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/Test_fload_3.java
new file mode 100644
index 0000000..cd8d127
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/Test_fload_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fload_3.jm.T_fload_3_1;
+import dxc.junit.opcodes.fload_3.jm.T_fload_3_6;
+
+public class Test_fload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(2f, T_fload_3_1.run());
+    }
+
+    /**
+     * @title equality of fload_<n> and fload <n>
+     */
+    public void testN2() {
+        assertTrue(T_fload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title (index must be no greater than the value
+     * of max_locals-1).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fload_3.jm.T_fload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.j
new file mode 100644
index 0000000..abe83e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3_1.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 4
+    
+    fconst_2
+    fstore_3
+    fconst_1
+    fload_3
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.java
new file mode 100644
index 0000000..f4e434b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.j
new file mode 100644
index 0000000..7b06437
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3_2.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.java
new file mode 100644
index 0000000..896396d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.j
new file mode 100644
index 0000000..157316a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3_3.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.java
new file mode 100644
index 0000000..040faf7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.j
new file mode 100644
index 0000000..8408f9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3_4.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.java
new file mode 100644
index 0000000..240b801
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.j
new file mode 100644
index 0000000..e99cf7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3_5.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    fconst_1
+    fstore_3
+    
+    fload_3
+    fload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.java
new file mode 100644
index 0000000..c1a7754
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.j
new file mode 100644
index 0000000..f61cdc8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fload_3_6.java
+.class public dxc/junit/opcodes/fload_3/jm/T_fload_3_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    fconst_2
+    fstore_3
+
+    fload_3
+    fload 3
+    fcmpl 
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.java
new file mode 100644
index 0000000..8bbff07
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fload_3/jm/T_fload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fload_3.jm;
+
+public class T_fload_3_6 {
+
+    public static boolean run() {
+        float i = 2f;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/Test_fmul.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/Test_fmul.java
new file mode 100644
index 0000000..0bbf1ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/Test_fmul.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fmul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fmul.jm.T_fmul_1;
+
+public class Test_fmul extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_fmul_1 t = new T_fmul_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fmul.jm.T_fmul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.j
new file mode 100644
index 0000000..474a8c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fmul_1.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fmul
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.java
new file mode 100644
index 0000000..1a12d72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.j
new file mode 100644
index 0000000..35caf66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fmul_2.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fmul
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.java
new file mode 100644
index 0000000..7927d37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_2 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.j
new file mode 100644
index 0000000..e11cfe1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fmul_3.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fmul
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.java
new file mode 100644
index 0000000..7474a90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_3 {
+
+    public float run(float a, double b) {
+        return a*(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.j
new file mode 100644
index 0000000..1455bb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fmul_4.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fmul
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.java
new file mode 100644
index 0000000..0e5200b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_4 {
+
+    public float run(long a, float b) {
+        return (float)a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.j
new file mode 100644
index 0000000..ce62cc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fmul_5.java
+.class public dxc/junit/opcodes/fmul/jm/T_fmul_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fmul
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.java
new file mode 100644
index 0000000..9da82fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fmul/jm/T_fmul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fmul.jm;
+
+public class T_fmul_5 {
+    
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/Test_fneg.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/Test_fneg.java
new file mode 100644
index 0000000..d15f754
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/Test_fneg.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fneg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fneg.jm.T_fneg_1;
+
+public class Test_fneg extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-1f, t.run(1f));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(1f, t.run(-1f));
+    }
+
+    /**
+     * @title  Argument = +0
+     */
+    public void testN3() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-0f, t.run(+0f));
+    }
+
+    /**
+     * @title  Argument = -2.7
+     */
+    public void testN4() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(2.7f, t.run(-2.7f));
+    }
+
+    /**
+     * @title  Argument = Float.NaN
+     */
+    public void testB1() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(Float.NaN, t.run(Float.NaN));
+    }
+
+    /**
+     * @title  Argument = Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Argument = Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-3.4028235E38f, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Float.MIN
+     */
+    public void testB5() {
+        T_fneg_1 t = new T_fneg_1();
+        assertEquals(-1.4E-45f, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fneg.jm.T_fneg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.j
new file mode 100644
index 0000000..ee7b958
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_1.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 1
+    .limit locals 2
+    fload_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.java
new file mode 100644
index 0000000..ed652f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_1 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.j
new file mode 100644
index 0000000..3d91051
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fneg_2.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 1
+    .limit locals 2
+    ;fload_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.java
new file mode 100644
index 0000000..9872e07
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_2 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.j
new file mode 100644
index 0000000..0ef20fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fneg_3.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 2
+    .limit locals 3
+    ;fload_1
+    dconst_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.java
new file mode 100644
index 0000000..8ebcf38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_3 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.j
new file mode 100644
index 0000000..1e8eaad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fneg_4.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 2
+    .limit locals 3
+    ;fload_1
+    lconst_1
+    fneg
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.java
new file mode 100644
index 0000000..97504d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_4 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.j
new file mode 100644
index 0000000..48e5e3a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fneg_5.java
+.class public dxc/junit/opcodes/fneg/jm/T_fneg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(F)F
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    fneg
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.java
new file mode 100644
index 0000000..c46a002
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fneg/jm/T_fneg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fneg.jm;
+
+public class T_fneg_5 {
+    
+    public float run(float d) {
+        return -d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/Test_frem.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/Test_frem.java
new file mode 100644
index 0000000..4cf0a68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/Test_frem.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.frem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.frem.jm.T_frem_1;
+
+public class Test_frem extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN2() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN3() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title  Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_frem_1 t = new T_frem_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.frem.jm.T_frem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.j
new file mode 100644
index 0000000..f8bbda0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_frem_1.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    frem
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.java
new file mode 100644
index 0000000..e96b4b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_1 {
+
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.j
new file mode 100644
index 0000000..80e3e21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_frem_2.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    frem
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.java
new file mode 100644
index 0000000..86b1230
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_2 {
+
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.j
new file mode 100644
index 0000000..0c55f61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_frem_3.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    frem
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.java
new file mode 100644
index 0000000..8047356
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_3 {
+
+    public float run(float a, double b) {
+        return a%(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.j
new file mode 100644
index 0000000..d179b19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_frem_4.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    frem
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.java
new file mode 100644
index 0000000..ff87ad6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_4 {
+
+    public float run(long a, float b) {
+        return (float)a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.j
new file mode 100644
index 0000000..c82332f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_frem_5.java
+.class public dxc/junit/opcodes/frem/jm/T_frem_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    frem
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.java
new file mode 100644
index 0000000..9f4f055
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/frem/jm/T_frem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.frem.jm;
+
+public class T_frem_5 {
+    
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/Test_freturn.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/Test_freturn.java
new file mode 100644
index 0000000..a109dfd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/Test_freturn.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.freturn.jm.T_freturn_1;
+import dxc.junit.opcodes.freturn.jm.T_freturn_6;
+import dxc.junit.opcodes.freturn.jm.T_freturn_7;
+import dxc.junit.opcodes.freturn.jm.T_freturn_8;
+import dxc.junit.opcodes.freturn.jm.T_freturn_9;
+
+public class Test_freturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_freturn_1 t = new T_freturn_1();
+        assertEquals(123456f, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_freturn_6 t = new T_freturn_6();
+        assertEquals(123456f, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by freturn
+     */
+    public void testN3() {
+        assertTrue(T_freturn_7.execute());
+    }
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_freturn_8 t = new T_freturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_freturn_9 t = new T_freturn_9();
+        try {
+            assertEquals(1f, t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.freturn.jm.T_freturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.j
new file mode 100644
index 0000000..e194867
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_1.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    ldc 123456.0f
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.java
new file mode 100644
index 0000000..cbc1490
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_1 {
+
+    public float run() {
+        return 123456f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.j
new file mode 100644
index 0000000..0f73349
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_10.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()F
+    .limit stack 1
+    .limit locals 0
+    fconst_1
+    freturn
+.end method
+
+
+
+.method public run()F
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/freturn/jm/T_freturn_10/test()F
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.java
new file mode 100644
index 0000000..caa1933
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_10 {
+    
+    private static float test()    {
+        return 1f;
+    }
+    
+    public float run() {
+        return test();
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.j
new file mode 100644
index 0000000..8143890
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_11.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.java
new file mode 100644
index 0000000..303e939
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_11 {
+    
+    public float run() {
+        return 0f;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.j
new file mode 100644
index 0000000..685f3f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_2.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    fconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.java
new file mode 100644
index 0000000..6589925
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_2 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.j
new file mode 100644
index 0000000..b1109da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_3.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    fconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.java
new file mode 100644
index 0000000..202091d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_3 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.j
new file mode 100644
index 0000000..7da6dfb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_4.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    ;fconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.java
new file mode 100644
index 0000000..e0503e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_4 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.j
new file mode 100644
index 0000000..21c85b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_5.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.java
new file mode 100644
index 0000000..e5018c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_5 {
+
+    public float run() {
+        return 0f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.j
new file mode 100644
index 0000000..7e7ba2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.j
@@ -0,0 +1,90 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_6.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    .limit locals 6
+    .limit stack 6
+    
+    fconst_1
+    fstore_1
+    fconst_2
+    fstore_2
+    ldc 3.0f
+    fstore 3
+    
+    ldc 4.0f
+    
+    invokestatic dxc/junit/opcodes/freturn/jm/T_freturn_6/test()F
+    
+    ldc 4444.0f
+    fcmpl
+    ifne Label1
+    
+    ldc 4.0f
+    fcmpl
+    ifne Label0
+    
+    fload_1
+    fconst_1
+    fcmpl
+    ifne Label0
+    
+    fload_2
+    fconst_2
+    fcmpl
+    ifne Label0
+    
+    fload_3
+    ldc 3.0f
+    fcmpl
+    ifne Label0    
+    
+    ldc 123456.0f
+    freturn
+
+Label1:
+    pop
+Label0:
+    fconst_0
+    freturn
+
+.end method
+
+.method private static test()F
+    .limit locals 4
+    .limit stack 4
+    
+    ldc 1111.0f
+    fstore_1
+    ldc 2222.0f
+    fstore_2
+    ldc 3333.0f
+    fstore_3
+    
+    ldc 5555.0f
+    
+    ldc 4444.0f
+    freturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.java
new file mode 100644
index 0000000..a6fad35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_6 {
+
+    public float run() {
+        return 123456f;
+    }
+    
+    private static float test() {
+        float a = 1111f;
+        float b = 2222f;
+        float c = 3333f;
+        return 4444f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.j
new file mode 100644
index 0000000..afa8119
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.j
@@ -0,0 +1,166 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_7.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value F
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    fconst_0
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/freturn/jm/T_freturn_7/test()F
+    pop
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()F
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+    dup
+    fstore_1
+
+    fconst_1
+    fadd
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+
+    fload_1
+    fconst_1
+    fadd
+    fstore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    fload_1
+    aload_0
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+    fcmpl
+    ifeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.freturn.jm.T_freturn_7.failed Z
+
+Label0:
+    fload_1
+    freturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/freturn/jm/T_freturn_7
+    dup
+    invokespecial dxc/junit/opcodes/freturn/jm/T_freturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.value F
+    ldc 2000.0f
+    fcmpl
+    ifne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.freturn.jm.T_freturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.java
new file mode 100644
index 0000000..af11cd1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_7.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    float value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized float test()    {
+        value++;
+        float c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_freturn_7 test = new T_freturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.j
new file mode 100644
index 0000000..e1e6f78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_8.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()F
+    .limit stack 1
+    aload_0
+    monitorexit
+       fconst_0
+    freturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/freturn/jm/T_freturn_8/test()F
+    pop
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.java
new file mode 100644
index 0000000..230931d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_8 {
+    
+    private synchronized float test() {
+        return 0f;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.j
new file mode 100644
index 0000000..e492ac2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_freturn_9.java
+.class public dxc/junit/opcodes/freturn/jm/T_freturn_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    fconst_1
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.java
new file mode 100644
index 0000000..d32b8a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/freturn/jm/T_freturn_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.freturn.jm;
+
+public class T_freturn_9 {
+    
+    public float run() {
+        return 1f;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/Test_fstore.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/Test_fstore.java
new file mode 100644
index 0000000..1c074f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/Test_fstore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore.jm.T_fstore_1;
+import dxc.junit.opcodes.fstore.jm.T_fstore_1_w;
+import dxc.junit.opcodes.fstore.jm.T_fstore_5;
+import dxc.junit.opcodes.fstore.jm.T_fstore_5_w;
+
+public class Test_fstore extends DxTestCase {
+
+    /*
+     * NORMAL fstore VERSION
+     */
+
+    /**
+     * @title  fstore 0
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_1.run());
+    }
+
+    /**
+     * @title  fstore 255
+     */
+    public void testN2() {
+        assertEquals(2f, T_fstore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1)
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE fstore VERSION
+     */
+
+    /**
+     * @title  fstore_w 0
+     */
+    public void testN3() {
+        assertEquals(2f, T_fstore_1_w.run());
+    }
+
+    /**
+     * @title  fstore 257
+     */
+    public void testN4() {
+        assertEquals(2f, T_fstore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore.jm.T_fstore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.j
new file mode 100644
index 0000000..ddbbeaa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_1.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore 0
+    fconst_1
+    fload 0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.java
new file mode 100644
index 0000000..546394b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_1 {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.j
new file mode 100644
index 0000000..f3a2c2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_1_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore_w 0
+    fconst_1
+    fload 0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.java
new file mode 100644
index 0000000..cba5c82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_1_w {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.j
new file mode 100644
index 0000000..6eb7c7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_2.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.java
new file mode 100644
index 0000000..c535d34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.j
new file mode 100644
index 0000000..20933b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_2_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.java
new file mode 100644
index 0000000..0664597
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_2_w {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.j
new file mode 100644
index 0000000..75bc312
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_3.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.java
new file mode 100644
index 0000000..9fe4d51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.j
new file mode 100644
index 0000000..a401cf0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_3_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.java
new file mode 100644
index 0000000..7b32dfe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_3_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.j
new file mode 100644
index 0000000..7a7ad92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_4.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.java
new file mode 100644
index 0000000..97b94bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.j
new file mode 100644
index 0000000..afbd8e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_4_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.java
new file mode 100644
index 0000000..0e658e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_4_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.j
new file mode 100644
index 0000000..818c41f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_5.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore 255
+    fconst_1
+    fload 255
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.java
new file mode 100644
index 0000000..9b76887
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_5 {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.j
new file mode 100644
index 0000000..ccc6f4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_5_w.java
+.class public dxc/junit/opcodes/fstore/jm/T_fstore_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 300
+    
+    fconst_2
+    fstore_w 257
+    fconst_1
+    fload 257
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.java
new file mode 100644
index 0000000..119ad9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore/jm/T_fstore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore.jm;
+
+public class T_fstore_5_w {
+
+    public static float run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/Test_fstore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/Test_fstore_0.java
new file mode 100644
index 0000000..e512d4e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/Test_fstore_0.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_0.jm.T_fstore_0_1;
+import dxc.junit.opcodes.fstore_0.jm.T_fstore_0_5;
+
+public class Test_fstore_0 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_0_1.run());
+    }
+
+    /**
+     * @title equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_0.jm.T_fstore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_0.jm.T_fstore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_0.jm.T_fstore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.j
new file mode 100644
index 0000000..288c55e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_0_1.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 1
+    
+    fconst_2
+    fstore_0
+    fconst_1
+    fload_0
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.java
new file mode 100644
index 0000000..a098e2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.j
new file mode 100644
index 0000000..85b0dd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_0_2.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    fstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.java
new file mode 100644
index 0000000..60d6932
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.j
new file mode 100644
index 0000000..7f0a48a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_0_3.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.java
new file mode 100644
index 0000000..28ae501
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.j
new file mode 100644
index 0000000..daeb302
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_0_4.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.java
new file mode 100644
index 0000000..9ddb0f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.j
new file mode 100644
index 0000000..bc5488f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_0_5.java
+.class public dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    fconst_2
+    fstore_0
+    fload_0
+
+    fconst_2
+    fstore 0
+    fload_0
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.java
new file mode 100644
index 0000000..caf98c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_0/jm/T_fstore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_0.jm;
+
+public class T_fstore_0_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/Test_fstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/Test_fstore_1.java
new file mode 100644
index 0000000..1cd1865
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/Test_fstore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_1.jm.T_fstore_1_1;
+import dxc.junit.opcodes.fstore_1.jm.T_fstore_1_5;
+
+public class Test_fstore_1 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_1_1.run());
+    }
+
+    /**
+     * @title equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_1.jm.T_fstore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_1.jm.T_fstore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_1.jm.T_fstore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.j
new file mode 100644
index 0000000..4f5183e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_1_1.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 2
+    
+    fconst_2
+    fstore_1
+    fconst_1
+    fload_1
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.java
new file mode 100644
index 0000000..1f479a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.j
new file mode 100644
index 0000000..438637a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_1_2.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    fstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.java
new file mode 100644
index 0000000..612dead
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.j
new file mode 100644
index 0000000..17895ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_1_3.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.java
new file mode 100644
index 0000000..f202684
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.j
new file mode 100644
index 0000000..54b2fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_1_4.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.java
new file mode 100644
index 0000000..2aac2d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.j
new file mode 100644
index 0000000..8f3a4cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_1_5.java
+.class public dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    fconst_2
+    fstore_1
+    fload_1
+
+    fconst_2
+    fstore 1
+    fload_1
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.java
new file mode 100644
index 0000000..f7aacea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_1/jm/T_fstore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_1.jm;
+
+public class T_fstore_1_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/Test_fstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/Test_fstore_2.java
new file mode 100644
index 0000000..02956aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/Test_fstore_2.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_2.jm.T_fstore_2_1;
+import dxc.junit.opcodes.fstore_2.jm.T_fstore_2_5;
+
+public class Test_fstore_2 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_2_1.run());
+    }
+
+    /**
+     * @title  equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_2_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_2.jm.T_fstore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_2.jm.T_fstore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_2.jm.T_fstore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.j
new file mode 100644
index 0000000..544718b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_2_1.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 3
+    
+    fconst_2
+    fstore_2
+    fconst_1
+    fload_2
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.java
new file mode 100644
index 0000000..af93f51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.j
new file mode 100644
index 0000000..9ef2c53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_2_2.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 2
+
+    fstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.java
new file mode 100644
index 0000000..ad6e139
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.j
new file mode 100644
index 0000000..931c9cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_2_3.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    fstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.java
new file mode 100644
index 0000000..fef360e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.j
new file mode 100644
index 0000000..1a28180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_2_4.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    fstore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.java
new file mode 100644
index 0000000..b164180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.j
new file mode 100644
index 0000000..51e53ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_2_5.java
+.class public dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    fconst_2
+    fstore_2
+    fload_2
+
+    fconst_2
+    fstore 2
+    fload_2
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.java
new file mode 100644
index 0000000..28956f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_2/jm/T_fstore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_2.jm;
+
+public class T_fstore_2_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/Test_fstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/Test_fstore_3.java
new file mode 100644
index 0000000..ef6d0a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/Test_fstore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fstore_3.jm.T_fstore_3_1;
+import dxc.junit.opcodes.fstore_3.jm.T_fstore_3_5;
+
+public class Test_fstore_3 extends DxTestCase {
+
+    /**
+     * @title value is stored
+     */
+    public void testN1() {
+        assertEquals(2f, T_fstore_3_1.run());
+    }
+
+    /**
+     * @title equality of fstore_<n> and fstore <n>
+     */
+    public void testN2() {
+        assertTrue(T_fstore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_3.jm.T_fstore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_3.jm.T_fstore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fstore_3.jm.T_fstore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.j
new file mode 100644
index 0000000..4aba4f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_3_1.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()F
+    .limit stack 2
+    .limit locals 4
+    
+    fconst_2
+    fstore_3
+    fconst_1
+    fload_3
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.java
new file mode 100644
index 0000000..5d763a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_1 {
+
+    public static float run() {
+        return 2f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.j
new file mode 100644
index 0000000..554ba64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_3_2.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 3
+
+    fstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.java
new file mode 100644
index 0000000..54afaa2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.j
new file mode 100644
index 0000000..3b3c30e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_3_3.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    fstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.java
new file mode 100644
index 0000000..17de90e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.j
new file mode 100644
index 0000000..05eb66e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_3_4.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    lconst_1
+    fstore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.java
new file mode 100644
index 0000000..145fc22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.j
new file mode 100644
index 0000000..2904edd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fstore_3_5.java
+.class public dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    fconst_2
+    fstore_3
+    fload_3
+
+    fconst_2
+    fstore 3
+    fload_3
+    
+    fcmpl
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.java
new file mode 100644
index 0000000..1bf3a26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fstore_3/jm/T_fstore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fstore_3.jm;
+
+public class T_fstore_3_5 {
+
+    public static boolean run() {
+        float i = 2;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/Test_fsub.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/Test_fsub.java
new file mode 100644
index 0000000..897cd58
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/Test_fsub.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fsub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.fsub.jm.T_fsub_1;
+
+public class Test_fsub extends DxTestCase {
+
+    /**
+     * @title  Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title  Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title  Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title  Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title  Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title  Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title  Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_fsub_1 t = new T_fsub_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.fsub.jm.T_fsub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.j
new file mode 100644
index 0000000..649dee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fsub_1.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    fload_2
+    fsub
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.java
new file mode 100644
index 0000000..2038dfa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.j
new file mode 100644
index 0000000..e4afbf1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fsub_2.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+    fload_1
+    ; fload_2    
+    fsub
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.java
new file mode 100644
index 0000000..7971658
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_2 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.j
new file mode 100644
index 0000000..02633be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fsub_3.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FD)F
+    .limit stack 3
+    .limit locals 5
+    fload_1
+    dload_2    
+    fsub
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.java
new file mode 100644
index 0000000..9cdbf97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_3 {
+
+    public float run(float a, double b) {
+        return a-(float)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.j
new file mode 100644
index 0000000..47c7ba9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fsub_4.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JF)F
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2f
+    fload_3
+    fsub
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.java
new file mode 100644
index 0000000..86de9bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_4 {
+
+    public float run(long a, float b) {
+        return (float)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.j
new file mode 100644
index 0000000..26bb805
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_fsub_5.java
+.class public dxc/junit/opcodes/fsub/jm/T_fsub_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(FF)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    fload_2
+    fsub
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.java
new file mode 100644
index 0000000..7687dc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/fsub/jm/T_fsub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.fsub.jm;
+
+public class T_fsub_5 {
+    
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/Test_getfield.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/Test_getfield.java
new file mode 100644
index 0000000..39f925f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/Test_getfield.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.getfield.jm.T_getfield_1;
+import dxc.junit.opcodes.getfield.jm.T_getfield_10;
+import dxc.junit.opcodes.getfield.jm.T_getfield_11;
+import dxc.junit.opcodes.getfield.jm.T_getfield_12;
+import dxc.junit.opcodes.getfield.jm.T_getfield_14;
+import dxc.junit.opcodes.getfield.jm.T_getfield_16;
+import dxc.junit.opcodes.getfield.jm.T_getfield_17;
+import dxc.junit.opcodes.getfield.jm.T_getfield_2;
+import dxc.junit.opcodes.getfield.jm.T_getfield_5;
+import dxc.junit.opcodes.getfield.jm.T_getfield_6;
+import dxc.junit.opcodes.getfield.jm.T_getfield_7;
+import dxc.junit.opcodes.getfield.jm.T_getfield_8;
+import dxc.junit.opcodes.getfield.jm.T_getfield_9;
+import dxc.junit.opcodes.getfield.jm.TestStubs;
+
+public class Test_getfield extends DxTestCase {
+    private int TestStubField = 123;
+    protected int TestStubFieldP = 0;
+
+    private int privateInt = 456;
+    
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_getfield_1 t = new T_getfield_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_getfield_2 t = new T_getfield_2();
+        assertEquals(123d, t.run());
+    }
+
+    /**
+     * @title  access protected field from subclass
+     */
+    public void testN3() {
+     // @uses dxc.junit.opcodes.getfield.jm.T_getfield_1
+        T_getfield_11 t = new T_getfield_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title  assignment compatible references
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.getfield.jm.TChild        
+        // @uses dxc.junit.opcodes.getfield.jm.TSuper        
+        T_getfield_14 t = new T_getfield_14();
+        assertEquals(0, t.run().compareTo("abc"));
+    }
+
+    /**
+     * @title  attempt to access static field
+     */
+    public void testE1() {
+        // @uses dxc.junit.opcodes.getstatic.jm.T_getstatic_1
+        try {
+            T_getfield_5 t = new T_getfield_5();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        } 
+    }
+
+    /**
+     * @title  attempt to access of non-accessible private field
+     */
+    public void testE2() {
+        try {
+            T_getfield_6 t = new T_getfield_6();
+            int res = t.run();
+            System.out.println("res:"+res);
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            // need to include the constructor call into the try-catch block,
+            // since class resolution can take place at any time.
+            // (not only when t.run() is called
+            T_getfield_7 t = new T_getfield_7();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+            T_getfield_8 t = new T_getfield_8();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  attempt to get int from float field
+     */
+    public void testE5() {
+        try {
+            T_getfield_10 t = new T_getfield_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE6() {
+        T_getfield_9 t = new T_getfield_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    //FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  attempt to read superclass' private field from subclass
+     * in same package
+     * 
+     * FIXME: this seems to be a bug in JDK 1.5?
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.getfield.jm.T_getfield_1
+        try {
+            T_getfield_12 t = new T_getfield_12();
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  attempt to read private field of a class which was passed
+     * as argument
+     */
+    public void testE9() {
+        // @uses dxc.junit.opcodes.getfield.jm.TestStubs
+        try {
+            T_getfield_17 t = new T_getfield_17();
+            t.run(new dxc.junit.opcodes.getfield.jm.TestStubs());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    
+
+    /**
+     * @title  attempt to access of non-accessible protected field
+     */
+    public void testE8() {
+        try {
+            T_getfield_16 t = new T_getfield_16();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool type
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title assignment incompatible references
+     */
+    public void testVFE4() {
+        // @uses dxc.junit.opcodes.getfield.jm.TChild        
+        // @uses dxc.junit.opcodes.getfield.jm.TSuper        
+        try {
+            Class.forName("dxc.junit.opcodes.getfield.jm.T_getfield_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.j
new file mode 100644
index 0000000..a669ff4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_1.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_1
+.super java/lang/Object
+
+.field public i1 I
+.field protected p1 I
+.field private pvt1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_1.i1 I
+
+    aload_0
+    bipush 10
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_1.p1 I
+
+    aload_0
+    bipush 20
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_1.pvt1 I
+
+    return
+
+.end method
+
+
+
+.method public run()I
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_1.i1 I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.java
new file mode 100644
index 0000000..2d0b750
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_1 {
+    public int i1 = 5;
+    protected int p1 = 10;
+    private int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.j
new file mode 100644
index 0000000..0790ed3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_10.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_10
+.super java/lang/Object
+
+.field public i1 F
+
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0    
+    fconst_1
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_10.i1 F
+    
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_10.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.java
new file mode 100644
index 0000000..ba7aa3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_10 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.j
new file mode 100644
index 0000000..6f16f55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_11.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_11
+.super dxc/junit/opcodes/getfield/jm/T_getfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getfield/jm/T_getfield_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_1.p1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.java
new file mode 100644
index 0000000..1fefaa2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_11 extends T_getfield_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.j
new file mode 100644
index 0000000..5c535f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_12.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_12
+.super dxc/junit/opcodes/getfield/jm/T_getfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getfield/jm/T_getfield_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+
+    aload_0    
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_1.pvt1 I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.java
new file mode 100644
index 0000000..6d92fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_12 extends T_getfield_1 {
+
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.cfh
new file mode 100644
index 0000000..6ab7906
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.cfh
@@ -0,0 +1,234 @@
+//@class:dxc/junit/opcodes/getfield/jm/T_getfield_13
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0013
+// .  .  
+   00 13 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 5, h: 0002: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 3, h: 0004: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 46, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 06 
+    // parsed:, offset 51, len 6, h: 0006: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 57, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 64, len 4, h: 0008: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 68, len 13, h: 0009: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 81, len 3, h: 000a: type{dxc.junit.opcodes.getfield.jm.T_getfield_13}
+    // .  .  .  
+       07 00 11 
+    // parsed:, offset 84, len 5, h: 000b: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 0f 00 08 
+    // parsed:, offset 89, len 6, h: 000c: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 95, len 6, h: 000d: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 101, len 5, h: 000e: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 04 00 05 
+    // parsed:, offset 106, len 5, h: 000f: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 111, len 21, h: 0010: utf8{"T_getfield_13.java"}
+    // .  .  .  T  _  g  e  t  f  i  e  l  d  _  1  3  .  j  a  v  a  
+       01 00 12 54 5f 67 65 74 66 69 65 6c 64 5f 31 33 2e 6a 61 76 61 
+    // parsed:, offset 132, len 46, h: 0011: utf8{"dxc/junit/opcodes/getfield/jm/T_getfield_13"}
+    // .  .  +  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  f  i  e  l  d  /  j  m  /  T  _  g  e  t  f  i  e  l  d  _  1  3  
+       01 00 2b 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 67 65 74 66 69 65 6c 64 5f 31 33 
+    // parsed:, offset 178, len 5, h: 0012: field{dxc.junit.opcodes.getfield.jm.T_getfield_13.i1:I}
+    // .  .  .  .  .  
+       09 00 0a 00 0b 
+// parsed:, offset 183, len 0, h: end constant_pool
+// parsed:, offset 183, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 185, len 2, h: this_class: type{dxc.junit.opcodes.getfield.jm.T_getfield_13}
+// .  .  
+   00 0a 
+// parsed:, offset 187, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 04 
+// parsed:, offset 189, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 191, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 193, len:91,desc: I
+// parsed:, offset 193, len 0, h:  fields[0]: 
+    // parsed:, offset 193, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 2, h: name: i1
+    // .  .  
+       00 0f 
+    // parsed:, offset 197, len 2, h: descriptor: I
+    // .  .  
+       00 08 
+    // parsed:, offset 199, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 201, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 201, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 203, len:81,desc: ()V
+// parsed:, offset 203, len 0, h:  methods[0]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 207, len 2, h: descriptor: ()V
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 213, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 217, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 219, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 221, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0e 
+        // parsed:, offset 4, len 1, h: 0004: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 5, len 1, h: 0005: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 6, len 3, h: 0006: putfield field{dxc.junit.opcodes.getfield.jm.T_getfield_13.i1:I}
+        // .  .  .  
+           b5 00 12 
+        // parsed:, offset 9, len 1, h: 0009: return
+        // .  
+           b1 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 240, len:44,desc: ()I
+// parsed:, offset 240, len 0, h:  methods[1]: 
+    // parsed:, offset 240, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 242, len 2, h: name: run
+    // .  .  
+       00 0d 
+    // parsed:, offset 244, len 2, h: descriptor: ()I
+    // .  .  
+       00 0c 
+    // parsed:, offset 246, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 248, len 0, h:  attributes[0]: 
+        // parsed:, offset 248, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 250, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 254, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 256, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 258, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 02 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 4, len 3, h: 0004: getfield field{dxc.junit.opcodes.getfield.jm.T_getfield_13.i1:I}
+        // .  .  .  
+//@mod           b4 00 12 
+           b4 00 02
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 09 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_getfield_13.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.j
new file mode 100644
index 0000000..de3b816
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_13.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_13
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_13.i1 I
+    return
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    
+    ldc 3.14
+    pop
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_13.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.java
new file mode 100644
index 0000000..3087341
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_13 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.j
new file mode 100644
index 0000000..1b8b562
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_14.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_14
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/getfield/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/getfield/jm/TChild/<init>()V
+    astore_1
+
+    aload_1
+    getfield dxc.junit.opcodes.getfield.jm.TSuper.s Ljava/lang/String;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.java
new file mode 100644
index 0000000..ec06180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_14 {
+
+    public String run() {
+        //TChild c = new TChild();
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.j
new file mode 100644
index 0000000..5c5d5a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_15.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_15
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/getfield/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/getfield/jm/TSuper/<init>()V
+    astore_1
+
+    aload_1
+    getfield dxc.junit.opcodes.getfield.jm.TChild.o Ljava/lang/Object;
+
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.java
new file mode 100644
index 0000000..7424e02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_15.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_15 {
+
+    public Object run() {
+        TChild s = new TChild();
+        return s.o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.j
new file mode 100644
index 0000000..9c17d05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_16.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+
+    new dxc/junit/opcodes/getfield/Test_getfield
+    dup
+    invokespecial dxc/junit/opcodes/getfield/Test_getfield/<init>()V
+
+    getfield dxc.junit.opcodes.getfield.Test_getfield.TestStubFieldP I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.java
new file mode 100644
index 0000000..b7114d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_16 {
+
+    public int run() {
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.j
new file mode 100644
index 0000000..2ef0aa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_17.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_17
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ldxc/junit/opcodes/getfield/jm/TestStubs;)I
+    .limit locals 2
+    aload_1
+    getfield dxc.junit.opcodes.getfield.jm.TestStubs.privateInt I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.java
new file mode 100644
index 0000000..95d4f75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+
+public class T_getfield_17 {
+
+    public int run(TestStubs t) {
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.j
new file mode 100644
index 0000000..9082c3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_2.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_2
+.super java/lang/Object
+
+.field public val D
+
+.method public <init>()V
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0    
+    ldc2_w 123.0
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_2.val D
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_2.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.java
new file mode 100644
index 0000000..36c976a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_2 {
+
+    public double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.j
new file mode 100644
index 0000000..12c523e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_3.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_3
+.super java/lang/Object
+
+.field public val D
+
+.method public <init>()V
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    ldc2_w 123.0
+    putstatic dxc.junit.opcodes.getfield.jm.T_getfield_3.val D
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_3.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.java
new file mode 100644
index 0000000..7b91429
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_3 {
+
+    public double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.cfh
new file mode 100644
index 0000000..e6a6403
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.cfh
@@ -0,0 +1,225 @@
+//@class:dxc/junit/opcodes/getfield/jm/T_getfield_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 62, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 68, len 20, h: 0007: utf8{"T_getfield_4.java"}
+    // .  .  .  T  _  g  e  t  f  i  e  l  d  _  4  .  j  a  v  a  
+       01 00 11 54 5f 67 65 74 66 69 65 6c 64 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 88, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0e 
+    // parsed:, offset 93, len 5, h: 0009: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 98, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 105, len 45, h: 000b: utf8{"dxc/junit/opcodes/getfield/jm/T_getfield_4"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  f  i  e  l  d  /  j  m  /  T  _  g  e  t  f  i  e  l  d  _  4  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 67 65 74 66 69 65 6c 64 5f 34 
+    // parsed:, offset 150, len 3, h: 000c: type{dxc.junit.opcodes.getfield.jm.T_getfield_4}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 153, len 5, h: 000d: field{dxc.junit.opcodes.getfield.jm.T_getfield_4.i1:I}
+    // .  .  .  .  .  
+       09 00 0c 00 11 
+    // parsed:, offset 158, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 164, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 167, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 171, len 5, h: 0011: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 09 00 10 
+// parsed:, offset 176, len 0, h: end constant_pool
+// parsed:, offset 176, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 178, len 2, h: this_class: type{dxc.junit.opcodes.getfield.jm.T_getfield_4}
+// .  .  
+   00 0c 
+// parsed:, offset 180, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 182, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 184, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 186, len:88,desc: I
+// parsed:, offset 186, len 0, h:  fields[0]: 
+    // parsed:, offset 186, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 188, len 2, h: name: i1
+    // .  .  
+       00 09 
+    // parsed:, offset 190, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 192, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 194, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 194, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 196, len:78,desc: ()V
+// parsed:, offset 196, len 0, h:  methods[0]: 
+    // parsed:, offset 196, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 200, len 2, h: descriptor: ()V
+    // .  .  
+       00 0e 
+    // parsed:, offset 202, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 0, h:  attributes[0]: 
+        // parsed:, offset 204, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 206, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 210, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 212, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 214, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 5, len 1, h: 0005: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 6, len 3, h: 0006: putfield field{dxc.junit.opcodes.getfield.jm.T_getfield_4.i1:I}
+        // .  .  .  
+           b5 00 0d 
+        // parsed:, offset 9, len 1, h: 0009: return
+        // .  
+           b1 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 229, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 231, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 233, len:41,desc: ()I
+// parsed:, offset 233, len 0, h:  methods[1]: 
+    // parsed:, offset 233, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 235, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 237, len 2, h: descriptor: ()I
+    // .  .  
+       00 05 
+    // parsed:, offset 239, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 0, h:  attributes[0]: 
+        // parsed:, offset 241, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 243, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 247, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 249, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 251, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: getfield field{dxc.junit.opcodes.getfield.jm.T_getfield_4.i1:I}
+        // .  .  .  
+//@mod           b4 00 0d 
+           b4 01 0d 
+        // parsed:, offset 4, len 1, h: 0004: ireturn
+        // .  
+           ac 
+        // parsed:, offset 260, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 262, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 264, len 0, h: end attributes[0] 
+// parsed:, offset 264, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 264, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 266, len 0, h:  attributes[0]: 
+    // parsed:, offset 266, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 268, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 272, len 2, h: source: utf8{"T_getfield_4.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.j
new file mode 100644
index 0000000..815e7a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_4.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_4
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_4.i1 I
+    return
+    
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_4.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.java
new file mode 100644
index 0000000..2c9c301
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_4 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.j
new file mode 100644
index 0000000..172f791
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_5.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_5
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.i1 I
+    
+    return
+.end method
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_5.i1 I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.java
new file mode 100644
index 0000000..34ca783
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_5 {
+
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.j
new file mode 100644
index 0000000..dcf9a08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_6.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+
+    new dxc/junit/opcodes/getfield/Test_getfield
+    dup
+    invokespecial dxc/junit/opcodes/getfield/Test_getfield/<init>()V
+
+    getfield dxc.junit.opcodes.getfield.Test_getfield.TestStubField I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.java
new file mode 100644
index 0000000..07ab1b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_6 {
+
+    public int run() {
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.j
new file mode 100644
index 0000000..ebffccc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_7.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_7
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_7.i1 I
+    return
+.end method
+
+.method public run()I
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_7abc.i1 I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.java
new file mode 100644
index 0000000..ad0b3a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_7 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.j
new file mode 100644
index 0000000..1d3e3d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_8.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_8
+.super java/lang/Object
+
+.field public i1 I
+
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_8.i1 I
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    
+    aload_0
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_8.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.java
new file mode 100644
index 0000000..884d068
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_8 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.j b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.j
new file mode 100644
index 0000000..b2fd59d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getfield_9.java
+.class public dxc/junit/opcodes/getfield/jm/T_getfield_9
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0    
+    iconst_5
+    putfield dxc.junit.opcodes.getfield.jm.T_getfield_9.i1 I
+    
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+;    aload_0
+    aconst_null
+    getfield dxc.junit.opcodes.getfield.jm.T_getfield_9.i1 I
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.java
new file mode 100644
index 0000000..f2868db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/T_getfield_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+public class T_getfield_9 {
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/TestStubs.java
new file mode 100644
index 0000000..09b654f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getfield/jm/TestStubs.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getfield.jm;
+
+
+
+class TSuper {
+    public String s = "abc";
+}
+
+class TChild extends TSuper {
+    public Object o = null;    
+}
+
+public class TestStubs {
+    private int privateInt = 456;
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/TestStubs.java
new file mode 100644
index 0000000..b681d91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic;
+
+public class TestStubs {
+    private static int TestStubField = 50;
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/Test_getstatic.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/Test_getstatic.java
new file mode 100644
index 0000000..290cc0e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/Test_getstatic.java
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_1;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_10;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_11;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_12;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_2;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_5;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_6;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_7;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_8;
+import dxc.junit.opcodes.getstatic.jm.T_getstatic_9;
+
+public class Test_getstatic extends DxTestCase {
+    
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_getstatic_1 t = new T_getstatic_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_getstatic_2 t = new T_getstatic_2();
+        assertEquals(123d, t.run());
+    }
+
+    /**
+     * @title  access protected field from subclass
+     */
+    public void testN3() {
+        // @uses dxc.junit.opcodes.getstatic.jm.T_getstatic_1
+        T_getstatic_11 t = new T_getstatic_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title  attempt to access non-static field
+     */
+    public void testE1() {
+        T_getstatic_5 t = new T_getstatic_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  attempt to access of non-accessible field
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.getstatic.TestStubs        
+        try {
+            T_getstatic_6 t = new T_getstatic_6();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_getstatic_7 t = new T_getstatic_7();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+               T_getstatic_8 t = new T_getstatic_8();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  attempt to get int from float field
+     */
+    public void testE5() {
+        try {
+            T_getstatic_10 t = new T_getstatic_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  initialization of referenced class throws exception
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.getstatic.jm.StubInitError
+        T_getstatic_9 t = new T_getstatic_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    //  FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  attempt to read superclass' private field from subclass
+     * 
+     * FIXME: is this a JVM bug?
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.getstatic.jm.T_getstatic_1
+        try {
+            T_getstatic_12 t = new T_getstatic_12();
+            t.run();
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.getstatic.jm.T_getstatic_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.getstatic.jm.T_getstatic_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool type
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.getstatic.jm.T_getstatic_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.j
new file mode 100644
index 0000000..3143fda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.j
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_1.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_1
+.super java/lang/Object
+
+.field public static i1 I
+.field protected static p1 I
+.field private static pvt1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.i1 I
+    
+    ldc 10
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.p1 I
+    
+    ldc 20
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.pvt1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.java
new file mode 100644
index 0000000..052182e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_1 {
+    public static int i1 = 5;
+    protected static int p1 = 10;
+    private static int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.j
new file mode 100644
index 0000000..29880ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_10.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_10
+.super java/lang/Object
+
+.field public static i1 F
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    fconst_1
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_10.i1 F
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_10.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.java
new file mode 100644
index 0000000..0dda175
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_10 {
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.j
new file mode 100644
index 0000000..aaa565b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_11.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_11
+.super dxc/junit/opcodes/getstatic/jm/T_getstatic_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getstatic/jm/T_getstatic_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.p1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.java
new file mode 100644
index 0000000..25923d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_11 extends T_getstatic_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.j
new file mode 100644
index 0000000..72385f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_12.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_12
+.super dxc/junit/opcodes/getstatic/jm/T_getstatic_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/getstatic/jm/T_getstatic_1/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_1.pvt1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.java
new file mode 100644
index 0000000..ee091a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_12 extends T_getstatic_1 {
+
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.cfh
new file mode 100644
index 0000000..92ad194
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.cfh
@@ -0,0 +1,270 @@
+//@class:dxc/junit/opcodes/getstatic/jm/T_getstatic_13
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0014
+// .  .  
+   00 14 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 5, h: 0002: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 3, h: 0004: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 46, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 07 
+    // parsed:, offset 51, len 11, h: 0006: utf8{"<clinit>"}
+    // .  .  .  <  c  l  i  n  i  t  >  
+       01 00 08 3c 63 6c 69 6e 69 74 3e 
+    // parsed:, offset 62, len 6, h: 0007: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 68, len 5, h: 0008: field{dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1:I}
+    // .  .  .  .  .  
+       09 00 11 00 0d 
+    // parsed:, offset 73, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 80, len 13, h: 000a: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 93, len 4, h: 000b: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 97, len 48, h: 000c: utf8{"dxc/junit/opcodes/getstatic/jm/T_getstatic_13"}
+    // .  .  -  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  s  t  a  t  i  c  /  j  m  /  T  _  g  e  t  s  t  a  t  i  c  _  1  3  
+       01 00 2d 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 67 65 74 73 74 61 74 69 63 5f 31 33 
+    // parsed:, offset 145, len 5, h: 000d: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 12 00 0b 
+    // parsed:, offset 150, len 6, h: 000e: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 156, len 6, h: 000f: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 162, len 5, h: 0010: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 04 00 05 
+    // parsed:, offset 167, len 3, h: 0011: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_13}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 170, len 5, h: 0012: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 175, len 22, h: 0013: utf8{"T_getstatic_13.java"}
+    // .  .  .  T  _  g  e  t  s  t  a  t  i  c  _  1  3  .  j  a  v  a  
+       01 00 13 54 5f 67 65 74 73 74 61 74 69 63 5f 31 33 2e 6a 61 76 61 
+// parsed:, offset 197, len 0, h: end constant_pool
+// parsed:, offset 197, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 199, len 2, h: this_class: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_13}
+// .  .  
+   00 11 
+// parsed:, offset 201, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 04 
+// parsed:, offset 203, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 205, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 207, len:115,desc: I
+// parsed:, offset 207, len 0, h:  fields[0]: 
+    // parsed:, offset 207, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 209, len 2, h: name: i1
+    // .  .  
+       00 12 
+    // parsed:, offset 211, len 2, h: descriptor: I
+    // .  .  
+       00 0b 
+    // parsed:, offset 213, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 215, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 215, len 2, h: methods_count: 0003
+// .  .  
+   00 03 
+// ========== start-ParseMember:<clinit>, offset 217, len:105,desc: ()V
+// parsed:, offset 217, len 0, h:  methods[0]: 
+    // parsed:, offset 217, len 2, h: access_flags: static
+    // .  .  
+       00 08 
+    // parsed:, offset 219, len 2, h: name: <clinit>
+    // .  .  
+       00 06 
+    // parsed:, offset 221, len 2, h: descriptor: ()V
+    // .  .  
+       00 07 
+    // parsed:, offset 223, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 225, len 0, h:  attributes[0]: 
+        // parsed:, offset 225, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 227, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 231, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 233, len 2, h: max_locals: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 235, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 1, len 3, h: 0001: putstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1:I}
+        // .  .  .  
+           b3 00 08 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 244, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 246, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 248, len 0, h: end attributes[0] 
+// parsed:, offset 248, len 0, h: end methods[0] 
+// ========== end-ParseMember:<clinit>, desc: ()V
+// ========== start-ParseMember:<init>, offset 248, len:74,desc: ()V
+// parsed:, offset 248, len 0, h:  methods[1]: 
+    // parsed:, offset 248, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 250, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 252, len 2, h: descriptor: ()V
+    // .  .  
+       00 07 
+    // parsed:, offset 254, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 256, len 0, h:  attributes[0]: 
+        // parsed:, offset 256, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 258, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 262, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 264, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 266, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 10 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 275, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 277, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 279, len 0, h: end attributes[0] 
+// parsed:, offset 279, len 0, h: end methods[1] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 279, len:43,desc: ()I
+// parsed:, offset 279, len 0, h:  methods[2]: 
+    // parsed:, offset 279, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 281, len 2, h: name: run
+    // .  .  
+       00 0f 
+    // parsed:, offset 283, len 2, h: descriptor: ()I
+    // .  .  
+       00 0e 
+    // parsed:, offset 285, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 287, len 0, h:  attributes[0]: 
+        // parsed:, offset 287, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 289, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 293, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 295, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 297, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 02 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 3, h: 0003: getstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1:I}
+        // .  .  .  
+//@mod           b2 00 08 
+           b2 00 02 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 308, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 310, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 312, len 0, h: end attributes[0] 
+// parsed:, offset 312, len 0, h: end methods[2] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 312, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 314, len 0, h:  attributes[0]: 
+    // parsed:, offset 314, len 2, h: name: SourceFile
+    // .  .  
+       00 0a 
+    // parsed:, offset 316, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 320, len 2, h: source: utf8{"T_getstatic_13.java"}
+    // .  .  
+       00 13 
+// parsed:, offset 322, len 0, h: end attributes[0] 
+// parsed:, offset 322, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.j
new file mode 100644
index 0000000..7d3769a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_13.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_13
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    
+    ldc 3.14
+    pop
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_13.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.java
new file mode 100644
index 0000000..37f5811
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_13 {
+
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.j
new file mode 100644
index 0000000..dcd4322
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_2.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_2
+.super java/lang/Object
+
+.field public static val D
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc2_w 123.0
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_2.val D
+
+    return
+.end method
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_2.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.java
new file mode 100644
index 0000000..f9f2d23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_2 {
+
+    public static double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.j
new file mode 100644
index 0000000..cb47889
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_3.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_3
+.super java/lang/Object
+
+.field public static val D
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc2_w 123.0
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_3.val D
+
+    return
+.end method
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_3.val D
+
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.java
new file mode 100644
index 0000000..98d1f15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_3 {
+
+    public static double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.cfh
new file mode 100644
index 0000000..b384bf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.cfh
@@ -0,0 +1,261 @@
+//@class:dxc/junit/opcodes/getstatic/jm/T_getstatic_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0013
+// .  .  
+   00 13 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 11 00 0c 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 47, h: 0004: utf8{"dxc/junit/opcodes/getstatic/jm/T_getstatic_4"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  e  t  s  t  a  t  i  c  /  j  m  /  T  _  g  e  t  s  t  a  t  i  c  _  4  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 65 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 67 65 74 73 74 61 74 69 63 5f 34 
+    // parsed:, offset 90, len 3, h: 0005: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_4}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 93, len 6, h: 0006: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 99, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 106, len 11, h: 0008: utf8{"<clinit>"}
+    // .  .  .  <  c  l  i  n  i  t  >  
+       01 00 08 3c 63 6c 69 6e 69 74 3e 
+    // parsed:, offset 117, len 13, h: 0009: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 130, len 5, h: 000a: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 06 
+    // parsed:, offset 135, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 138, len 4, h: 000c: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 142, len 6, h: 000d: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 148, len 6, h: 000e: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 154, len 5, h: 000f: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 0a 
+    // parsed:, offset 159, len 5, h: 0010: field{dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1:I}
+    // .  .  .  .  .  
+       09 00 05 00 01 
+    // parsed:, offset 164, len 5, h: 0011: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 169, len 21, h: 0012: utf8{"T_getstatic_4.java"}
+    // .  .  .  T  _  g  e  t  s  t  a  t  i  c  _  4  .  j  a  v  a  
+       01 00 12 54 5f 67 65 74 73 74 61 74 69 63 5f 34 2e 6a 61 76 61 
+// parsed:, offset 190, len 0, h: end constant_pool
+// parsed:, offset 190, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 192, len 2, h: this_class: type{dxc.junit.opcodes.getstatic.jm.T_getstatic_4}
+// .  .  
+   00 05 
+// parsed:, offset 194, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 196, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 198, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 200, len:112,desc: I
+// parsed:, offset 200, len 0, h:  fields[0]: 
+    // parsed:, offset 200, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 202, len 2, h: name: i1
+    // .  .  
+       00 11 
+    // parsed:, offset 204, len 2, h: descriptor: I
+    // .  .  
+       00 0c 
+    // parsed:, offset 206, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 208, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 208, len 2, h: methods_count: 0003
+// .  .  
+   00 03 
+// ========== start-ParseMember:<clinit>, offset 210, len:102,desc: ()V
+// parsed:, offset 210, len 0, h:  methods[0]: 
+    // parsed:, offset 210, len 2, h: access_flags: static
+    // .  .  
+       00 08 
+    // parsed:, offset 212, len 2, h: name: <clinit>
+    // .  .  
+       00 08 
+    // parsed:, offset 214, len 2, h: descriptor: ()V
+    // .  .  
+       00 06 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 220, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 228, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: iconst_5 // #+05
+        // .  
+           08 
+        // parsed:, offset 1, len 3, h: 0001: putstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1:I}
+        // .  .  .  
+           b3 00 10 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 237, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 239, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 241, len 0, h: end attributes[0] 
+// parsed:, offset 241, len 0, h: end methods[0] 
+// ========== end-ParseMember:<clinit>, desc: ()V
+// ========== start-ParseMember:<init>, offset 241, len:71,desc: ()V
+// parsed:, offset 241, len 0, h:  methods[1]: 
+    // parsed:, offset 241, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 243, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 2, h: descriptor: ()V
+    // .  .  
+       00 06 
+    // parsed:, offset 247, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 249, len 0, h:  attributes[0]: 
+        // parsed:, offset 249, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 251, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 255, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 257, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 259, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0f 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 268, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 270, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 272, len 0, h: end attributes[0] 
+// parsed:, offset 272, len 0, h: end methods[1] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 272, len:40,desc: ()I
+// parsed:, offset 272, len 0, h:  methods[2]: 
+    // parsed:, offset 272, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 274, len 2, h: name: run
+    // .  .  
+       00 0e 
+    // parsed:, offset 276, len 2, h: descriptor: ()I
+    // .  .  
+       00 0d 
+    // parsed:, offset 278, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 280, len 0, h:  attributes[0]: 
+        // parsed:, offset 280, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 282, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 286, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 288, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 290, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 3, h: 0000: getstatic field{dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1:I}
+        // .  .  .  
+//@mod           b2 00 10 
+           b2 01 10 
+        // parsed:, offset 3, len 1, h: 0003: ireturn
+        // .  
+           ac 
+        // parsed:, offset 298, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 300, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end methods[2] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 302, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 304, len 0, h:  attributes[0]: 
+    // parsed:, offset 304, len 2, h: name: SourceFile
+    // .  .  
+       00 09 
+    // parsed:, offset 306, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 310, len 2, h: source: utf8{"T_getstatic_4.java"}
+    // .  .  
+       00 12 
+// parsed:, offset 312, len 0, h: end attributes[0] 
+// parsed:, offset 312, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.j
new file mode 100644
index 0000000..349b217
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_4.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_4
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_4.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.java
new file mode 100644
index 0000000..2fa815d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_4 {
+
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.j
new file mode 100644
index 0000000..0f26e28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_5.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_5
+    putfield dxc.junit.opcodes.getstatic.jm.T_getstatic_5.i1 I
+
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_5.i1 I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.java
new file mode 100644
index 0000000..d183ca4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_5 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.j
new file mode 100644
index 0000000..ba60eb9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_6.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    getstatic dxc.junit.opcodes.getstatic.TestStubs.TestStubField I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.java
new file mode 100644
index 0000000..746d6a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_6 {
+
+    public int run() {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.j
new file mode 100644
index 0000000..ecb55ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_7.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_7
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_7.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_71.i1 I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.java
new file mode 100644
index 0000000..362759e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_7 {
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.j
new file mode 100644
index 0000000..5391bed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_8.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_8
+.super java/lang/Object
+
+.field public static i1 I
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    iconst_5
+    putstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_8.i1 I
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.T_getstatic_8.i1N I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.java
new file mode 100644
index 0000000..d187e34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_8 {
+    public static int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.j b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.j
new file mode 100644
index 0000000..f7a7c9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_getstatic_9.java
+.class public dxc/junit/opcodes/getstatic/jm/T_getstatic_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.getstatic.jm.StubInitError.value I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.java
new file mode 100644
index 0000000..e569935
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/T_getstatic_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+public class T_getstatic_9 {
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/TestStubs.java
new file mode 100644
index 0000000..97c647f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/getstatic/jm/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.getstatic.jm;
+
+
+class StubInitError{
+    public static int value = 5 / 0;
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/Test_goto_w.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/Test_goto_w.java
new file mode 100644
index 0000000..4cac33d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/Test_goto_w.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.goto_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.goto_w.jm.T_goto_w_1;
+import dxc.junit.opcodes.goto_w.jm.T_goto_w_5;
+
+public class Test_goto_w extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_goto_w_1 t = new T_goto_w_1();
+        assertEquals(0, t.run(20));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN2() {
+        T_goto_w_1 t = new T_goto_w_1();
+        assertEquals(-20, t.run(-20));
+    }
+
+    /**
+     * @title  negative offset
+     */
+    public void testN3() {
+        T_goto_w_5 t = new T_goto_w_5();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target is inside instruction
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.goto_w.jm.T_goto_w_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.goto_w.jm.T_goto_w_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.goto_w.jm.T_goto_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.j
new file mode 100644
index 0000000..e7b623b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_goto_w_1.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    goto_w Label0
+
+    Label1:
+    iinc 1 -1
+
+    Label0:
+    iload_1
+    ifgt Label1
+
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.java
new file mode 100644
index 0000000..d0a8e94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.cfh
new file mode 100644
index 0000000..4abb7c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.cfh
@@ -0,0 +1,193 @@
+//@class:dxc/junit/opcodes/goto_w/jm/T_goto_w_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: string{"a"}
+    // .  .  .  
+       08 00 0c 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 18, h: 0006: utf8{"T_goto_w_2.java"}
+    // .  .  .  T  _  g  o  t  o  _  w  _  2  .  j  a  v  a  
+       01 00 0f 54 5f 67 6f 74 6f 5f 77 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 77, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 83, len 3, h: 0008: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_2}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 86, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 91, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 98, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 104, len 4, h: 000c: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 108, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 111, len 41, h: 000e: utf8{"dxc/junit/opcodes/goto_w/jm/T_goto_w_2"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  o  t  o  _  w  /  j  m  /  T  _  g  o  t  o  _  w  _  2  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 6f 74 6f 5f 77 2f 6a 6d 2f 54 5f 67 6f 74 6f 5f 77 5f 32 
+// parsed:, offset 152, len 0, h: end constant_pool
+// parsed:, offset 152, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 154, len 2, h: this_class: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_2}
+// .  .  
+   00 08 
+// parsed:, offset 156, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 158, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 160, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 162, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 164, len:76,desc: ()V
+// parsed:, offset 164, len 0, h:  methods[0]: 
+    // parsed:, offset 164, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 168, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 170, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 0, h:  attributes[0]: 
+        // parsed:, offset 172, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 174, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 178, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 180, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 182, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 191, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 193, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 195, len 0, h: end attributes[0] 
+// parsed:, offset 195, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 195, len:45,desc: ()V
+// parsed:, offset 195, len 0, h:  methods[1]: 
+    // parsed:, offset 195, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 199, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 201, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 0, h:  attributes[0]: 
+        // parsed:, offset 203, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 205, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 209, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 211, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 213, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 5, h: 0000: goto_w 00000006
+        // .  .  .  .  .  
+//@mod:    c8 00 00 00 06 
+// we jump to the parameter of a byte code (was: ldc, now: string "a"), so this 
+// must be rejected by the verifier  
+           c8 00 00 00 07 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 6, len 2, h: 0006: ldc string{"a"}
+        // .  .  
+           12 04 
+        // parsed:, offset 8, len 1, h: 0008: return
+        // .  
+           b1 
+        // parsed:, offset 226, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 228, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 230, len 0, h: end attributes[0] 
+// parsed:, offset 230, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 230, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 232, len 0, h:  attributes[0]: 
+    // parsed:, offset 232, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 234, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 238, len 2, h: source: utf8{"T_goto_w_2.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.j
new file mode 100644
index 0000000..d2c8771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_goto_w_2.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto_w Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.java
new file mode 100644
index 0000000..89e57ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_2 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.cfh
new file mode 100644
index 0000000..4a45a9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/goto_w/jm/T_goto_w_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: string{"a"}
+    // .  .  .  
+       08 00 0c 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 70, len 3, h: 0008: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_3}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 73, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 80, len 18, h: 000a: utf8{"T_goto_w_3.java"}
+    // .  .  .  T  _  g  o  t  o  _  w  _  3  .  j  a  v  a  
+       01 00 0f 54 5f 67 6f 74 6f 5f 77 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 98, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 104, len 4, h: 000c: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 108, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 111, len 41, h: 000e: utf8{"dxc/junit/opcodes/goto_w/jm/T_goto_w_3"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  o  t  o  _  w  /  j  m  /  T  _  g  o  t  o  _  w  _  3  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 6f 74 6f 5f 77 2f 6a 6d 2f 54 5f 67 6f 74 6f 5f 77 5f 33 
+// parsed:, offset 152, len 0, h: end constant_pool
+// parsed:, offset 152, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 154, len 2, h: this_class: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_3}
+// .  .  
+   00 08 
+// parsed:, offset 156, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 158, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 160, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 162, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 164, len:76,desc: ()V
+// parsed:, offset 164, len 0, h:  methods[0]: 
+    // parsed:, offset 164, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 168, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 170, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 0, h:  attributes[0]: 
+        // parsed:, offset 172, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 174, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 178, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 180, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 182, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 191, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 193, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 195, len 0, h: end attributes[0] 
+// parsed:, offset 195, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 195, len:45,desc: ()V
+// parsed:, offset 195, len 0, h:  methods[1]: 
+    // parsed:, offset 195, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 199, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 201, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 0, h:  attributes[0]: 
+        // parsed:, offset 203, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 205, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 209, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 211, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 213, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 5, h: 0000: goto_w 00000006
+        // .  .  .  .  .  
+//@mod           c8 00 00 00 06 
+           c8 00 ff 00 06 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 6, len 2, h: 0006: ldc string{"a"}
+        // .  .  
+           12 04 
+        // parsed:, offset 8, len 1, h: 0008: return
+        // .  
+           b1 
+        // parsed:, offset 226, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 228, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 230, len 0, h: end attributes[0] 
+// parsed:, offset 230, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 230, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 232, len 0, h:  attributes[0]: 
+    // parsed:, offset 232, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 234, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 238, len 2, h: source: utf8{"T_goto_w_3.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.j
new file mode 100644
index 0000000..040e7ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_goto_w_3.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto_w Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.java
new file mode 100644
index 0000000..a32670d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_3 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.cfh
new file mode 100644
index 0000000..e02cd46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/goto_w/jm/T_goto_w_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0a 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_4}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 83, len 3, h: 000a: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 86, len 41, h: 000b: utf8{"dxc/junit/opcodes/goto_w/jm/T_goto_w_4"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  g  o  t  o  _  w  /  j  m  /  T  _  g  o  t  o  _  w  _  4  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 67 6f 74 6f 5f 77 2f 6a 6d 2f 54 5f 67 6f 74 6f 5f 77 5f 34 
+    // parsed:, offset 127, len 18, h: 000c: utf8{"T_goto_w_4.java"}
+    // .  .  .  T  _  g  o  t  o  _  w  _  4  .  j  a  v  a  
+       01 00 0f 54 5f 67 6f 74 6f 5f 77 5f 34 2e 6a 61 76 61 
+// parsed:, offset 145, len 0, h: end constant_pool
+// parsed:, offset 145, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 147, len 2, h: this_class: type{dxc.junit.opcodes.goto_w.jm.T_goto_w_4}
+// .  .  
+   00 07 
+// parsed:, offset 149, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0a 
+// parsed:, offset 151, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 153, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 155, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 157, len:77,desc: ()V
+// parsed:, offset 157, len 0, h:  methods[0]: 
+    // parsed:, offset 157, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 159, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 161, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 163, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 165, len 0, h:  attributes[0]: 
+        // parsed:, offset 165, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 167, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 171, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 173, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 175, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 184, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 186, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 188, len 0, h: end attributes[0] 
+// parsed:, offset 188, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 188, len:46,desc: ()V
+// parsed:, offset 188, len 0, h:  methods[1]: 
+    // parsed:, offset 188, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 192, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 194, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 196, len 0, h:  attributes[0]: 
+        // parsed:, offset 196, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 198, len 4, h: length: 00000016
+        // .  .  .  .  
+           00 00 00 16 
+        // parsed:, offset 202, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 204, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 4, h: code_length: 0000000a
+        // .  .  .  .  
+           00 00 00 0a 
+        // parsed:, offset 0, len 5, h: 0000: goto_w 00000005
+        // .  .  .  .  .  
+//@mod           c8 00 00 00 05 
+           c8 00 00 00 06 
+        // parsed:, offset 5, len 4, h: 0005: wide aload 0000
+        // .  .  .  .  
+           c4 19 00 00 
+        // parsed:, offset 9, len 1, h: 0009: return
+        // .  
+           b1 
+        // parsed:, offset 220, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 222, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 224, len 0, h: end attributes[0] 
+// parsed:, offset 224, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 224, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 226, len 0, h:  attributes[0]: 
+    // parsed:, offset 226, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 228, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 232, len 2, h: source: utf8{"T_goto_w_4.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.j
new file mode 100644
index 0000000..1c0b768
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_goto_w_4.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto_w Label0
+Label0:    
+    aload_w 0
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.java
new file mode 100644
index 0000000..3914675
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_4 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.j
new file mode 100644
index 0000000..97309d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_goto_w_5.java
+.class public dxc/junit/opcodes/goto_w/jm/T_goto_w_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    goto_w Label1
+Label0:
+    nop
+    nop
+    nop
+    iconst_1
+    ireturn
+Label1:    
+    goto_w Label0
+    iconst_0
+    ireturn
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.java
new file mode 100644
index 0000000..82daea8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/goto_w/jm/T_goto_w_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.goto_w.jm;
+
+public class T_goto_w_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/Test_i2b.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/Test_i2b.java
new file mode 100644
index 0000000..096b453
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/Test_i2b.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2b;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2b.jm.T_i2b_1;
+
+public class Test_i2b extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 16
+     */
+    public void testN3() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(16, t.run(16));
+    }
+
+    /**
+     * @title  Argument = -32
+     */
+    public void testN4() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-32, t.run(-32));
+    }
+
+    /**
+     * @title  Argument = 134
+     */
+    public void testN5() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-122, t.run(134));
+    }
+
+    /**
+     * @title  Argument = -134
+     */
+    public void testN6() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(122, t.run(-134));
+    }
+
+    /**
+     * @title s. Argument = 127
+     */
+    public void testB1() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(127, t.run(127));
+    }
+
+    /**
+     * @title s. Argument = 128
+     */
+    public void testB2() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-128, t.run(128));
+    }
+
+    /**
+     * @title s. Argument = 0
+     */
+    public void testB3() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title s. Argument = -128
+     */
+    public void testB4() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-128, t.run(-128));
+    }
+
+    /**
+     * @title s. Argument = -129
+     */
+    public void testB5() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(127, t.run(-129));
+    }
+
+    /**
+     * @title s. Argument = Integer.MAX_VALUE
+     */
+    public void testB6() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title s. Argument = Integer.MIN_VALUE
+     */
+    public void testB7() {
+        T_i2b_1 t = new T_i2b_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2b.jm.T_i2b_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.j
new file mode 100644
index 0000000..6beef3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2b_1.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)B
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2b
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.java
new file mode 100644
index 0000000..ad3dd2b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_1 {
+
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.j
new file mode 100644
index 0000000..eb7c2c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2b_2.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)B
+    .limit stack 1
+    .limit locals 2
+    ; iload_1
+    i2b
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.java
new file mode 100644
index 0000000..0a6f16f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_2 {
+
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.j
new file mode 100644
index 0000000..3c2b8dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2b_3.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(D)B
+    .limit stack 2
+    .limit locals 3
+    dload_1
+    i2b
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.java
new file mode 100644
index 0000000..f16d916
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_3 {
+
+    public byte run(double a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.j
new file mode 100644
index 0000000..93653fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2b_4.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)B
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    i2b
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.java
new file mode 100644
index 0000000..10aa70d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_4 {
+
+    public byte run(long a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.j
new file mode 100644
index 0000000..85ee243
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2b_5.java
+.class public dxc/junit/opcodes/i2b/jm/T_i2b_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)B
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2b
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.java
new file mode 100644
index 0000000..a77b9c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2b/jm/T_i2b_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2b.jm;
+
+public class T_i2b_5 {
+    
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/Test_i2c.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/Test_i2c.java
new file mode 100644
index 0000000..c610a6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/Test_i2c.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2c;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2c.jm.T_i2c_1;
+
+public class Test_i2c extends DxTestCase {
+
+    /**
+     * @title  Argument = 65
+     */
+    public void testN1() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('A', t.run(65));
+    }
+
+    /**
+     * @title  Argument = 65537
+     */
+    public void testN2() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0001', t.run(65537));
+    }
+
+    /**
+     * @title  Argument = -2
+     */
+    public void testN3() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\ufffe', t.run(-2));
+    }
+
+    /**
+     * @title  Argument = 0x110000
+     */
+    public void testN4() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0000', t.run(0x110000));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0000', t.run(0));
+    }
+
+    /**
+     * @title  Argument = 65535
+     */
+    public void testB2() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\uffff', t.run(65535));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB3() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\uffff', t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_i2c_1 t = new T_i2c_1();
+        assertEquals('\u0000', t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * verify test
+     */
+    /**
+     * @constraint 4.8.2
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2c.jm.T_i2c_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.j
new file mode 100644
index 0000000..e15178d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2c_1.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)C
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2c
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.java
new file mode 100644
index 0000000..a255f60
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_1 {
+
+    public char run(int a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.j
new file mode 100644
index 0000000..e6dcb12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2c_2.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)C
+    .limit stack 1
+    .limit locals 2
+    
+;    iload_1
+    i2c
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.java
new file mode 100644
index 0000000..6ee574c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_2 {
+
+    public char run(int a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.j
new file mode 100644
index 0000000..af0e098
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2c_3.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)C
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+;    d2i
+    i2c
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.java
new file mode 100644
index 0000000..12e7e70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_3 {
+
+    public char run(double a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.j
new file mode 100644
index 0000000..0ac4503
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2c_4.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)C
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2i
+    i2c
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.java
new file mode 100644
index 0000000..0583ce8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_4 {
+
+    public char run(long a) {
+        return (char) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.j
new file mode 100644
index 0000000..54e6ad3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2c_5.java
+.class public dxc/junit/opcodes/i2c/jm/T_i2c_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)C
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2c
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.java
new file mode 100644
index 0000000..a1d485d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2c/jm/T_i2c_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2c.jm;
+
+public class T_i2c_5 {
+    
+    public char run(int a) {
+        return (char) a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/Test_i2d.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/Test_i2d.java
new file mode 100644
index 0000000..c6e57d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/Test_i2d.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2d;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2d.jm.T_i2d_1;
+
+public class Test_i2d extends DxTestCase {
+
+    /**
+     * @title  Argument = 300000000
+     */
+    public void testN1() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(300000000d, t.run(300000000), 0d);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(2147483647d, t.run(Integer.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(-2147483648d, t.run(Integer.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_i2d_1 t = new T_i2d_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2d.jm.T_i2d_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.j
new file mode 100644
index 0000000..d44d272
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2d_1.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+    iload_1
+    i2d
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.java
new file mode 100644
index 0000000..0375f9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_1 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.j
new file mode 100644
index 0000000..abd492b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2d_2.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+
+;    iload_1
+    i2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.java
new file mode 100644
index 0000000..0b2112d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_2 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.j
new file mode 100644
index 0000000..7396e0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2d_3.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+    fload_1
+;    f2i
+    i2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.java
new file mode 100644
index 0000000..39125cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_3 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.j
new file mode 100644
index 0000000..041aa6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2d_4.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2i
+    i2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.java
new file mode 100644
index 0000000..7386ba9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_4 {
+
+    public double run(long a) {
+        return (double) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.j
new file mode 100644
index 0000000..e9ca3ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2d_5.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)D
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    i2d
+    
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.java
new file mode 100644
index 0000000..5af85bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_5 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.j b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.j
new file mode 100644
index 0000000..00a7b78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2d_6.java
+.class public dxc/junit/opcodes/i2d/jm/T_i2d_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    i2d
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.java b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.java
new file mode 100644
index 0000000..a003add
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2d/jm/T_i2d_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2d.jm;
+
+public class T_i2d_6 {
+    
+    public double run(int a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/Test_i2f.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/Test_i2f.java
new file mode 100644
index 0000000..4a5bcec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/Test_i2f.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2f;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2f.jm.T_i2f_1;
+
+public class Test_i2f extends DxTestCase {
+
+    /**
+     * @title  Argument = 123456
+     */
+    public void testN1() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(123456f, t.run(123456), 0f);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(1f, t.run(1), 0f);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(-1f, t.run(-1), 0f);
+    }
+
+    /**
+     * @title  Argument = 33564439
+     */
+    public void testN4() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(3.356444E7f, t.run(33564439), 0f);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(0f, t.run(0), 0f);
+    }
+
+    /**
+     * @title  Argument = Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(2147483650f, t.run(Integer.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_i2f_1 t = new T_i2f_1();
+        assertEquals(-2147483650f, t.run(Integer.MIN_VALUE), 0f);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2f.jm.T_i2f_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.j
new file mode 100644
index 0000000..e77cc6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2f_1.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)F
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2f
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.java
new file mode 100644
index 0000000..e985e19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_1 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.j
new file mode 100644
index 0000000..f1e729f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2f_2.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)F
+    .limit stack 1
+    .limit locals 2
+
+;    iload_1
+    i2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.java
new file mode 100644
index 0000000..ae113ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_2 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.j
new file mode 100644
index 0000000..fac0ac4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2f_3.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)F
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+;    d2i
+    i2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.java
new file mode 100644
index 0000000..a4f1727
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_3 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.j
new file mode 100644
index 0000000..3194274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2f_4.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    ;l2i
+    i2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.java
new file mode 100644
index 0000000..5aad4ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_4 {
+
+    public float run(long a) {
+        return (float) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.j
new file mode 100644
index 0000000..9dfed0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2f_5.java
+.class public dxc/junit/opcodes/i2f/jm/T_i2f_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)F
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2f
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.java
new file mode 100644
index 0000000..fcbe7e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2f/jm/T_i2f_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2f.jm;
+
+public class T_i2f_5 {
+    
+    public float run(int a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/Test_i2l.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/Test_i2l.java
new file mode 100644
index 0000000..8bd6a89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/Test_i2l.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2l;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2l.jm.T_i2l_1;
+
+public class Test_i2l extends DxTestCase {
+
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(123456l, t.run(123456));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(1l, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(-1l, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(0l, t.run(0));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(2147483647l, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_i2l_1 t = new T_i2l_1();
+        assertEquals(-2147483648l, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2l.jm.T_i2l_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.j
new file mode 100644
index 0000000..49660c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2l_1.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+    iload_1
+    i2l
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.java
new file mode 100644
index 0000000..5b03ca0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_1 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.j
new file mode 100644
index 0000000..0435fb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2l_2.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+
+;    iload_1
+    i2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.java
new file mode 100644
index 0000000..4209cad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_2 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.j
new file mode 100644
index 0000000..ed8c96a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2l_3.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+ 
+    dload_1
+ ;   d2i
+     i2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.java
new file mode 100644
index 0000000..c8b8704
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_3 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.j
new file mode 100644
index 0000000..a172ce4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2l_4.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+
+    i2l
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.java
new file mode 100644
index 0000000..cc27bc2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_4 {
+
+    public long run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.j
new file mode 100644
index 0000000..8dcd481
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2l_5.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)J
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    i2l
+
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.java
new file mode 100644
index 0000000..407650d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_5 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.j b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.j
new file mode 100644
index 0000000..75c9693
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2l_6.java
+.class public dxc/junit/opcodes/i2l/jm/T_i2l_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    i2l
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.java b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.java
new file mode 100644
index 0000000..9f2d674
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2l/jm/T_i2l_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2l.jm;
+
+public class T_i2l_6 {
+    
+    public long run(int a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/Test_i2s.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/Test_i2s.java
new file mode 100644
index 0000000..f0ae1f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/Test_i2s.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2s;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.i2s.jm.T_i2s_1;
+
+public class Test_i2s extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 32767
+     */
+    public void testN3() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(32767, t.run(32767));
+    }
+
+    /**
+     * @title  Argument = -32768
+     */
+    public void testN4() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-32768, t.run(-32768));
+    }
+
+    /**
+     * @title  Argument = -32769
+     */
+    public void testN5() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(32767, t.run(-32769));
+    }
+
+    /**
+     * @title  Argument = 32768
+     */
+    public void testN6() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title  Argument = 0x10fedc;
+     */
+    public void testN7() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(0xfffffedc, t.run(0x10fedc));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_i2s_1 t = new T_i2s_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.i2s.jm.T_i2s_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.j
new file mode 100644
index 0000000..2224057
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2s_1.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)S
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    i2s
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.java
new file mode 100644
index 0000000..f01646d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_1 {
+
+    public short run(int a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.j
new file mode 100644
index 0000000..c62c56f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2s_2.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)S
+    .limit stack 1
+    .limit locals 2
+
+;    iload_1
+    i2s
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.java
new file mode 100644
index 0000000..73e3134
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_2 {
+
+    public short run(int a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.j
new file mode 100644
index 0000000..05b14f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2s_3.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)S
+    .limit stack 2
+    .limit locals 3
+ 
+    dload_1
+;    d2i
+    i2s
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.java
new file mode 100644
index 0000000..92d6144
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_3 {
+
+    public short run(double a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.j
new file mode 100644
index 0000000..927254c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2s_4.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)S
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+;    l2i
+    i2s
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.java
new file mode 100644
index 0000000..703e103
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_4 {
+
+    public short run(long a) {
+        return (short)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.j b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.j
new file mode 100644
index 0000000..6ee161e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_i2s_5.java
+.class public dxc/junit/opcodes/i2s/jm/T_i2s_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)S
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    i2s
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.java b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.java
new file mode 100644
index 0000000..85dde1d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/i2s/jm/T_i2s_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.i2s.jm;
+
+public class T_i2s_5 {
+    
+    public short run(int a) {
+        return (short)a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/Test_iadd.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/Test_iadd.java
new file mode 100644
index 0000000..4e65023
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/Test_iadd.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iadd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iadd.jm.T_iadd_1;
+
+public class Test_iadd extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_iadd_1 t = new T_iadd_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iadd.jm.T_iadd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.j
new file mode 100644
index 0000000..7d5ab14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iadd_1.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    iadd
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.java
new file mode 100644
index 0000000..63e35c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.j
new file mode 100644
index 0000000..4000167
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iadd_2.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    iadd
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.java
new file mode 100644
index 0000000..249c9de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_2 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.j
new file mode 100644
index 0000000..61a788f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iadd_3.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    iadd
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.java
new file mode 100644
index 0000000..98ac780
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_3 {
+
+    public int run(int a, double b) {
+        return a+(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.j
new file mode 100644
index 0000000..b80dbca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iadd_4.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    iadd
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.java
new file mode 100644
index 0000000..cb97c39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_4 {
+
+    public int run(long a, int b) {
+        return (int)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.j
new file mode 100644
index 0000000..e815ee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iadd_5.java
+.class public dxc/junit/opcodes/iadd/jm/T_iadd_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    iadd
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.java
new file mode 100644
index 0000000..6d05810
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iadd/jm/T_iadd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iadd.jm;
+
+public class T_iadd_5 {
+    
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/Test_iaload.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/Test_iaload.java
new file mode 100644
index 0000000..0b37ac2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/Test_iaload.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iaload.jm.T_iaload_1;
+
+public class Test_iaload extends DxTestCase {
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN1() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        arr[1] = 100000000;
+        assertEquals(100000000, t.run(arr, 1));
+    }
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN2() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        arr[0] = 100000000;
+        assertEquals(100000000, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iaload_1 t = new T_iaload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_iaload_1 t = new T_iaload_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iaload.jm.T_iaload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.j
new file mode 100644
index 0000000..097f974
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_1.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.java
new file mode 100644
index 0000000..06baef4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_1 {
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.j
new file mode 100644
index 0000000..949cf4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_2.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.java
new file mode 100644
index 0000000..dda4c99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_2 {
+
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.j
new file mode 100644
index 0000000..f54bde1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_3.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.java
new file mode 100644
index 0000000..3ce0959
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_3 {
+
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.j
new file mode 100644
index 0000000..fd6243c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_4.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([ID)I
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.java
new file mode 100644
index 0000000..376f303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_4 {
+
+    public int run(int[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.j
new file mode 100644
index 0000000..b29eeae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_5.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([IJ)I
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+;    l2i
+    iaload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.java
new file mode 100644
index 0000000..a1e260b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_5 {
+
+    public int run(int[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.j
new file mode 100644
index 0000000..dd84023
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_6.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[II)I
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_3
+
+    iaload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.java
new file mode 100644
index 0000000..b371b7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_6 {
+
+    public int run(Object a, int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.j
new file mode 100644
index 0000000..5989d3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_7.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[II)I
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    iaload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.java
new file mode 100644
index 0000000..a6ab6ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_7 {
+
+    public int run(double[] a, int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.j
new file mode 100644
index 0000000..3b83df4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_8.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([J[II)I
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    iaload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.java
new file mode 100644
index 0000000..7fc1fd4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_8 {
+
+    public int run(long[] a, int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.j
new file mode 100644
index 0000000..73c8718
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iaload_9.java
+.class public dxc/junit/opcodes/iaload/jm/T_iaload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    iaload
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.java
new file mode 100644
index 0000000..3ac4522
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iaload/jm/T_iaload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iaload.jm;
+
+public class T_iaload_9 {
+    
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/Test_iand.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/Test_iand.java
new file mode 100644
index 0000000..3ffc871
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/Test_iand.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iand;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iand.jm.T_iand_1;
+
+public class Test_iand extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_iand_1 t = new T_iand_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iand.jm.T_iand_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.j
new file mode 100644
index 0000000..8a1bd03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iand_1.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    iand
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.java
new file mode 100644
index 0000000..e0783a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.j
new file mode 100644
index 0000000..44323a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iand_2.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    iand
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.java
new file mode 100644
index 0000000..6eef083
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_2 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.j
new file mode 100644
index 0000000..f5ea270
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iand_3.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    iand
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.java
new file mode 100644
index 0000000..c87a78f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_3 {
+
+    public int run(double a, int b) {
+        return (int)a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.j
new file mode 100644
index 0000000..c849643
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iand_4.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    iand
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.java
new file mode 100644
index 0000000..bbfe63d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_4 {
+
+    public int run(int a, long b) {
+        return a & (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.j
new file mode 100644
index 0000000..daa5908
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iand_5.java
+.class public dxc/junit/opcodes/iand/jm/T_iand_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    aload_0
+    iand
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.java
new file mode 100644
index 0000000..177c707
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iand/jm/T_iand_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iand.jm;
+
+public class T_iand_5 {
+    
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/Test_iastore.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/Test_iastore.java
new file mode 100644
index 0000000..539e8ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/Test_iastore.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iastore.jm.T_iastore_1;
+
+public class Test_iastore extends DxTestCase {
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN1() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        t.run(arr, 1, 100000000);
+        assertEquals(100000000, arr[1]);
+    }
+
+    /**
+     * @title Normal test/. Trying different indexes
+     */
+    public void testN2() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        t.run(arr, 0, 100000000);
+        assertEquals(100000000, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iastore_1 t = new T_iastore_1();
+        try {
+            t.run(null, 2, 100000000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_iastore_1 t = new T_iastore_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iastore.jm.T_iastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.j
new file mode 100644
index 0000000..8a2c771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_1.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.java
new file mode 100644
index 0000000..253e9d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_1 {
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.j
new file mode 100644
index 0000000..7c34197
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_2.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.java
new file mode 100644
index 0000000..f407f92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_2 {
+
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.j
new file mode 100644
index 0000000..cb6cfb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_3.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.java
new file mode 100644
index 0000000..0df3ee9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_3 {
+
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.j
new file mode 100644
index 0000000..0fa6d09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_4.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([IDI)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.java
new file mode 100644
index 0000000..0706835
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_4 {
+
+    public void run(int[] arr, double idx, int value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.j
new file mode 100644
index 0000000..59f0399
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_5.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([IIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+;    l2i
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.java
new file mode 100644
index 0000000..989da2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_5 {
+
+    public void run(int[] arr, int idx, long value) {
+        arr[idx] = (int)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.j
new file mode 100644
index 0000000..f3d75dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_6.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;II)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.java
new file mode 100644
index 0000000..0f5ea3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_6 {
+
+    public void run(Object a, int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.j
new file mode 100644
index 0000000..5ee1b4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_7.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[III)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.java
new file mode 100644
index 0000000..22b4348
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_7 {
+
+    public void run(double a[], int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.j
new file mode 100644
index 0000000..1de1c74
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_8.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[III)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    iastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.java
new file mode 100644
index 0000000..5493e4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_8 {
+
+    public void run(long a[], int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.j
new file mode 100644
index 0000000..a0b993b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iastore_9.java
+.class public dxc/junit/opcodes/iastore/jm/T_iastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([III)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    iastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.java
new file mode 100644
index 0000000..8b30629
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iastore/jm/T_iastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iastore.jm;
+
+public class T_iastore_9 {
+    
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/Test_iconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/Test_iconst_0.java
new file mode 100644
index 0000000..d394385
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/Test_iconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_0.jm.T_iconst_0_1;
+
+public class Test_iconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_0_1 t = new T_iconst_0_1();
+        int b = 1234;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_0.jm.T_iconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.j
new file mode 100644
index 0000000..9510066
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_0_1.java
+.class public dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.java
new file mode 100644
index 0000000..112b6d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_0.jm;
+
+public class T_iconst_0_1 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.j
new file mode 100644
index 0000000..90d93a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_0_2.java
+.class public dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_0
+    iconst_0
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.java
new file mode 100644
index 0000000..9f40962
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_0/jm/T_iconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_0.jm;
+
+public class T_iconst_0_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/Test_iconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/Test_iconst_1.java
new file mode 100644
index 0000000..2ceda6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/Test_iconst_1.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_1.jm.T_iconst_1_1;
+
+public class Test_iconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_1_1 t = new T_iconst_1_1();
+        int b = 1235;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_1.jm.T_iconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.j
new file mode 100644
index 0000000..b7c4558
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_1_1.java
+.class public dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.java
new file mode 100644
index 0000000..963428c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_1.jm;
+
+public class T_iconst_1_1 {
+
+    public int run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.j
new file mode 100644
index 0000000..10f3e61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_1_2.java
+.class public dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+ 
+    iconst_1
+    iconst_1
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.java
new file mode 100644
index 0000000..c2f95f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_1/jm/T_iconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_1.jm;
+
+public class T_iconst_1_2 {
+
+    public int run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/Test_iconst_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/Test_iconst_2.java
new file mode 100644
index 0000000..fc3b558
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/Test_iconst_2.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_2.jm.T_iconst_2_1;
+
+public class Test_iconst_2 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_2_1 t = new T_iconst_2_1();
+        int b = 1236;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_2.jm.T_iconst_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.j
new file mode 100644
index 0000000..582564e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_2_1.java
+.class public dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_2
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.java
new file mode 100644
index 0000000..7a00ed3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_2.jm;
+
+public class T_iconst_2_1 {
+
+    public int run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.j
new file mode 100644
index 0000000..d0a6b7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_2_2.java
+.class public dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_2
+    iconst_2    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.java
new file mode 100644
index 0000000..c9b35a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_2/jm/T_iconst_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_2.jm;
+
+public class T_iconst_2_2 {
+
+    public int run() {
+        return 2;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/Test_iconst_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/Test_iconst_3.java
new file mode 100644
index 0000000..7c35d71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/Test_iconst_3.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_3.jm.T_iconst_3_1;
+
+public class Test_iconst_3 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_3_1 t = new T_iconst_3_1();
+        int b = 1237;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_3.jm.T_iconst_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.j
new file mode 100644
index 0000000..ef97813
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_3_1.java
+.class public dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_3
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.java
new file mode 100644
index 0000000..c3ce680
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_3.jm;
+
+public class T_iconst_3_1 {
+
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.j
new file mode 100644
index 0000000..9c501dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_3_2.java
+.class public dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_3
+    iconst_3
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.java
new file mode 100644
index 0000000..2e5cfc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_3/jm/T_iconst_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_3.jm;
+
+public class T_iconst_3_2 {
+
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/Test_iconst_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/Test_iconst_4.java
new file mode 100644
index 0000000..f883f6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/Test_iconst_4.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_4;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_4.jm.T_iconst_4_1;
+
+public class Test_iconst_4 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_4_1 t = new T_iconst_4_1();
+        int b = 1238;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_4.jm.T_iconst_4_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.j
new file mode 100644
index 0000000..0bc6c6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_4_1.java
+.class public dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_4
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.java
new file mode 100644
index 0000000..b662051
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_4.jm;
+
+public class T_iconst_4_1 {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.j
new file mode 100644
index 0000000..36ae08b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_4_2.java
+.class public dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_4
+    iconst_4    
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.java
new file mode 100644
index 0000000..effef30
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_4/jm/T_iconst_4_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_4.jm;
+
+public class T_iconst_4_2 {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/Test_iconst_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/Test_iconst_5.java
new file mode 100644
index 0000000..6fbe360
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/Test_iconst_5.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_5;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_5.jm.T_iconst_5_1;
+
+public class Test_iconst_5 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_5_1 t = new T_iconst_5_1();
+        int b = 1239;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_5.jm.T_iconst_5_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.j
new file mode 100644
index 0000000..12b2f81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_5_1.java
+.class public dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_5
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.java
new file mode 100644
index 0000000..0762065
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_5.jm;
+
+public class T_iconst_5_1 {
+
+    public int run() {
+        return 5;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.j
new file mode 100644
index 0000000..307c804
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_5_2.java
+.class public dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_5
+    iconst_5
+        
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.java
new file mode 100644
index 0000000..ec01b76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_5/jm/T_iconst_5_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_5.jm;
+
+public class T_iconst_5_2 {
+
+    public int run() {
+        return 5;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/Test_iconst_m1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/Test_iconst_m1.java
new file mode 100644
index 0000000..9eb2765
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/Test_iconst_m1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_m1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iconst_m1.jm.T_iconst_m1_1;
+
+public class Test_iconst_m1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_iconst_m1_1 t = new T_iconst_m1_1();
+        int b = 1233;
+        int c = 1234;
+        int d = b - c;
+        assertEquals(d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iconst_m1.jm.T_iconst_m1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.j
new file mode 100644
index 0000000..4cc89b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_m1_1.java
+.class public dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.java
new file mode 100644
index 0000000..e54eee4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_m1.jm;
+
+public class T_iconst_m1_1 {
+
+    public int run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.j
new file mode 100644
index 0000000..68cb7ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iconst_m1_2.java
+.class public dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 1
+;    .limit locals 1
+
+    iconst_m1
+    iconst_m1    
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.java
new file mode 100644
index 0000000..ad1c701
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iconst_m1/jm/T_iconst_m1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iconst_m1.jm;
+
+public class T_iconst_m1_2 {
+
+    public int run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/Test_idiv.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/Test_idiv.java
new file mode 100644
index 0000000..73ca296
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/Test_idiv.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.idiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.idiv.jm.T_idiv_1;
+
+public class Test_idiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title  Rounding
+     */
+    public void testN2() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_idiv_1 t = new T_idiv_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_idiv_1 t = new T_idiv_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_idiv_1 t = new T_idiv_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.idiv.jm.T_idiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.j
new file mode 100644
index 0000000..97b601d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_idiv_1.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    idiv
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.java
new file mode 100644
index 0000000..b3e1ecc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.j
new file mode 100644
index 0000000..71cd321
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_idiv_2.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    idiv
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.java
new file mode 100644
index 0000000..ec8834c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_2 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.j
new file mode 100644
index 0000000..897b705
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_idiv_3.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    idiv
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.java
new file mode 100644
index 0000000..a28eb6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_3 {
+
+    public int run(int a, double b) {
+        return a/(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.j
new file mode 100644
index 0000000..ddf5f01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_idiv_4.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    idiv
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.java
new file mode 100644
index 0000000..c2cf3dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_4 {
+
+    public int run(long a, int b) {
+        return (int)a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.j
new file mode 100644
index 0000000..20b4402
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_idiv_5.java
+.class public dxc/junit/opcodes/idiv/jm/T_idiv_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    idiv
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.java
new file mode 100644
index 0000000..c5a3579
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/idiv/jm/T_idiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.idiv.jm;
+
+public class T_idiv_5 {
+    
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/Test_if_acmpeq.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/Test_if_acmpeq.java
new file mode 100644
index 0000000..2591871
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/Test_if_acmpeq.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpeq;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_1;
+
+public class Test_if_acmpeq extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_if_acmpeq_1 t = new T_if_acmpeq_1();
+        String a = "a";
+        String b = "b";
+
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(a, b));
+    }
+
+    /**
+     * @title  normal test
+     */
+    public void testN2() {
+        T_if_acmpeq_1 t = new T_if_acmpeq_1();
+        String a = "a";
+        assertEquals(1, t.run(a, a));
+    }
+
+    /**
+     * @title  Compare with null
+     */
+    public void testB1() {
+        T_if_acmpeq_1 t = new T_if_acmpeq_1();
+        String a = "a";
+        assertEquals(1234, t.run(null, a));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference,
+     * integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.j
new file mode 100644
index 0000000..c31a282
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpeq_1.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    if_acmpeq Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.java
new file mode 100644
index 0000000..e72a4fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_1 {
+
+    public int run(String a, String b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.j
new file mode 100644
index 0000000..51fb9e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpeq_2.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+;    aload_1
+    aload_2
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.java
new file mode 100644
index 0000000..f346bae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_2 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.j
new file mode 100644
index 0000000..cc93549
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpeq_3.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 4
+    .limit locals 3
+
+    aload_1
+    dconst_1
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.java
new file mode 100644
index 0000000..2f986fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_3 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.j
new file mode 100644
index 0000000..3541259
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpeq_4.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    iconst_1
+    
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.java
new file mode 100644
index 0000000..995a198
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_4 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.cfh
new file mode 100644
index 0000000..657c425
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 42, h: 0002: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 57, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 76, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 89, len 47, h: 0005: utf8{"dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  e  q  /  j  m  /  T  _  i  f  _  a  c  m  p  e  q  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 65 71 5f 35 
+    // parsed:, offset 136, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 145, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 151, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 156, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 163, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 169, len 3, h: 000b: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_5}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 172, len 21, h: 000c: utf8{"T_if_acmpeq_5.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  e  q  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 65 71 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 193, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_5}
+// .  .  
+   00 0b 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:76,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:45,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 02 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 249, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpeq 0007
+        // .  .  .  
+//@mod     a5 00 05    
+           a5 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_if_acmpeq_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.j
new file mode 100644
index 0000000..12d77df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpeq_5.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+    aload_2
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.java
new file mode 100644
index 0000000..ec022a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_5 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.cfh
new file mode 100644
index 0000000..3b400e22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.cfh
@@ -0,0 +1,205 @@
+//@class:dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 42, h: 0002: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 57, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 76, len 47, h: 0004: utf8{"dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  e  q  /  j  m  /  T  _  i  f  _  a  c  m  p  e  q  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 65 71 5f 36 
+    // parsed:, offset 123, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 136, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 145, len 21, h: 0007: utf8{"T_if_acmpeq_6.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  e  q  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 65 71 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 166, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 172, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 177, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 184, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 190, len 3, h: 000c: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_6}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 193, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpeq.jm.T_if_acmpeq_6}
+// .  .  
+   00 0c 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:79,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:48,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 02 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 249, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpeq 0008
+        // .  .  .  
+//@mod     a5 00 05    
+           a5 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .
+//@mod     00      
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // . 
+//@mod     00     
+           02 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 273, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 275, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 277, len 0, h: end attributes[0] 
+// parsed:, offset 277, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 277, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 279, len 0, h:  attributes[0]: 
+    // parsed:, offset 279, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 281, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 285, len 2, h: source: utf8{"T_if_acmpeq_6.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 287, len 0, h: end attributes[0] 
+// parsed:, offset 287, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.j
new file mode 100644
index 0000000..855ba59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpeq_6.java
+.class public dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    if_acmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+    ; iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.java
new file mode 100644
index 0000000..3e5bb90
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpeq/jm/T_if_acmpeq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpeq.jm;
+
+public class T_if_acmpeq_6 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/Test_if_acmpne.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/Test_if_acmpne.java
new file mode 100644
index 0000000..012742d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/Test_if_acmpne.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpne;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_1;
+
+public class Test_if_acmpne extends DxTestCase {
+
+    /**
+     * @title  normal test
+     */
+    public void testN1() {
+        T_if_acmpne_1 t = new T_if_acmpne_1();
+        String a = "a";
+        String b = "b";
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(a, b));
+    }
+
+    /**
+     * @title  normal test
+     */
+    public void testN2() {
+        T_if_acmpne_1 t = new T_if_acmpne_1();
+        String a = "a";
+        assertEquals(1, t.run(a, a));
+    }
+
+    /**
+     * @title  Compare with null
+     */
+    public void testB1() {
+        T_if_acmpne_1 t = new T_if_acmpne_1();
+        String a = "a";
+        assertEquals(1234, t.run(a, null));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference,
+     * integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.j
new file mode 100644
index 0000000..b500b91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpne_1.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    sipush 1234
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.java
new file mode 100644
index 0000000..4485e6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_1 {
+
+    public int run(String a, String b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.j
new file mode 100644
index 0000000..1e84a6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpne_2.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+;    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.java
new file mode 100644
index 0000000..52b734c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_2 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.j
new file mode 100644
index 0000000..48c32da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpne_3.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 4
+    .limit locals 3
+   
+    aload_1
+    dconst_1
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.java
new file mode 100644
index 0000000..609e0ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_3 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.j
new file mode 100644
index 0000000..b167481
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpne_4.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    iconst_1
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.java
new file mode 100644
index 0000000..1abd87a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_4 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.cfh
new file mode 100644
index 0000000..85dfc7a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 47, h: 0001: utf8{"dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  n  e  /  j  m  /  T  _  i  f  _  a  c  m  p  n  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 35 
+    // parsed:, offset 57, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 62, len 42, h: 0003: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 104, len 19, h: 0004: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 123, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 136, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 145, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 151, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 156, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 163, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 169, len 3, h: 000b: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_5}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 172, len 21, h: 000c: utf8{"T_if_acmpne_5.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  n  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 193, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 04 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_5}
+// .  .  
+   00 0b 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:76,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:45,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 249, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpne 00ff
+        // .  .  .  
+//@mod     a6 00 05    
+           a6 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_if_acmpne_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.j
new file mode 100644
index 0000000..46a46dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpne_5.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.java
new file mode 100644
index 0000000..1eb6ef6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_5 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.cfh
new file mode 100644
index 0000000..ffe5bbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 42, h: 0002: utf8{"(Ljava/lang/String;Ljava/lang/String;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 5a 
+    // parsed:, offset 57, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 76, len 21, h: 0004: utf8{"T_if_acmpne_6.java"}
+    // .  .  .  T  _  i  f  _  a  c  m  p  n  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 97, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 110, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 119, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 125, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 130, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 137, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000b: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_6}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 146, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 149, len 47, h: 000d: utf8{"dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  a  c  m  p  n  e  /  j  m  /  T  _  i  f  _  a  c  m  p  n  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 61 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 61 63 6d 70 6e 65 5f 36 
+// parsed:, offset 196, len 0, h: end constant_pool
+// parsed:, offset 196, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 198, len 2, h: this_class: type{dxc.junit.opcodes.if_acmpne.jm.T_if_acmpne_6}
+// .  .  
+   00 0b 
+// parsed:, offset 200, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 202, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 204, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 206, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 208, len:79,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[0]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 218, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 239, len:48,desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 239, len 0, h:  methods[1]: 
+    // parsed:, offset 239, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 241, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 243, len 2, h: descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
+    // .  .  
+       00 02 
+    // parsed:, offset 245, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 247, len 0, h:  attributes[0]: 
+        // parsed:, offset 247, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 249, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 253, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 255, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 257, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: if_acmpne 0008
+        // .  .  .  
+//@mod     a6 00 05    
+           a6 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 273, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 275, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 277, len 0, h: end attributes[0] 
+// parsed:, offset 277, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/String;Ljava/lang/String;)Z
+// parsed:, offset 277, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 279, len 0, h:  attributes[0]: 
+    // parsed:, offset 279, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 281, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 285, len 2, h: source: utf8{"T_if_acmpne_6.java"}
+    // .  .  
+       00 04 
+// parsed:, offset 287, len 0, h: end attributes[0] 
+// parsed:, offset 287, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.j
new file mode 100644
index 0000000..0ff4d66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_acmpne_6.java
+.class public dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)Z
+    .limit stack 2
+    .limit locals 3
+   
+    aload_1
+    aload_2
+    if_acmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+     nop
+    iload 1
+    nop    
+;    iconst_0
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.java
new file mode 100644
index 0000000..24fc8f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_acmpne/jm/T_if_acmpne_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_acmpne.jm;
+
+public class T_if_acmpne_6 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/Test_if_icmpeq.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/Test_if_icmpeq.java
new file mode 100644
index 0000000..b538559
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/Test_if_icmpeq.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_1;
+
+public class Test_if_icmpeq extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1234, t.run(0x01001234, 0x1234));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_icmpeq_1 t = new T_if_icmpeq_1();
+        assertEquals(1, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.j
new file mode 100644
index 0000000..d15a155
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpeq_1.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpeq Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.java
new file mode 100644
index 0000000..392360e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_1 {
+
+    public int run(int a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.j
new file mode 100644
index 0000000..ca05c70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpeq_2.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.java
new file mode 100644
index 0000000..a437976
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_2 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.j
new file mode 100644
index 0000000..fc9e4aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpeq_3.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+    dconst_1
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.java
new file mode 100644
index 0000000..bc636ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_3 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.j
new file mode 100644
index 0000000..98266e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpeq_4.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.java
new file mode 100644
index 0000000..4923485
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_4 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.cfh
new file mode 100644
index 0000000..00dbe44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 3, h: 0001: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 13, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 18, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 58, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 67, len 21, h: 0007: utf8{"T_if_icmpeq_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  e  q  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 65 71 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 88, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 94, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 99, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 106, len 47, h: 000b: utf8{"dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  e  q  /  j  m  /  T  _  i  f  _  i  c  m  p  e  q  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 65 71 5f 35 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_5}
+// .  .  
+   00 01 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpeq 0007
+        // .  .  .  
+//@mod     9f 00 05    
+           9f 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpeq_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.j
new file mode 100644
index 0000000..add33fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpeq_5.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.java
new file mode 100644
index 0000000..c720274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_5 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.cfh
new file mode 100644
index 0000000..d1d6b8c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 75, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 47, h: 0009: utf8{"dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  e  q  /  j  m  /  T  _  i  f  _  i  c  m  p  e  q  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 65 71 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 65 71 5f 36 
+    // parsed:, offset 129, len 21, h: 000a: utf8{"T_if_icmpeq_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  e  q  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 65 71 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 159, len 3, h: 000d: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_6}
+    // .  .  .  
+       07 00 09 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpeq.jm.T_if_icmpeq_6}
+// .  .  
+   00 0d 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpeq 0008
+        // .  .  .  
+//@mod     9f 00 05    
+           9f 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpeq_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.j
new file mode 100644
index 0000000..2b6a7b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpeq_6.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.java
new file mode 100644
index 0000000..ee004b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_6 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.j
new file mode 100644
index 0000000..bee1c6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpeq_7.java
+.class public dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    aload_0
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.java
new file mode 100644
index 0000000..18aaaf9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpeq/jm/T_if_icmpeq_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpeq.jm;
+
+public class T_if_icmpeq_7 {
+    
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/Test_if_icmpge.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/Test_if_icmpge.java
new file mode 100644
index 0000000..ab38187
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/Test_if_icmpge.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_1;
+
+public class Test_if_icmpge extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1234, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1234, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmpge_1 t = new T_if_icmpge_1();
+        assertEquals(1, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.j
new file mode 100644
index 0000000..e283915
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_1.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpge Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.java
new file mode 100644
index 0000000..719b6d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_1 {
+
+    public int run(int a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.j
new file mode 100644
index 0000000..3c2e871
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_2.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.java
new file mode 100644
index 0000000..175e276
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_2 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.j
new file mode 100644
index 0000000..7f4b515
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_3.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.java
new file mode 100644
index 0000000..69addc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_3 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.j
new file mode 100644
index 0000000..f8a9ddd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_4.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.java
new file mode 100644
index 0000000..8347b6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_4 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.cfh
new file mode 100644
index 0000000..16399c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 21, h: 0007: utf8{"T_if_icmpge_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 91, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 96, len 3, h: 0009: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 99, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 106, len 47, h: 000b: utf8{"dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  e  /  j  m  /  T  _  i  f  _  i  c  m  p  g  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 65 5f 35 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_5}
+// .  .  
+   00 09 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpge 0007
+        // .  .  .  
+//@mod     a2 00 05    
+           a2 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpge_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.j
new file mode 100644
index 0000000..30dbd29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_5.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.java
new file mode 100644
index 0000000..4ea2d24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_5 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.cfh
new file mode 100644
index 0000000..4f67cf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 3, h: 0007: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_6}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 73, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 78, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 85, len 47, h: 000a: utf8{"dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  e  /  j  m  /  T  _  i  f  _  i  c  m  p  g  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 65 5f 36 
+    // parsed:, offset 132, len 21, h: 000b: utf8{"T_if_icmpge_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpge.jm.T_if_icmpge_6}
+// .  .  
+   00 07 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpge 0008
+        // .  .  .  
+//@mod     a2 00 05    
+           a2 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpge_6.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.j
new file mode 100644
index 0000000..35475dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_6.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.java
new file mode 100644
index 0000000..3aafaba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_6 {
+
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.j
new file mode 100644
index 0000000..cf4e418
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_7.java
+.class public dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmplt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.java
new file mode 100644
index 0000000..8c98983
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpge/jm/T_if_icmpge_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpge.jm;
+
+public class T_if_icmpge_7 {
+    
+    public boolean run(int a, int b) {
+        return a >= b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/Test_if_icmpgt.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/Test_if_icmpgt.java
new file mode 100644
index 0000000..dd19bd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/Test_if_icmpgt.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_1;
+
+public class Test_if_icmpgt extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmpgt_1 t = new T_if_icmpgt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.j
new file mode 100644
index 0000000..8e5abdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpgt_1.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpgt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.java
new file mode 100644
index 0000000..4cb1f12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_1 {
+
+    public int run(int a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.j
new file mode 100644
index 0000000..75f8000
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpgt_2.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.java
new file mode 100644
index 0000000..bacaba5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_2 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.j
new file mode 100644
index 0000000..0fb8567
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpgt_3.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.java
new file mode 100644
index 0000000..2791fc9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_3 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.j
new file mode 100644
index 0000000..ae3796d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpgt_4.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.java
new file mode 100644
index 0000000..390bd08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_4 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.cfh
new file mode 100644
index 0000000..9909d78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 47, h: 0003: utf8{"dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  t  /  j  m  /  T  _  i  f  _  i  c  m  p  g  t  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 74 5f 35 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 102, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 117, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 122, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 129, len 21, h: 000a: utf8{"T_if_icmpgt_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  t  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_5}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_5}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpgt 0007
+        // .  .  .  
+//@mod     a3 00 05    
+           a3 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpgt_5.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.j
new file mode 100644
index 0000000..b04cb99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpgt_5.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.java
new file mode 100644
index 0000000..74f812f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_5 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.cfh
new file mode 100644
index 0000000..1b032b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.cfh
@@ -0,0 +1,203 @@
+//@class:dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 47, h: 0002: utf8{"dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  g  t  /  j  m  /  T  _  i  f  _  i  c  m  p  g  t  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 67 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 67 74 5f 36 
+    // parsed:, offset 62, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 102, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 117, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0a 
+    // parsed:, offset 122, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 129, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 135, len 3, h: 000b: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_6}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 138, len 21, h: 000c: utf8{"T_if_icmpgt_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  g  t  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 67 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpgt.jm.T_if_icmpgt_6}
+// .  .  
+   00 0b 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpgt 0008
+        // .  .  .  
+           a3 00 05 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpgt_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.j
new file mode 100644
index 0000000..118b7c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpgt_6.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.java
new file mode 100644
index 0000000..438ed36
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_6 {
+
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.j
new file mode 100644
index 0000000..f94e884
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpgt_7.java
+.class public dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmple Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.java
new file mode 100644
index 0000000..dce8480
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpgt/jm/T_if_icmpgt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpgt.jm;
+
+public class T_if_icmpgt_7 {
+    
+    public boolean run(int a, int b) {
+        return a > b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/Test_if_icmple.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/Test_if_icmple.java
new file mode 100644
index 0000000..11335e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/Test_if_icmple.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmple.jm.T_if_icmple_1;
+
+public class Test_if_icmple extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1234, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1234, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmple_1 t = new T_if_icmple_1();
+        assertEquals(1, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmple.jm.T_if_icmple_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.j
new file mode 100644
index 0000000..14d7df0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmple_1.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmple Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.java
new file mode 100644
index 0000000..21f0339
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_1 {
+
+    public int run(int a, int b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.j
new file mode 100644
index 0000000..d4c8db7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmple_2.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.java
new file mode 100644
index 0000000..d426d43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_2 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.j
new file mode 100644
index 0000000..f2da81e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmple_3.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.java
new file mode 100644
index 0000000..76b5458
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_3 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.j
new file mode 100644
index 0000000..1a6368b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmple_4.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.java
new file mode 100644
index 0000000..b530f67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_4 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.cfh
new file mode 100644
index 0000000..e83f3b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_5}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 58, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 73, len 47, h: 0008: utf8{"dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  e  /  j  m  /  T  _  i  f  _  i  c  m  p  l  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 35 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 125, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 21, h: 000b: utf8{"T_if_icmple_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 153, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_5}
+// .  .  
+   00 03 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmple 0007
+        // .  .  .  
+//@mod     a4 00 05    
+           a4 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmple_5.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.j
new file mode 100644
index 0000000..3aacfb3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmple_5.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.java
new file mode 100644
index 0000000..09a7272
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_5 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.cfh
new file mode 100644
index 0000000..7f734e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 3, h: 0002: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 18, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 58, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 73, len 47, h: 0008: utf8{"dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  e  /  j  m  /  T  _  i  f  _  i  c  m  p  l  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 36 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 125, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 138, len 21, h: 000c: utf8{"T_if_icmple_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmple.jm.T_if_icmple_6}
+// .  .  
+   00 02 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmple 0008
+        // .  .  .  
+//@mod     a4 00 05    
+           a4 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmple_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.j
new file mode 100644
index 0000000..f8c5961
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmple_6.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmple Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.java
new file mode 100644
index 0000000..9152a6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_6 {
+
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.j
new file mode 100644
index 0000000..13ebcb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmple_7.java
+.class public dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmpgt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.java
new file mode 100644
index 0000000..1080ee2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmple/jm/T_if_icmple_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmple.jm;
+
+public class T_if_icmple_7 {
+    public boolean run(int a, int b) {
+        return a <= b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/Test_if_icmplt.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/Test_if_icmplt.java
new file mode 100644
index 0000000..b318512
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/Test_if_icmplt.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_1;
+
+public class Test_if_icmplt extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0d, 0x0f0e0d0c
+     */
+    public void testN4() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(0x0f0e0d0d, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 0x1234, 0x01001234
+     */
+    public void testN5() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(0x1234, 0x01001234));
+    }
+
+    /**
+     * @title  Arguments = -5, 5
+     */
+    public void testN6() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(-5, 5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1234567, 0
+     */
+    public void testB3() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(1234567, 0));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB4() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_icmplt_1 t = new T_if_icmplt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.j
new file mode 100644
index 0000000..91b3ef6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpge_1.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmplt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.java
new file mode 100644
index 0000000..5cf6dfa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_1 {
+
+    public int run(int a, int b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.j
new file mode 100644
index 0000000..a2c9d4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmplt_2.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.java
new file mode 100644
index 0000000..5c557a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_2 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.j
new file mode 100644
index 0000000..0b80fdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmplt_3.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.java
new file mode 100644
index 0000000..210bfdf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_3 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.j
new file mode 100644
index 0000000..fdf43d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmplt_4.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.java
new file mode 100644
index 0000000..323c06c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_4 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.cfh
new file mode 100644
index 0000000..96d6e1c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 75, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 3, h: 0009: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 85, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 91, len 47, h: 000b: utf8{"dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  t  /  j  m  /  T  _  i  f  _  i  c  m  p  l  t  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 35 
+    // parsed:, offset 138, len 21, h: 000c: utf8{"T_if_icmplt_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  t  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_5}
+// .  .  
+   00 09 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmplt 00ff
+        // .  .  .  
+//@mod     a1 00 05    
+           a1 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmplt_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.j
new file mode 100644
index 0000000..3a8cd46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmplt_5.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.java
new file mode 100644
index 0000000..426cfbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_5 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.cfh
new file mode 100644
index 0000000..7722c6b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 21, h: 0003: utf8{"T_if_icmplt_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  l  t  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 55, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 68, len 8, h: 0005: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 76, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 85, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 91, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 96, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 103, len 3, h: 000a: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_6}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 106, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 112, len 47, h: 000c: utf8{"dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  l  t  /  j  m  /  T  _  i  f  _  i  c  m  p  l  t  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6c 74 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6c 74 5f 36 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmplt.jm.T_if_icmplt_6}
+// .  .  
+   00 0a 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmplt 0008
+        // .  .  .  
+//@mod     a1 00 05    
+           a1 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmplt_6.java"}
+    // .  .  
+       00 03 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.j
new file mode 100644
index 0000000..e0e56f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmplt_6.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmplt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.java
new file mode 100644
index 0000000..8f5f94c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_6 {
+
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.j
new file mode 100644
index 0000000..b702a2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmplt_7.java
+.class public dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmpge Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.java
new file mode 100644
index 0000000..b3cbb72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmplt/jm/T_if_icmplt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmplt.jm;
+
+public class T_if_icmplt_7 {
+    
+    public boolean run(int a, int b) {
+        return a < b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/Test_if_icmpne.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/Test_if_icmpne.java
new file mode 100644
index 0000000..db62187
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/Test_if_icmpne.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_1;
+
+public class Test_if_icmpne extends DxTestCase {
+
+    /**
+     * @title  Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title  Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title  Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title  Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(0x01001234, 0x1234));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title  Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_icmpne_1 t = new T_if_icmpne_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.j
new file mode 100644
index 0000000..b5aba30
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpne_1.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+    iload_2
+    
+    if_icmpne Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.java
new file mode 100644
index 0000000..ea94397
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_1 {
+
+    public int run(int a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.j
new file mode 100644
index 0000000..60a57ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpne_2.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.java
new file mode 100644
index 0000000..2d83a4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_2 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.j
new file mode 100644
index 0000000..eb4f44c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpne_3.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 4
+    .limit locals 3
+
+    iload_1
+;    iload_2
+    dconst_1
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.java
new file mode 100644
index 0000000..2b53702
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_3 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.j
new file mode 100644
index 0000000..92c5f2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpne_4.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+    iload_1
+    ;iload_2
+
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.java
new file mode 100644
index 0000000..beb6454
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_4 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.cfh
new file mode 100644
index 0000000..f0acc92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 21, h: 0007: utf8{"T_if_icmpne_5.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  n  e  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 91, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 96, len 47, h: 0009: utf8{"dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  n  e  /  j  m  /  T  _  i  f  _  i  c  m  p  n  e  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 35 
+    // parsed:, offset 143, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_5}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_5}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:76,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:45,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 215, len 4, h: length: 00000015
+        // .  .  .  .  
+           00 00 00 15 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 00000009
+        // .  .  .  .  
+           00 00 00 09 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpne 00ff
+        // .  .  .  
+//@mod     a0 00 05    
+           a0 00 ff 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 236, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 238, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 240, len 0, h: end attributes[0] 
+// parsed:, offset 240, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 240, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 242, len 0, h:  attributes[0]: 
+    // parsed:, offset 242, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 244, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 248, len 2, h: source: utf8{"T_if_icmpne_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 250, len 0, h: end attributes[0] 
+// parsed:, offset 250, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.j
new file mode 100644
index 0000000..74d20f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpne_5.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.java
new file mode 100644
index 0000000..157e7f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_5 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.cfh
new file mode 100644
index 0000000..1991416
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.cfh
@@ -0,0 +1,204 @@
+//@class:dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 8, h: 0004: utf8{"(II)Z"}
+    // .  .  .  (  I  I  )  Z  
+       01 00 05 28 49 49 29 5a 
+    // parsed:, offset 55, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 64, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 70, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 75, len 47, h: 0008: utf8{"dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  _  i  c  m  p  n  e  /  j  m  /  T  _  i  f  _  i  c  m  p  n  e  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 5f 69 63 6d 70 6e 65 2f 6a 6d 2f 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 36 
+    // parsed:, offset 122, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 129, len 21, h: 000a: utf8{"T_if_icmpne_6.java"}
+    // .  .  .  T  _  i  f  _  i  c  m  p  n  e  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 5f 69 63 6d 70 6e 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000c: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 159, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.if_icmpne.jm.T_if_icmpne_6}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:79,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:48,desc: (II)Z
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 209, len 2, h: descriptor: (II)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 223, len 4, h: code_length: 0000000c
+        // .  .  .  .  
+           00 00 00 0c 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 3, h: 0002: if_icmpne 0008
+        // .  .  .  
+//@mod     a0 00 05    
+           a0 00 06 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 8, len 2, h: 0008: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 10, len 1, h: 000a: nop
+        // .  
+           00 
+        // parsed:, offset 11, len 1, h: 000b: ireturn
+        // .  
+           ac 
+        // parsed:, offset 239, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 241, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (II)Z
+// parsed:, offset 243, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 245, len 0, h:  attributes[0]: 
+    // parsed:, offset 245, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 247, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 251, len 2, h: source: utf8{"T_if_icmpne_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 253, len 0, h: end attributes[0] 
+// parsed:, offset 253, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.j
new file mode 100644
index 0000000..2344281
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpne_6.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    if_icmpne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.java
new file mode 100644
index 0000000..c0ed691
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_6 {
+
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.j b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.j
new file mode 100644
index 0000000..b17f2de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_if_icmpne_7.java
+.class public dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    if_icmpeq Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.java b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.java
new file mode 100644
index 0000000..6d777ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/if_icmpne/jm/T_if_icmpne_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.if_icmpne.jm;
+
+public class T_if_icmpne_7 {
+    
+    public boolean run(int a, int b) {
+        return a != b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/Test_ifeq.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/Test_ifeq.java
new file mode 100644
index 0000000..3927098
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/Test_ifeq.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifeq.jm.T_ifeq_1;
+
+public class Test_ifeq extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifeq_1 t = new T_ifeq_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifeq_1 t = new T_ifeq_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifeq.jm.T_ifeq_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.j
new file mode 100644
index 0000000..ebbf58d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifeq_1.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifeq Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.java
new file mode 100644
index 0000000..4fbd9fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_1 {
+
+    public int run(int a) {
+        return a == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.j
new file mode 100644
index 0000000..55b0609
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifeq_2.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.java
new file mode 100644
index 0000000..86c487b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_2 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.j
new file mode 100644
index 0000000..0d57e2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifeq_3.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.java
new file mode 100644
index 0000000..c511d7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_3 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.j
new file mode 100644
index 0000000..0d3cbb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifeq_4.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1
+
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.java
new file mode 100644
index 0000000..ca0acbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_4 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.cfh
new file mode 100644
index 0000000..cc71d99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifeq/jm/T_ifeq_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 74, len 37, h: 0008: utf8{"dxc/junit/opcodes/ifeq/jm/T_ifeq_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  e  q  /  j  m  /  T  _  i  f  e  q  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 65 71 2f 6a 6d 2f 54 5f 69 66 65 71 5f 35 
+    // parsed:, offset 111, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 118, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 124, len 3, h: 000b: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_5}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 127, len 16, h: 000c: utf8{"T_ifeq_5.java"}
+    // .  .  .  T  _  i  f  e  q  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 65 71 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_5}
+// .  .  
+   00 0b 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifeq 0006
+        // .  .  .  
+//@mod     99 00 05    
+           99 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifeq_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.j
new file mode 100644
index 0000000..004f71c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifeq_5.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.java
new file mode 100644
index 0000000..3ed3f25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_5 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.cfh
new file mode 100644
index 0000000..32cd5c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifeq/jm/T_ifeq_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 16, h: 0005: utf8{"T_ifeq_6.java"}
+    // .  .  .  T  _  i  f  e  q  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 65 71 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 72, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 90, len 37, h: 0009: utf8{"dxc/junit/opcodes/ifeq/jm/T_ifeq_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  e  q  /  j  m  /  T  _  i  f  e  q  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 65 71 2f 6a 6d 2f 54 5f 69 66 65 71 5f 36 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifeq.jm.T_ifeq_6}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifeq 0007
+        // .  .  .  
+//@mod     99 00 05    
+           99 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifeq_6.java"}
+    // .  .  
+       00 05 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.j
new file mode 100644
index 0000000..03b9e49
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifeq_6.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifeq Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.java
new file mode 100644
index 0000000..be53931
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_6 {
+
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.j
new file mode 100644
index 0000000..44eb855
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifeq_7.java
+.class public dxc/junit/opcodes/ifeq/jm/T_ifeq_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.java
new file mode 100644
index 0000000..3bca0e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifeq/jm/T_ifeq_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifeq.jm;
+
+public class T_ifeq_7 {
+    
+    public boolean run(int a) {
+        return a == 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/Test_ifge.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/Test_ifge.java
new file mode 100644
index 0000000..f5ce7d4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/Test_ifge.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifge.jm.T_ifge_1;
+
+public class Test_ifge extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifge_1 t = new T_ifge_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifge_1 t = new T_ifge_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifge.jm.T_ifge_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.j
new file mode 100644
index 0000000..5e1064e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifge_1.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifge Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.java
new file mode 100644
index 0000000..f7f00c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_1 {
+
+    public int run(int a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.j
new file mode 100644
index 0000000..2fa1d3b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifge_2.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.java
new file mode 100644
index 0000000..3531b63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_2 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.j
new file mode 100644
index 0000000..ed463c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifge_3.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.java
new file mode 100644
index 0000000..d41e72f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_3 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.j
new file mode 100644
index 0000000..c8931a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifge_4.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.java
new file mode 100644
index 0000000..c2f54c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_4 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.cfh
new file mode 100644
index 0000000..447a6d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifge/jm/T_ifge_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 16, h: 0002: utf8{"T_ifge_5.java"}
+    // .  .  .  T  _  i  f  g  e  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 31, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 50, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 63, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 72, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 90, len 37, h: 0009: utf8{"dxc/junit/opcodes/ifge/jm/T_ifge_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  e  /  j  m  /  T  _  i  f  g  e  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 65 2f 6a 6d 2f 54 5f 69 66 67 65 5f 35 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifge.jm.T_ifge_5}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifge.jm.T_ifge_5}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifge 00ff
+        // .  .  .  
+//@mod     9c 00 05    
+           9c 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifge_5.java"}
+    // .  .  
+       00 02 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.j
new file mode 100644
index 0000000..fa04b63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifge_5.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.java
new file mode 100644
index 0000000..51b8426
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_5 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.cfh
new file mode 100644
index 0000000..ed3e960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifge/jm/T_ifge_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 37, h: 0007: utf8{"dxc/junit/opcodes/ifge/jm/T_ifge_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  e  /  j  m  /  T  _  i  f  g  e  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 65 2f 6a 6d 2f 54 5f 69 66 67 65 5f 36 
+    // parsed:, offset 106, len 16, h: 0008: utf8{"T_ifge_6.java"}
+    // .  .  .  T  _  i  f  g  e  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 122, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifge.jm.T_ifge_6}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifge.jm.T_ifge_6}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifge 0007
+        // .  .  .  
+//@mod     9c 00 05    
+           9c 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifge_6.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.j
new file mode 100644
index 0000000..be4599c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifge_6.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifge Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.java
new file mode 100644
index 0000000..fef5eda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_6 {
+
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.j
new file mode 100644
index 0000000..90f73f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifge_7.java
+.class public dxc/junit/opcodes/ifge/jm/T_ifge_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    iflt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.java
new file mode 100644
index 0000000..045dd72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifge/jm/T_ifge_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifge.jm;
+
+public class T_ifge_7 {
+    
+    public boolean run(int a) {
+        return a >= 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/Test_ifgt.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/Test_ifgt.java
new file mode 100644
index 0000000..a23c719
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/Test_ifgt.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifgt.jm.T_ifgt_1;
+
+public class Test_ifgt extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifgt_1 t = new T_ifgt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifgt_1 t = new T_ifgt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifgt.jm.T_ifgt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.j
new file mode 100644
index 0000000..b259343
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifgt_1.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifgt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.java
new file mode 100644
index 0000000..5578ce0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_1 {
+
+    public int run(int a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.j
new file mode 100644
index 0000000..16cd6de
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifgt_2.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.java
new file mode 100644
index 0000000..6b130b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_2 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.j
new file mode 100644
index 0000000..986ac04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifgt_3.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.java
new file mode 100644
index 0000000..3e76835
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_3 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.j
new file mode 100644
index 0000000..78a8221
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifgt_4.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.java
new file mode 100644
index 0000000..5b65155
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_4 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.cfh
new file mode 100644
index 0000000..4ce7be3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifgt/jm/T_ifgt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 37, h: 0007: utf8{"dxc/junit/opcodes/ifgt/jm/T_ifgt_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  t  /  j  m  /  T  _  i  f  g  t  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 74 2f 6a 6d 2f 54 5f 69 66 67 74 5f 35 
+    // parsed:, offset 106, len 16, h: 0008: utf8{"T_ifgt_5.java"}
+    // .  .  .  T  _  i  f  g  t  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 122, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_5}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_5}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifgt 00ff
+        // .  .  .  
+//@mod     9d 00 05    
+           9d 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifgt_5.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.j
new file mode 100644
index 0000000..ec5cb22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifgt_5.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.java
new file mode 100644
index 0000000..5153975
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_5 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.cfh
new file mode 100644
index 0000000..0b9b936
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifgt/jm/T_ifgt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 37, h: 0006: utf8{"dxc/junit/opcodes/ifgt/jm/T_ifgt_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  g  t  /  j  m  /  T  _  i  f  g  t  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 67 74 2f 6a 6d 2f 54 5f 69 66 67 74 5f 36 
+    // parsed:, offset 100, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 106, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 111, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 118, len 16, h: 000a: utf8{"T_ifgt_6.java"}
+    // .  .  .  T  _  i  f  g  t  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 67 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 134, len 3, h: 000b: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_6}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 137, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifgt.jm.T_ifgt_6}
+// .  .  
+   00 0b 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifgt 0007
+        // .  .  .  
+//@mod     9d 00 05    
+           9d 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifgt_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.j
new file mode 100644
index 0000000..80abe2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifgt_6.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifgt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.java
new file mode 100644
index 0000000..f56d5e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_6 {
+
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.j
new file mode 100644
index 0000000..175e006
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifgt_7.java
+.class public dxc/junit/opcodes/ifgt/jm/T_ifgt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.java
new file mode 100644
index 0000000..4572fbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifgt/jm/T_ifgt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifgt.jm;
+
+public class T_ifgt_7 {
+    
+    public boolean run(int a) {
+        return a > 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/Test_ifle.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/Test_ifle.java
new file mode 100644
index 0000000..9e722fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/Test_ifle.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifle.jm.T_ifle_1;
+
+public class Test_ifle extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifle_1 t = new T_ifle_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifle_1 t = new T_ifle_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifle.jm.T_ifle_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.j
new file mode 100644
index 0000000..19942fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifle_1.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifle Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.java
new file mode 100644
index 0000000..bef4888
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_1 {
+
+    public int run(int a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.j
new file mode 100644
index 0000000..21916f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifle_2.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.java
new file mode 100644
index 0000000..f5b592b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_2 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.j
new file mode 100644
index 0000000..ce3bacb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifle_3.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.java
new file mode 100644
index 0000000..5c5ea8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_3 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.j
new file mode 100644
index 0000000..1d09835
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifle_4.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.java
new file mode 100644
index 0000000..14731b3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_4 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.cfh
new file mode 100644
index 0000000..1d1f660
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifle/jm/T_ifle_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: type{dxc.junit.opcodes.ifle.jm.T_ifle_5}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 16, h: 0007: utf8{"T_ifle_5.java"}
+    // .  .  .  T  _  i  f  l  e  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 82, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 88, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 93, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 100, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 106, len 37, h: 000c: utf8{"dxc/junit/opcodes/ifle/jm/T_ifle_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  e  /  j  m  /  T  _  i  f  l  e  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 65 2f 6a 6d 2f 54 5f 69 66 6c 65 5f 35 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifle.jm.T_ifle_5}
+// .  .  
+   00 04 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifle 00ff
+        // .  .  .  
+//@mod     9e 00 05    
+           9e 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifle_5.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.j
new file mode 100644
index 0000000..8005cf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifle_5.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.java
new file mode 100644
index 0000000..bec3678
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_5 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.cfh
new file mode 100644
index 0000000..d7097b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifle/jm/T_ifle_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{dxc.junit.opcodes.ifle.jm.T_ifle_6}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 72, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 77, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 84, len 16, h: 000a: utf8{"T_ifle_6.java"}
+    // .  .  .  T  _  i  f  l  e  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 100, len 37, h: 000b: utf8{"dxc/junit/opcodes/ifle/jm/T_ifle_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  e  /  j  m  /  T  _  i  f  l  e  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 65 2f 6a 6d 2f 54 5f 69 66 6c 65 5f 36 
+    // parsed:, offset 137, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifle.jm.T_ifle_6}
+// .  .  
+   00 03 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifle 0007
+        // .  .  .  
+//@mod     9e 00 05    
+           9e 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifle_6.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.j
new file mode 100644
index 0000000..e6d9d8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifle_6.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifle Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.java
new file mode 100644
index 0000000..f3abc61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_6 {
+
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.j
new file mode 100644
index 0000000..649773f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifle_7.java
+.class public dxc/junit/opcodes/ifle/jm/T_ifle_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifgt Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.java
new file mode 100644
index 0000000..02ca988f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifle/jm/T_ifle_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifle.jm;
+
+public class T_ifle_7 {
+    
+    public boolean run(int a) {
+        return a <= 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/Test_iflt.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/Test_iflt.java
new file mode 100644
index 0000000..edd37e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/Test_iflt.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iflt.jm.T_iflt_1;
+
+public class Test_iflt extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_iflt_1 t = new T_iflt_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_iflt_1 t = new T_iflt_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iflt.jm.T_iflt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.j
new file mode 100644
index 0000000..c10806b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iflt_1.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    iflt Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.java
new file mode 100644
index 0000000..2bc2aff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_1 {
+
+    public int run(int a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.j
new file mode 100644
index 0000000..b9d0b34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iflt_2.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.java
new file mode 100644
index 0000000..9f48304
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_2 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.j
new file mode 100644
index 0000000..eec66c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iflt_3.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.java
new file mode 100644
index 0000000..a238c05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_3 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.j
new file mode 100644
index 0000000..ba405a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iflt_4.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.java
new file mode 100644
index 0000000..38e2c68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_4 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.cfh
new file mode 100644
index 0000000..e2301a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/iflt/jm/T_iflt_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{dxc.junit.opcodes.iflt.jm.T_iflt_5}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 72, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 77, len 37, h: 0009: utf8{"dxc/junit/opcodes/iflt/jm/T_iflt_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  t  /  j  m  /  T  _  i  f  l  t  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 74 2f 6a 6d 2f 54 5f 69 66 6c 74 5f 35 
+    // parsed:, offset 114, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 121, len 16, h: 000b: utf8{"T_iflt_5.java"}
+    // .  .  .  T  _  i  f  l  t  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 74 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 137, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.iflt.jm.T_iflt_5}
+// .  .  
+   00 03 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: iflt 00ff
+        // .  .  .  
+//@mod     9b 00 05    
+           9b 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_iflt_5.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.j
new file mode 100644
index 0000000..329d205
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iflt_5.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.java
new file mode 100644
index 0000000..519a973
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_5 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.cfh
new file mode 100644
index 0000000..ee7a8f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/iflt/jm/T_iflt_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 3, h: 0002: type{dxc.junit.opcodes.iflt.jm.T_iflt_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 18, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 66, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 72, len 37, h: 0008: utf8{"dxc/junit/opcodes/iflt/jm/T_iflt_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  l  t  /  j  m  /  T  _  i  f  l  t  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6c 74 2f 6a 6d 2f 54 5f 69 66 6c 74 5f 36 
+    // parsed:, offset 109, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 114, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 121, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 127, len 16, h: 000c: utf8{"T_iflt_6.java"}
+    // .  .  .  T  _  i  f  l  t  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6c 74 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.iflt.jm.T_iflt_6}
+// .  .  
+   00 02 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: iflt 0007
+        // .  .  .  
+//@mod     9b 00 05    
+           9b 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_iflt_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.j
new file mode 100644
index 0000000..69fa9a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iflt_6.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iflt Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.java
new file mode 100644
index 0000000..5d36ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_6 {
+
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.j
new file mode 100644
index 0000000..2e985e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iflt_7.java
+.class public dxc/junit/opcodes/iflt/jm/T_iflt_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifge Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.java
new file mode 100644
index 0000000..ecbf595
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iflt/jm/T_iflt_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iflt.jm;
+
+public class T_iflt_7 {
+    
+    public boolean run(int a) {
+        return a < 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/Test_ifne.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/Test_ifne.java
new file mode 100644
index 0000000..fc4551e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/Test_ifne.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifne.jm.T_ifne_1;
+
+public class Test_ifne extends DxTestCase {
+
+    /**
+     * @title  Argument = 5
+     */
+    public void testN1() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN2() {
+        T_ifne_1 t = new T_ifne_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @title  Arguments = -5
+     */
+    public void testN3() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ifne_1 t = new T_ifne_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifne.jm.T_ifne_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.j
new file mode 100644
index 0000000..34204a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_1.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    
+    iload_1
+   
+    ifne Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.java
new file mode 100644
index 0000000..732a1a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_1 {
+
+    public int run(int a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.j
new file mode 100644
index 0000000..f5c9b87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_2.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+;    iload_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.java
new file mode 100644
index 0000000..ae1a1d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_2 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.j
new file mode 100644
index 0000000..7fb2fa9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_3.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 4
+    .limit locals 3
+
+;    iload_1
+    dconst_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.java
new file mode 100644
index 0000000..20722fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_3 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.j
new file mode 100644
index 0000000..5149438
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_4.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    iload_1
+
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.java
new file mode 100644
index 0000000..8dd3ad5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_4 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.cfh
new file mode 100644
index 0000000..d29f6ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifne/jm/T_ifne_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 16, h: 0002: utf8{"T_ifne_5.java"}
+    // .  .  .  T  _  i  f  n  e  _  5  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6e 65 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 31, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 50, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 63, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 72, len 7, h: 0006: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 90, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 37, h: 000a: utf8{"dxc/junit/opcodes/ifne/jm/T_ifne_5"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  e  /  j  m  /  T  _  i  f  n  e  _  5  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 65 2f 6a 6d 2f 54 5f 69 66 6e 65 5f 35 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifne.jm.T_ifne_5}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifne.jm.T_ifne_5}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:75,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:44,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 06 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 199, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifne 00ff
+        // .  .  .  
+//@mod     9a 00 05    
+           9a 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 219, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 221, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 223, len 0, h: end attributes[0] 
+// parsed:, offset 223, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 223, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 225, len 0, h:  attributes[0]: 
+    // parsed:, offset 225, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 227, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 231, len 2, h: source: utf8{"T_ifne_5.java"}
+    // .  .  
+       00 02 
+// parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.j
new file mode 100644
index 0000000..96b5869
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_5.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.java
new file mode 100644
index 0000000..13dac02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_5 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.cfh
new file mode 100644
index 0000000..d195942
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifne/jm/T_ifne_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 7, h: 0005: utf8{"(I)Z"}
+    // .  .  .  (  I  )  Z  
+       01 00 04 28 49 29 5a 
+    // parsed:, offset 63, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 69, len 16, h: 0007: utf8{"T_ifne_6.java"}
+    // .  .  .  T  _  i  f  n  e  _  6  .  j  a  v  a  
+       01 00 0d 54 5f 69 66 6e 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 90, len 37, h: 0009: utf8{"dxc/junit/opcodes/ifne/jm/T_ifne_6"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  e  /  j  m  /  T  _  i  f  n  e  _  6  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 65 2f 6a 6d 2f 54 5f 69 66 6e 65 5f 36 
+    // parsed:, offset 127, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 134, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 140, len 3, h: 000c: type{dxc.junit.opcodes.ifne.jm.T_ifne_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 146, len 0, h: end constant_pool
+// parsed:, offset 146, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 148, len 2, h: this_class: type{dxc.junit.opcodes.ifne.jm.T_ifne_6}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 152, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 156, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 158, len:78,desc: ()V
+// parsed:, offset 158, len 0, h:  methods[0]: 
+    // parsed:, offset 158, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 160, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 162, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 164, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 166, len 0, h:  attributes[0]: 
+        // parsed:, offset 166, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 168, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 172, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 176, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 185, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 187, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 189, len 0, h: end attributes[0] 
+// parsed:, offset 189, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 189, len:47,desc: (I)Z
+// parsed:, offset 189, len 0, h:  methods[1]: 
+    // parsed:, offset 189, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 193, len 2, h: descriptor: (I)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 195, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 197, len 0, h:  attributes[0]: 
+        // parsed:, offset 197, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 199, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 203, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 205, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 207, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 3, h: 0001: ifne 0007
+        // .  .  .  
+//@mod     9a 00 05    
+           9a 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)Z
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ifne_6.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.j
new file mode 100644
index 0000000..9ac3dfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_6.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(I)Z
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    ifne Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.java
new file mode 100644
index 0000000..4c1f04a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_6 {
+
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.j
new file mode 100644
index 0000000..4c55236
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_7.java
+.class public dxc/junit/opcodes/ifne/jm/T_ifne_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ifeq Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.java
new file mode 100644
index 0000000..29af909
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifne/jm/T_ifne_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifne.jm;
+
+public class T_ifne_7 {
+    
+    public boolean run(int a) {
+        return a != 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/Test_ifnonnull.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/Test_ifnonnull.java
new file mode 100644
index 0000000..d8b5c71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/Test_ifnonnull.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnonnull;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_1;
+
+public class Test_ifnonnull extends DxTestCase {
+
+    /**
+     * @title  Argument = this
+     */
+    public void testN1() {
+        T_ifnonnull_1 t = new T_ifnonnull_1();
+        assertEquals(1, t.run(this));
+    }
+
+    /**
+     * @title  Argument = null
+     */
+    public void testN2() {
+        T_ifnonnull_1 t = new T_ifnonnull_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(null));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.j
new file mode 100644
index 0000000..2eb0c73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_1.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/Object;)I
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+   
+    ifnonnull Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.java
new file mode 100644
index 0000000..014b4f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_1 {
+
+    public int run(Object o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.j
new file mode 100644
index 0000000..813c5aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnonnull_2.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.java
new file mode 100644
index 0000000..9285306
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_2 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.j
new file mode 100644
index 0000000..ab9f3ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnonnull_3.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 4
+    .limit locals 3
+
+;    aload_1
+    dconst_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.java
new file mode 100644
index 0000000..ae1407f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_3 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.j
new file mode 100644
index 0000000..396a721
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnonnull_4.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    aload_1
+
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.java
new file mode 100644
index 0000000..adba24a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_4 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.cfh
new file mode 100644
index 0000000..b430047
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 47, h: 0003: utf8{"dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  o  n  n  u  l  l  /  j  m  /  T  _  i  f  n  o  n  n  u  l  l  _  5  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 6f 6e 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 35 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 118, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 127, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 133, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 138, len 21, h: 0009: utf8{"T_ifnonnull_5.java"}
+    // .  .  .  T  _  i  f  n  o  n  n  u  l  l  _  5  .  j  a  v  a  
+       01 00 12 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 159, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 166, len 3, h: 000b: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_5}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 169, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 175, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_5}
+// .  .  
+   00 0b 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 190, len:75,desc: ()V
+// parsed:, offset 190, len 0, h:  methods[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 194, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 200, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 204, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 217, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 219, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 221, len:44,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 221, len 0, h:  methods[1]: 
+    // parsed:, offset 221, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 223, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 225, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 227, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 0, h:  attributes[0]: 
+        // parsed:, offset 229, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 231, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 235, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 237, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 239, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnonnull 00ff
+        // .  .  .  
+//@mod     c7 00 05    
+           c7 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 251, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 253, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 255, len 0, h: end attributes[0] 
+// parsed:, offset 255, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 255, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 257, len 0, h:  attributes[0]: 
+    // parsed:, offset 257, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 259, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 263, len 2, h: source: utf8{"T_ifnonnull_5.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 265, len 0, h: end attributes[0] 
+// parsed:, offset 265, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.j
new file mode 100644
index 0000000..087febb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnonnull_5.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.java
new file mode 100644
index 0000000..8d400cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_5 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.cfh
new file mode 100644
index 0000000..913fcfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 47, h: 0003: utf8{"dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  o  n  n  u  l  l  /  j  m  /  T  _  i  f  n  o  n  n  u  l  l  _  6  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 6f 6e 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 36 
+    // parsed:, offset 81, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 94, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 118, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 127, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 133, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 138, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 145, len 3, h: 000a: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_6}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 148, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 154, len 21, h: 000c: utf8{"T_ifnonnull_6.java"}
+    // .  .  .  T  _  i  f  n  o  n  n  u  l  l  _  6  .  j  a  v  a  
+       01 00 12 54 5f 69 66 6e 6f 6e 6e 75 6c 6c 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 175, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.ifnonnull.jm.T_ifnonnull_6}
+// .  .  
+   00 0a 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 190, len:78,desc: ()V
+// parsed:, offset 190, len 0, h:  methods[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 194, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 200, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 204, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 217, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 219, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 221, len:47,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 221, len 0, h:  methods[1]: 
+    // parsed:, offset 221, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 223, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 225, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 227, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 0, h:  attributes[0]: 
+        // parsed:, offset 229, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 231, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 235, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 237, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 239, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnonnull 0007
+        // .  .  .  
+//@mod     c7 00 05    
+           c7 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: wide
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 254, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 256, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 258, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 260, len 0, h:  attributes[0]: 
+    // parsed:, offset 260, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 262, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 266, len 2, h: source: utf8{"T_ifnonnull_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 268, len 0, h: end attributes[0] 
+// parsed:, offset 268, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.j
new file mode 100644
index 0000000..10daa6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnonnull_6.java
+.class public dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnonnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.java
new file mode 100644
index 0000000..062b42a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnonnull/jm/T_ifnonnull_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnonnull.jm;
+
+public class T_ifnonnull_6 {
+
+    public boolean run(Object o) {
+        return o != null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/Test_ifnull.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/Test_ifnull.java
new file mode 100644
index 0000000..a7b5eac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/Test_ifnull.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnull;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ifnull.jm.T_ifnull_1;
+
+public class Test_ifnull extends DxTestCase {
+
+    /**
+     * @title  Argument = this
+     */
+    public void testN1() {
+        T_ifnull_1 t = new T_ifnull_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(this));
+    }
+
+    /**
+     * @title  Argument = null
+     */
+    public void testN2() {
+        T_ifnull_1 t = new T_ifnull_1();
+        assertEquals(1, t.run(null));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ifnull.jm.T_ifnull_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.j
new file mode 100644
index 0000000..e95e9f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifne_1.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+; this method returns 1234 in case of failed comparison to check that execution proceeds
+; at the address following if_acmpeq instruction
+.method public run(Ljava/lang/Object;)I
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+   
+    ifnull Label0
+    sipush 1234
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.java
new file mode 100644
index 0000000..73d7b4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_1 {
+
+    public int run(Object o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.j
new file mode 100644
index 0000000..77cbbd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnull_2.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.java
new file mode 100644
index 0000000..2efb995
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_2 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.j
new file mode 100644
index 0000000..04c94b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnull_3.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 4
+    .limit locals 3
+
+    dconst_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.java
new file mode 100644
index 0000000..44c32e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_3 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.j
new file mode 100644
index 0000000..780f5bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnull_4.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 3
+    .limit locals 3
+
+    lconst_1    
+;    aload_1
+
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.java
new file mode 100644
index 0000000..0a59962
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_4 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.cfh
new file mode 100644
index 0000000..b507146
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ifnull/jm/T_ifnull_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 24, h: 0004: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 71, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 80, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 86, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 91, len 41, h: 0008: utf8{"dxc/junit/opcodes/ifnull/jm/T_ifnull_5"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  u  l  l  /  j  m  /  T  _  i  f  n  u  l  l  _  5  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 75 6c 6c 5f 35 
+    // parsed:, offset 132, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 139, len 3, h: 000a: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_5}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 142, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 148, len 18, h: 000c: utf8{"T_ifnull_5.java"}
+    // .  .  .  T  _  i  f  n  u  l  l  _  5  .  j  a  v  a  
+       01 00 0f 54 5f 69 66 6e 75 6c 6c 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 166, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 169, len 0, h: end constant_pool
+// parsed:, offset 169, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 171, len 2, h: this_class: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_5}
+// .  .  
+   00 0a 
+// parsed:, offset 173, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 175, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 179, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 181, len:75,desc: ()V
+// parsed:, offset 181, len 0, h:  methods[0]: 
+    // parsed:, offset 181, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 183, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 185, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 187, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 0, h:  attributes[0]: 
+        // parsed:, offset 189, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 191, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 195, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 208, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 210, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 212, len 0, h: end attributes[0] 
+// parsed:, offset 212, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 212, len:44,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 212, len 0, h:  methods[1]: 
+    // parsed:, offset 212, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 214, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 216, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 04 
+    // parsed:, offset 218, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 0, h:  attributes[0]: 
+        // parsed:, offset 220, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 222, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 226, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 230, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnull 00ff
+        // .  .  .  
+//@mod     c6 00 05    
+           c6 00 ff 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 242, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 244, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 246, len 0, h: end attributes[0] 
+// parsed:, offset 246, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 246, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 248, len 0, h:  attributes[0]: 
+    // parsed:, offset 248, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 250, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 254, len 2, h: source: utf8{"T_ifnull_5.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 256, len 0, h: end attributes[0] 
+// parsed:, offset 256, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.j
new file mode 100644
index 0000000..bf01958
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnull_5.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.java
new file mode 100644
index 0000000..4a67ef1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_5 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.cfh
new file mode 100644
index 0000000..faf3fcd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.cfh
@@ -0,0 +1,201 @@
+//@class:dxc/junit/opcodes/ifnull/jm/T_ifnull_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 18, h: 0003: utf8{"T_ifnull_6.java"}
+    // .  .  .  T  _  i  f  n  u  l  l  _  6  .  j  a  v  a  
+       01 00 0f 54 5f 69 66 6e 75 6c 6c 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 52, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 65, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 89, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 98, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 104, len 41, h: 0008: utf8{"dxc/junit/opcodes/ifnull/jm/T_ifnull_6"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  f  n  u  l  l  /  j  m  /  T  _  i  f  n  u  l  l  _  6  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 66 6e 75 6c 6c 2f 6a 6d 2f 54 5f 69 66 6e 75 6c 6c 5f 36 
+    // parsed:, offset 145, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 150, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 157, len 3, h: 000b: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_6}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 160, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 166, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 169, len 0, h: end constant_pool
+// parsed:, offset 169, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 171, len 2, h: this_class: type{dxc.junit.opcodes.ifnull.jm.T_ifnull_6}
+// .  .  
+   00 0b 
+// parsed:, offset 173, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 175, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 179, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 181, len:78,desc: ()V
+// parsed:, offset 181, len 0, h:  methods[0]: 
+    // parsed:, offset 181, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 183, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 185, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 187, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 0, h:  attributes[0]: 
+        // parsed:, offset 189, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 191, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 195, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 208, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 210, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 212, len 0, h: end attributes[0] 
+// parsed:, offset 212, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 212, len:47,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 212, len 0, h:  methods[1]: 
+    // parsed:, offset 212, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 214, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 216, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 218, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 0, h:  attributes[0]: 
+        // parsed:, offset 220, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 222, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 226, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 230, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: ifnull 0007
+        // .  .  .  
+//@mod     c6 00 05    
+           c6 00 06 
+        // parsed:, offset 4, len 1, h: 0004: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 6, len 1, h: 0006: nop
+        // .  
+//@mod     00    
+           c4 
+        // parsed:, offset 7, len 2, h: 0007: iload 01
+        // .  .  
+           15 01 
+        // parsed:, offset 9, len 1, h: 0009: nop
+        // .  
+           00 
+        // parsed:, offset 10, len 1, h: 000a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 245, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 247, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 249, len 0, h: end attributes[0] 
+// parsed:, offset 249, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 249, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 251, len 0, h:  attributes[0]: 
+    // parsed:, offset 251, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 253, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 257, len 2, h: source: utf8{"T_ifnull_6.java"}
+    // .  .  
+       00 03 
+// parsed:, offset 259, len 0, h: end attributes[0] 
+// parsed:, offset 259, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.j
new file mode 100644
index 0000000..26ed54c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ifnull_6.java
+.class public dxc/junit/opcodes/ifnull/jm/T_ifnull_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    ifnull Label0
+    iconst_0
+    ireturn
+
+    Label0:
+    nop
+    iload 1
+    nop
+;    iconst_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.java
new file mode 100644
index 0000000..8429521
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ifnull/jm/T_ifnull_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ifnull.jm;
+
+public class T_ifnull_6 {
+
+    public boolean run(Object o) {
+        return o == null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/Test_iinc.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/Test_iinc.java
new file mode 100644
index 0000000..f512026
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/Test_iinc.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iinc.jm.T_iinc_1;
+import dxc.junit.opcodes.iinc.jm.T_iinc_1_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_2;
+import dxc.junit.opcodes.iinc.jm.T_iinc_2_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_3;
+import dxc.junit.opcodes.iinc.jm.T_iinc_3_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_4;
+import dxc.junit.opcodes.iinc.jm.T_iinc_4_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_5;
+import dxc.junit.opcodes.iinc.jm.T_iinc_5_w;
+import dxc.junit.opcodes.iinc.jm.T_iinc_6;
+import dxc.junit.opcodes.iinc.jm.T_iinc_6_w;
+
+public class Test_iinc extends DxTestCase {
+
+    /*
+     * NORMAL IINC VERSION
+     */
+
+    /**
+     * @title  Increment by 1
+     */
+    public void testN1() {
+        T_iinc_1 t = new T_iinc_1();
+        assertEquals(5, t.run(4));
+    }
+
+    /**
+     * @title  Increment by -1
+     */
+    public void testN2() {
+        T_iinc_2 t = new T_iinc_2();
+        assertEquals(3, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 63
+     */
+    public void testN3() {
+        T_iinc_3 t = new T_iinc_3();
+        assertEquals(67, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB1() {
+        T_iinc_4 t = new T_iinc_4();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB2() {
+        T_iinc_4 t = new T_iinc_4();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by 127
+     */
+    public void testB3() {
+        T_iinc_5 t = new T_iinc_5();
+        assertEquals(128, t.run(1));
+    }
+
+    /**
+     * @title  Increment by 127
+     */
+    public void testB4() {
+        T_iinc_5 t = new T_iinc_5();
+        assertEquals(126, t.run(-1));
+    }
+
+    /**
+     * @title  Increment by 127
+     */
+    public void testB5() {
+        T_iinc_5 t = new T_iinc_5();
+        assertEquals(-2147483521, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by -128
+     */
+    public void testB6() {
+        T_iinc_6 t = new T_iinc_6();
+        assertEquals(-127, t.run(1));
+    }
+
+    /**
+     * @title  Increment by -128
+     */
+    public void testB7() {
+        T_iinc_6 t = new T_iinc_6();
+        assertEquals(-128, t.run(0));
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than
+     * max_locals-1.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be a nonnegative integer.
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE IINC VERSION
+     */
+
+    /**
+     * @title  Increment by 1
+     */
+    public void testN4() {
+        T_iinc_1_w t = new T_iinc_1_w();
+        assertEquals(5, t.run(4));
+    }
+
+    /**
+     * @title  Increment by -1
+     */
+    public void testN5() {
+        T_iinc_2_w t = new T_iinc_2_w();
+        assertEquals(3, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 7763
+     */
+    public void testN6() {
+        T_iinc_3_w t = new T_iinc_3_w();
+        assertEquals(7767, t.run(4));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB8() {
+        T_iinc_4_w t = new T_iinc_4_w();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Increment by 0
+     */
+    public void testB9() {
+        T_iinc_4_w t = new T_iinc_4_w();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by 32767
+     */
+    public void testB10() {
+        T_iinc_5_w t = new T_iinc_5_w();
+        assertEquals(32768, t.run(1));
+    }
+
+    /**
+     * @title  Increment by 32767
+     */
+    public void testB11() {
+        T_iinc_5_w t = new T_iinc_5_w();
+        assertEquals(32766, t.run(-1));
+    }
+
+    /**
+     * @title  Increment by 32767
+     */
+    public void testB12() {
+        T_iinc_5_w t = new T_iinc_5_w();
+        assertEquals(-2147450881, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Increment by -32768
+     */
+    public void testB13() {
+        T_iinc_6_w t = new T_iinc_6_w();
+        assertEquals(-32767, t.run(1));
+    }
+
+    /**
+     * @title  Increment by -32768
+     */
+    public void testB14() {
+        T_iinc_6_w t = new T_iinc_6_w();
+        assertEquals(-32768, t.run(0));
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than
+     * max_locals-1.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_7_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be a nonnegative integer.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_8_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_9_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iinc.jm.T_iinc_10_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.j
new file mode 100644
index 0000000..403078c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_1.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iinc 1 1
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.java
new file mode 100644
index 0000000..9bcfb92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_1 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.j
new file mode 100644
index 0000000..9d0dfed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_10.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 4
+
+    lconst_1
+    lstore 2
+    iinc 2 1
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.java
new file mode 100644
index 0000000..6e0f42b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_10 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.j
new file mode 100644
index 0000000..82129ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_10_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_10_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    iinc 260 1
+    iload 260
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.java
new file mode 100644
index 0000000..cedfff7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_10_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_10_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.j
new file mode 100644
index 0000000..5c88a81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_1.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+    
+    iload_1
+    istore 270
+    iinc 270 1
+    iload 270
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.java
new file mode 100644
index 0000000..1f2348e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_1_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.j
new file mode 100644
index 0000000..3faa1ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_2.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 -1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.java
new file mode 100644
index 0000000..e4b3725
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_2 {
+
+    public int run(int a) {
+        return --a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.j
new file mode 100644
index 0000000..63ed027
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_2_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+
+    iload_1
+    istore 270
+    iinc 270 -1
+    iload 270
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.java
new file mode 100644
index 0000000..952321f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_2_w {
+
+    public int run(int a) {
+        return --a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.j
new file mode 100644
index 0000000..f22fe25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_3.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 63
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.java
new file mode 100644
index 0000000..8b3f2e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_3 {
+
+    public int run(int a) {
+        a += 63;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.j
new file mode 100644
index 0000000..69d795f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_3_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 7763
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.java
new file mode 100644
index 0000000..4da58fe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_3_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_3_w {
+
+    public int run(int a) {
+        a += 7763;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.j
new file mode 100644
index 0000000..e944fa3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_4.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 0
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.java
new file mode 100644
index 0000000..33b93ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_4 {
+
+    public int run(int a) {
+        a += 0;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.j
new file mode 100644
index 0000000..cb5907e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_4_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 3000
+
+    iload_1
+    istore 2500
+    iinc 2500 0
+    iload 2500
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.java
new file mode 100644
index 0000000..ea02795
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_4_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_4_w {
+
+    public int run(int a) {
+        a += 0;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.j
new file mode 100644
index 0000000..4371611
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_5.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 30
+
+    iload_1
+    istore 25
+    iinc 25 127
+    iload 25
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.java
new file mode 100644
index 0000000..bbeef43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_5 {
+
+    public int run(int a) {
+        a += 127;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.j
new file mode 100644
index 0000000..f3b9b52
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_5_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+
+    iload_1
+    istore 257
+    iinc 257 32767
+    iload 257
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.java
new file mode 100644
index 0000000..b80fab8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_5_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_5_w {
+
+    public int run(int a) {
+        a += 32767;
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.j
new file mode 100644
index 0000000..caaf6ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_6.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 1 -128
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.java
new file mode 100644
index 0000000..f04d664
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_6 {
+
+     public int run(int a) {
+         a += -128;
+         return a;
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.j
new file mode 100644
index 0000000..5b004ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_6_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+    
+    iload_1
+    istore 260
+
+    iinc 260 -32768
+    iload 260
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.java
new file mode 100644
index 0000000..47a9fd1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_6_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_6_w {
+
+     public int run(int a) {
+         a += -32768;
+         return a;
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.j
new file mode 100644
index 0000000..acd3e81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_7.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc 2 1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.java
new file mode 100644
index 0000000..8915c15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_7 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.j
new file mode 100644
index 0000000..a885b87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_7_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_7_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 300
+
+    iinc 300 1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.java
new file mode 100644
index 0000000..dcdc59e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_7_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_7_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.j
new file mode 100644
index 0000000..9af573f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_8.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc -2 1
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.java
new file mode 100644
index 0000000..90b3421
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_8 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.j
new file mode 100644
index 0000000..6ba8c0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_8_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_8_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iinc -2 32001
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.java
new file mode 100644
index 0000000..2d4fd16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_8_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_8_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.j
new file mode 100644
index 0000000..d41db14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_9.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 4
+
+    dconst_1
+    dstore 2
+    iinc 2 1
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.java
new file mode 100644
index 0000000..64c04d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_9 {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.j
new file mode 100644
index 0000000..09efab5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iinc_9_w.java
+.class public dxc/junit/opcodes/iinc/jm/T_iinc_9_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    iinc 260 1
+    iload 260
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.java
new file mode 100644
index 0000000..f2f6934
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iinc/jm/T_iinc_9_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iinc.jm;
+
+public class T_iinc_9_w {
+
+    public int run(int a) {
+        return ++a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/Test_iload.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/Test_iload.java
new file mode 100644
index 0000000..71cf115
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/Test_iload.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload.jm.T_iload_1;
+import dxc.junit.opcodes.iload.jm.T_iload_1_w;
+import dxc.junit.opcodes.iload.jm.T_iload_2;
+import dxc.junit.opcodes.iload.jm.T_iload_2_w;
+
+public class Test_iload extends DxTestCase {
+
+    /*
+     * NORMAL ILOAD VERSION
+     */
+
+    /**
+     * @title  Test iload 1
+     */
+    public void testN1() {
+        T_iload_1 t = new T_iload_1();
+        assertEquals(4, t.run());
+    }
+
+    /**
+     * @title  Test iload 255
+     */
+    public void testN2() {
+        T_iload_2 t = new T_iload_2();
+        assertEquals(3, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ILOAD VERSION
+     */
+
+    /**
+     * @title  Test iload 257
+     */
+    public void testN3() {
+        T_iload_1_w t = new T_iload_1_w();
+        assertEquals(4, t.run());
+    }
+
+    /**
+     * @title  Test iload_w 1
+     */
+    public void testN4() {
+        T_iload_2_w t = new T_iload_2_w();
+        assertEquals(3, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload.jm.T_iload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.j
new file mode 100644
index 0000000..3083ee0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 6
+    
+    iconst_4
+    istore 4
+    iconst_3
+    iload 4
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.java
new file mode 100644
index 0000000..9bef2f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_1 {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.j
new file mode 100644
index 0000000..9e31e93
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_4
+    istore 257
+    iconst_3
+    iload 257
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.java
new file mode 100644
index 0000000..57842b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_1_w {
+
+    public int run() {
+        return 4;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.j
new file mode 100644
index 0000000..dfbad28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_3
+    istore 255
+    iconst_2
+    iload 255
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.java
new file mode 100644
index 0000000..c75bf95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_2 {
+
+      public int run() {
+            return 3;
+        }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.j
new file mode 100644
index 0000000..d11251f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_3
+    istore 1
+    iconst_2
+    iload_w 1
+    
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.java
new file mode 100644
index 0000000..fe5b114
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_2_w {
+
+      public int run() {
+            return 3;
+        }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.j
new file mode 100644
index 0000000..eaa2990
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.java
new file mode 100644
index 0000000..36e8376
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.j
new file mode 100644
index 0000000..9e892c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 300
+
+    iload 300
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.java
new file mode 100644
index 0000000..6bf6191
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_3_w {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.j
new file mode 100644
index 0000000..318a2a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_4.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.java
new file mode 100644
index 0000000..1fe18fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.j
new file mode 100644
index 0000000..541c077
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_4_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    iload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.java
new file mode 100644
index 0000000..c293b5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_4_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.j
new file mode 100644
index 0000000..7bf6e93
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_5.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.java
new file mode 100644
index 0000000..67cb0a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.j
new file mode 100644
index 0000000..91208fd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_5_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 300
+
+    lconst_1
+    lstore 260
+    
+    iload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.java
new file mode 100644
index 0000000..78882d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_5_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.j
new file mode 100644
index 0000000..9363f54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_6.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    istore_0
+    
+    iload 0
+    iload 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.java
new file mode 100644
index 0000000..4b0ca5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.j
new file mode 100644
index 0000000..dd93b27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_6_w.java
+.class public dxc/junit/opcodes/iload/jm/T_iload_6_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 300
+
+    iconst_1
+    istore 260
+    
+    iload_w 260
+    iload_w 260
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.java
new file mode 100644
index 0000000..f5e118b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload/jm/T_iload_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload.jm;
+
+public class T_iload_6_w {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/Test_iload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/Test_iload_0.java
new file mode 100644
index 0000000..ffb8684
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/Test_iload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_0.jm.T_iload_0_1;
+import dxc.junit.opcodes.iload_0.jm.T_iload_0_6;
+
+public class Test_iload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_0_1.run());
+    }
+
+    /**
+     * @title  equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_0.jm.T_iload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.j
new file mode 100644
index 0000000..3aa9a54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_0_1.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore_0
+    iconst_4
+    iload_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.java
new file mode 100644
index 0000000..1cb2ba3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.j
new file mode 100644
index 0000000..703b886
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_0_2.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.java
new file mode 100644
index 0000000..c3c2c76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.j
new file mode 100644
index 0000000..2b1af46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_0_3.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.java
new file mode 100644
index 0000000..801d3ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.j
new file mode 100644
index 0000000..3df46a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_0_4.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_0
+    
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.java
new file mode 100644
index 0000000..c92ee08
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.j
new file mode 100644
index 0000000..9505ede
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_0_5.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    istore_0
+    
+    iload_0
+    iload_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.java
new file mode 100644
index 0000000..b86d61f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.j
new file mode 100644
index 0000000..8029a62
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_0_6.java
+.class public dxc/junit/opcodes/iload_0/jm/T_iload_0_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 1
+
+    iconst_4
+    istore_0
+
+    iload_0
+    iload 0
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.java
new file mode 100644
index 0000000..9c12736
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_0/jm/T_iload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_0.jm;
+
+public class T_iload_0_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/Test_iload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/Test_iload_1.java
new file mode 100644
index 0000000..a41ed26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/Test_iload_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_1.jm.T_iload_1_1;
+import dxc.junit.opcodes.iload_1.jm.T_iload_1_6;
+
+public class Test_iload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_1_1.run());
+    }
+
+    /**
+     * @title equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_1.jm.T_iload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.j
new file mode 100644
index 0000000..79c23dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1_1.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_3
+    istore_1
+    iconst_4
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.java
new file mode 100644
index 0000000..2ecc1ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.j
new file mode 100644
index 0000000..8b5e52f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1_2.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.java
new file mode 100644
index 0000000..f7fcd5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.j
new file mode 100644
index 0000000..63d1216
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1_3.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.java
new file mode 100644
index 0000000..48dc77c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.j
new file mode 100644
index 0000000..aebcb4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1_4.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    lstore_1
+    
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.java
new file mode 100644
index 0000000..a7fc0d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.j
new file mode 100644
index 0000000..9dc1a4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1_5.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    istore_1
+    
+    iload_1
+    iload_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.java
new file mode 100644
index 0000000..e9bd6c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.j
new file mode 100644
index 0000000..019b7a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_1_6.java
+.class public dxc/junit/opcodes/iload_1/jm/T_iload_1_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    iconst_4
+    istore_1
+
+    iload_1
+    iload 1
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.java
new file mode 100644
index 0000000..37f65c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_1/jm/T_iload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_1.jm;
+
+public class T_iload_1_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/Test_iload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/Test_iload_2.java
new file mode 100644
index 0000000..b42cc97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/Test_iload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_2.jm.T_iload_2_1;
+import dxc.junit.opcodes.iload_2.jm.T_iload_2_6;
+
+public class Test_iload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_2_1.run());
+    }
+
+    /**
+     * @title equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_2.jm.T_iload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.j
new file mode 100644
index 0000000..4b4acb6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2_1.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 3
+    
+    iconst_3
+    istore_2
+    iconst_4
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.java
new file mode 100644
index 0000000..a348490
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.j
new file mode 100644
index 0000000..aea12fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2_2.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.java
new file mode 100644
index 0000000..5ebd62f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.j
new file mode 100644
index 0000000..e3731cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2_3.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    dconst_1
+    dstore_2
+    
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.java
new file mode 100644
index 0000000..72149ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.j
new file mode 100644
index 0000000..18b80f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2_4.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1
+    lstore_2
+    
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.java
new file mode 100644
index 0000000..904c14c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.j
new file mode 100644
index 0000000..4390cbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2_5.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 4
+
+    iconst_1
+    istore_2
+    
+    iload_2
+    iload_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.java
new file mode 100644
index 0000000..db95cae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.j
new file mode 100644
index 0000000..8ca7a9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_2_6.java
+.class public dxc/junit/opcodes/iload_2/jm/T_iload_2_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    iconst_4
+    istore_2
+
+    iload_2
+    iload 2
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.java
new file mode 100644
index 0000000..737eb18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_2/jm/T_iload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_2.jm;
+
+public class T_iload_2_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/Test_iload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/Test_iload_3.java
new file mode 100644
index 0000000..ac47b59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/Test_iload_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iload_3.jm.T_iload_3_1;
+import dxc.junit.opcodes.iload_3.jm.T_iload_3_6;
+
+public class Test_iload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_iload_3_1.run());
+    }
+
+    /**
+     * @title equality of iload_<n> and iload <n>
+     */
+    public void testN2() {
+        assertTrue(T_iload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iload_3.jm.T_iload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.j
new file mode 100644
index 0000000..8b18818
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3_1.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 4
+    
+    iconst_3
+    istore_3
+    iconst_4
+    iload_3
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.java
new file mode 100644
index 0000000..88b4b61
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.j
new file mode 100644
index 0000000..6e75ed3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3_2.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.java
new file mode 100644
index 0000000..4ad7106
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.j
new file mode 100644
index 0000000..8bc3a02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3_3.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    dconst_1
+    dstore_3
+    
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.java
new file mode 100644
index 0000000..8660cab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.j
new file mode 100644
index 0000000..cdd2fa8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3_4.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 6
+
+    lconst_1
+    lstore_3
+    
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.java
new file mode 100644
index 0000000..86fe370
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.j
new file mode 100644
index 0000000..94aeec4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3_5.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    iconst_1
+    istore_3
+    
+    iload_3
+    iload_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.java
new file mode 100644
index 0000000..8604dce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.j
new file mode 100644
index 0000000..9267b43
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iload_3_6.java
+.class public dxc/junit/opcodes/iload_3/jm/T_iload_3_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    iconst_4
+    istore_3
+
+    iload_3
+    iload 3
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.java
new file mode 100644
index 0000000..28d17a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iload_3/jm/T_iload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iload_3.jm;
+
+public class T_iload_3_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/Test_imul.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/Test_imul.java
new file mode 100644
index 0000000..2db80b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/Test_imul.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.imul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.imul.jm.T_imul_1;
+
+public class Test_imul extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_imul_1 t = new T_imul_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.imul.jm.T_imul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.j
new file mode 100644
index 0000000..b3ba15a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_imul_1.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    imul
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.java
new file mode 100644
index 0000000..38b1298
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.j
new file mode 100644
index 0000000..d00f4e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_imul_2.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    imul
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.java
new file mode 100644
index 0000000..123e230
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_2 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.j
new file mode 100644
index 0000000..960c58c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_imul_3.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    imul
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.java
new file mode 100644
index 0000000..cad2df6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_3 {
+
+    public int run(int a, double b) {
+        return a+(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.j
new file mode 100644
index 0000000..73d7440
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_imul_4.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    imul
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.java
new file mode 100644
index 0000000..d2da8b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_4 {
+
+    public int run(long a, int b) {
+        return (int)a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.j
new file mode 100644
index 0000000..aa3a81a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_imul_5.java
+.class public dxc/junit/opcodes/imul/jm/T_imul_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    iadd
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.java
new file mode 100644
index 0000000..e4aa8e9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/imul/jm/T_imul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.imul.jm;
+
+public class T_imul_5 {
+    
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/Test_ineg.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/Test_ineg.java
new file mode 100644
index 0000000..366a8a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/Test_ineg.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ineg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ineg.jm.T_ineg_1;
+import dxc.junit.opcodes.ineg.jm.T_ineg_2;
+
+public class Test_ineg extends DxTestCase {
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN1() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(-1, t.run(1));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN2() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(1, t.run(-1));
+    }
+
+    /**
+     * @title  Argument = 32768
+     */
+    public void testN3() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testN4() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title  Check that -x == (~x + 1)
+     */
+    public void testN5() {
+        T_ineg_2 t = new T_ineg_2();
+        assertTrue(t.run(12345));
+    }
+
+    /**
+     * @title  Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(0x80000001, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ineg_1 t = new T_ineg_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ineg.jm.T_ineg_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.j
new file mode 100644
index 0000000..e124957
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_1.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.java
new file mode 100644
index 0000000..3db9480
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_1 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.j
new file mode 100644
index 0000000..b4f2140
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_2.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)Z
+    .limit stack 3
+    .limit locals 2
+
+    iload_1
+    ineg
+
+    iload_1
+    iconst_m1
+    ixor
+    iconst_1
+    iadd
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.java
new file mode 100644
index 0000000..b9ee0b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_2 {
+
+     public boolean run(int d) {
+         return -d == (~d + 1);
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.j
new file mode 100644
index 0000000..e850c19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_3.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    ;iload_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.java
new file mode 100644
index 0000000..306154b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_3 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.j
new file mode 100644
index 0000000..7f1d704
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_4.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    ;iload_1
+    dconst_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.java
new file mode 100644
index 0000000..8285cbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_4 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.j
new file mode 100644
index 0000000..8ec653d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_5.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 2
+    .limit locals 3
+    ;iload_1
+    lconst_1
+    ineg
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.java
new file mode 100644
index 0000000..48d4b14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_5 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.j
new file mode 100644
index 0000000..8aa2e44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ineg_6.java
+.class public dxc/junit/opcodes/ineg/jm/T_ineg_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    ineg
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.java
new file mode 100644
index 0000000..901bcf4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ineg/jm/T_ineg_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ineg.jm;
+
+public class T_ineg_6 {
+    
+    public int run(int d) {
+        return -d;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/Test_invokeinterface.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/Test_invokeinterface.java
new file mode 100644
index 0000000..9d27718
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/Test_invokeinterface.java
@@ -0,0 +1,361 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokeinterface.jm.ITestImpl;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_1;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_11;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_12;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_13;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_14;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_15;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_16;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_17;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_3;
+import dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_7;
+
+public class Test_invokeinterface extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_invokeinterface_1 t = new T_invokeinterface_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+
+    /**
+     * @title  Check that new frame is created by invokeinterface and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        T_invokeinterface_14 t = new T_invokeinterface_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN3() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        assertTrue(T_invokeinterface_19.execute());
+    }
+
+
+    /**
+     * @title  method doesn't exist
+     */
+    public void testE1() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_7 t = new T_invokeinterface_7();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE2() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_16 t = new T_invokeinterface_16();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest        
+        try {
+            new T_invokeinterface_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        T_invokeinterface_11 t = new T_invokeinterface_11();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        T_invokeinterface_12 t = new T_invokeinterface_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_13 t = new T_invokeinterface_13();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke static method
+     */
+    public void testE7() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_15 t = new T_invokeinterface_15();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke non-public interface method
+     */
+    public void testE8() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImpl
+        try {
+            T_invokeinterface_17 t = new T_invokeinterface_17();
+            ITestImpl impl = new ITestImpl();
+            t.run(impl);
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.15 
+     * @title valid index into constant pool table
+     */
+    public void testVFE1() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.15 
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - int
+     */
+    public void testVFE6() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest        
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.15 
+     * @title args_size value must match number of arguments
+     */
+    public void testVFE7() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.15 
+     * @title 4th operand must be zero
+     */
+    public void testVFE8() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14 
+     * @title only invokespecial may be used to call <init>
+     */
+    public void testVFE10() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITestImplAbstract        
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14 
+     * @title only invokespecial may be used to call <clinit>
+     */
+    public void testVFE11() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        //@uses dxc.junit.opcodes.invokeinterface.jm.ITest
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITest.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITest.java
new file mode 100644
index 0000000..080199a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImpl.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImpl.java
new file mode 100644
index 0000000..fb20ecc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.j
new file mode 100644
index 0000000..6ebe8bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source ITestImplAbstract.java
+.class public dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+.super java/lang/Object
+.implements dxc/junit/opcodes/invokeinterface/jm/ITest
+
+.method  <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public abstract doit()V
+.end method
+
+
+
+.method public static doit(I)V
+    .limit locals 2
+    return
+.end method
+
+
+
+.method public native doitNative()V
+.end method
+
+.method protected test(I)I
+    .limit locals 2
+    .limit stack 1
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.java
new file mode 100644
index 0000000..fdabd89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.j
new file mode 100644
index 0000000..ca88c6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_1.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    invokeinterface java/lang/Comparable/compareTo(Ljava/lang/Object;)I 2
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.java
new file mode 100644
index 0000000..bb3a112
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.j
new file mode 100644
index 0000000..786446d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_10.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+;    aload_1
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.java
new file mode 100644
index 0000000..5fe6f68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_10 {
+
+    public T_invokeinterface_10 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.j
new file mode 100644
index 0000000..e4c7a8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_11.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+;    aload_1
+    aload_0
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.java
new file mode 100644
index 0000000..916eeb3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_11 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.j
new file mode 100644
index 0000000..fbd7d7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_12.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doitNative()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.java
new file mode 100644
index 0000000..3418fce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.j
new file mode 100644
index 0000000..7feb097
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_13.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V
+    
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.java
new file mode 100644
index 0000000..e11df1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_13 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.j
new file mode 100644
index 0000000..94a2710
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.j
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_14.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)I
+    .limit stack 3
+    .limit locals 4
+
+    bipush 123
+    istore_2
+
+    sipush 345
+    istore_3
+
+    aload_1
+    sipush 64
+    sipush 2
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/testArgsOrder(II)I 3
+    sipush 32
+    if_icmpne Label0
+
+    iload_2
+    bipush 123
+    if_icmpne Label0
+
+    iload_3
+    sipush 345
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.java
new file mode 100644
index 0000000..4ebf2f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_14.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.j
new file mode 100644
index 0000000..67f5ffb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_15.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V
+    
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.java
new file mode 100644
index 0000000..c4aba4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_15 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.j
new file mode 100644
index 0000000..796696a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_16.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    fconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(F)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.java
new file mode 100644
index 0000000..161aafe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_16 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.j
new file mode 100644
index 0000000..38133af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_17.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V
+    
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/test(I)I 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.java
new file mode 100644
index 0000000..c7754ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_17 {
+
+    public void run(ITest test) {
+        test.test(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.j
new file mode 100644
index 0000000..674e491
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_18.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+    
+    new dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract
+    dup
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITestImplAbstract/<init>()V 1
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.java
new file mode 100644
index 0000000..12462fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_18.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.j
new file mode 100644
index 0000000..f5a89a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.j
@@ -0,0 +1,182 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_19.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19
+.super java/lang/Object
+.implements java/lang/Runnable
+.implements dxc/junit/opcodes/invokeinterface/jm/ITest
+
+.field  value I
+.field  failed Z
+
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.failed Z
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_0
+    istore_1
+
+Label1:
+
+    aload_0
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    iinc 1 1
+
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+.end method
+
+
+
+.method public synchronized doit()V
+    .limit stack 3
+    .limit locals 2
+
+    
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    istore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.failed Z
+
+    Label0:
+    return
+.end method
+
+
+
+.method public doit(I)V
+    .limit stack 0
+    .limit locals 2
+    return
+.end method
+
+.method public doitNative()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+.method public test(I)I
+    .limit stack 1
+    .limit locals 2
+    iconst_0
+    ireturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19
+    dup
+    invokespecial dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+    iconst_0
+    ireturn
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.value I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+    aload_0
+    getfield dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_19.failed Z
+    ifeq Label2
+    iconst_0
+    ireturn
+
+Label2:
+    iconst_1
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.java
new file mode 100644
index 0000000..1aec95b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_19.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+
+public class T_invokeinterface_19 implements Runnable, ITest {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            doit();
+        }
+    }
+    
+    public synchronized void doit(){
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    public void doit(int i){
+    }
+    public void doitNative(){
+    }
+    public  int test(int a) {
+        return 0;
+    }
+    public int testArgsOrder(int a, int b){
+        return 0;
+    }
+    
+    public static boolean execute() {
+        T_invokeinterface_19 test = new T_invokeinterface_19();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.cfh
new file mode 100644
index 0000000..b91b025
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.cfh
@@ -0,0 +1,155 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}
+    // .  .  .  .  .  
+       0b 00 08 00 0f 
+    // parsed:, offset 15, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 09 
+    // parsed:, offset 20, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 39, len 3, h: 0004: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_2}
+    // .  .  .  
+       07 00 10 
+    // parsed:, offset 42, len 13, h: 0005: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 55, len 27, h: 0006: utf8{"T_invokeinterface_2.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  .  j  a  v  a  
+       01 00 18 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 82, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 91, len 3, h: 0008: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 94, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0e 
+    // parsed:, offset 99, len 7, h: 000a: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 106, len 45, h: 000b: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 151, len 7, h: 000c: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 158, len 50, h: 000d: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+    // parsed:, offset 208, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 214, len 5, h: 000f: nat{doit:()V}
+    // .  .  .  .  .  
+       0c 00 0a 00 0e 
+    // parsed:, offset 219, len 59, h: 0010: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2"}
+    // .  .  8  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  
+       01 00 38 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 
+    // parsed:, offset 278, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 281, len 0, h: end constant_pool
+// parsed:, offset 281, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 283, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_2}
+// .  .  
+   00 04 
+// parsed:, offset 285, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 287, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 289, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 291, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 293, len:47,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 293, len 0, h:  methods[0]: 
+    // parsed:, offset 293, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 295, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 297, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 0d 
+    // parsed:, offset 299, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 301, len 0, h:  attributes[0]: 
+        // parsed:, offset 301, len 2, h: name: Code
+        // .  .  
+           00 0c 
+        // parsed:, offset 303, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 307, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 309, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 311, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 5, len 5, h: 0005: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}, 0001
+        // .  .  .  .  .  
+//@mod:    b9 00 01 01 00 
+           b9 00 02 01 00 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 326, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 328, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 330, len 0, h: end attributes[0] 
+// parsed:, offset 330, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 330, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 332, len 0, h:  attributes[0]: 
+    // parsed:, offset 332, len 2, h: name: SourceFile
+    // .  .  
+       00 05 
+    // parsed:, offset 334, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 338, len 2, h: source: utf8{"T_invokeinterface_2.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 340, len 0, h: end attributes[0] 
+// parsed:, offset 340, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.j
new file mode 100644
index 0000000..2d3fafc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_2.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.java
new file mode 100644
index 0000000..6fe011f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_2 {
+
+    public T_invokeinterface_2 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.j
new file mode 100644
index 0000000..6da973f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_20.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+    .limit stack 1
+    iconst_0
+    putstatic dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_20.i I
+    return
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+    
+    aload_0
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20/<clinit>()V 1
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.java
new file mode 100644
index 0000000..4487726
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_20.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.j
new file mode 100644
index 0000000..9d28bbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_21.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 3
+    .limit locals 2
+
+    aload_1
+    lconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.java
new file mode 100644
index 0000000..0897987
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_21 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.cfh
new file mode 100644
index 0000000..57b9e09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.cfh
@@ -0,0 +1,155 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}
+    // .  .  .  .  .  
+       0b 00 06 00 10 
+    // parsed:, offset 15, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 07 
+    // parsed:, offset 20, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 39, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 3, h: 0006: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 64, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 69, len 7, h: 0008: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 76, len 45, h: 0009: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 121, len 3, h: 000a: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_23}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 124, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 131, len 50, h: 000c: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+    // parsed:, offset 181, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 187, len 60, h: 000e: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23"}
+    // .  .  9  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  3  
+       01 00 39 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 33 
+    // parsed:, offset 247, len 28, h: 000f: utf8{"T_invokeinterface_23.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  2  3  .  j  a  v  a  
+       01 00 19 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 32 33 2e 6a 61 76 61 
+    // parsed:, offset 275, len 5, h: 0010: nat{doit:()V}
+    // .  .  .  .  .  
+       0c 00 08 00 0d 
+    // parsed:, offset 280, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 283, len 0, h: end constant_pool
+// parsed:, offset 283, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 285, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_23}
+// .  .  
+   00 0a 
+// parsed:, offset 287, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 289, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 291, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 293, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 295, len:47,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 295, len 0, h:  methods[0]: 
+    // parsed:, offset 295, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 297, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 299, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 0c 
+    // parsed:, offset 301, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 303, len 0, h:  attributes[0]: 
+        // parsed:, offset 303, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 305, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 309, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 311, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 313, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 5, len 5, h: 0005: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:()V}, 0001
+        // .  .  .  .  .  
+//@mod           b9 00 01 01 00 
+           b9 01 01 01 00 
+        // parsed:, offset 10, len 1, h: 000a: return
+        // .  
+           b1 
+        // parsed:, offset 328, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 330, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 332, len 0, h: end attributes[0] 
+// parsed:, offset 332, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 332, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 334, len 0, h:  attributes[0]: 
+    // parsed:, offset 334, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 336, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 340, len 2, h: source: utf8{"T_invokeinterface_23.java"}
+    // .  .  
+       00 0f 
+// parsed:, offset 342, len 0, h: end attributes[0] 
+// parsed:, offset 342, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.j
new file mode 100644
index 0000000..6aa596f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_23.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.java
new file mode 100644
index 0000000..da54e21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_23.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_23 {
+
+    public T_invokeinterface_23 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.j
new file mode 100644
index 0000000..d1d46c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_3.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit locals 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.java
new file mode 100644
index 0000000..5d85c5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_3 {
+
+    public T_invokeinterface_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_4.java
new file mode 100644
index 0000000..fa92a23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_4 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.j
new file mode 100644
index 0000000..b3d3d59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_5.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5
+.super java/lang/Object
+
+.method public <init>(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+;    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit()V 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.java
new file mode 100644
index 0000000..e80580d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_5 {
+
+    public T_invokeinterface_5 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.cfh
new file mode 100644
index 0000000..9d6c6f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0014
+// .  .  
+   00 14 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 5, h: 0002: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}
+    // .  .  .  .  .  
+       0b 00 06 00 0a 
+    // parsed:, offset 34, len 9, h: 0003: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 43, len 3, h: 0004: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 46, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 03 00 07 
+    // parsed:, offset 51, len 3, h: 0006: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 54, len 6, h: 0007: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 60, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 67, len 59, h: 0009: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6"}
+    // .  .  8  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  6  
+       01 00 38 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 36 
+    // parsed:, offset 126, len 5, h: 000a: nat{doit:(I)V}
+    // .  .  .  .  .  
+       0c 00 0f 00 0d 
+    // parsed:, offset 131, len 45, h: 000b: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 176, len 13, h: 000c: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 189, len 7, h: 000d: utf8{"(I)V"}
+    // .  .  .  (  I  )  V  
+       01 00 04 28 49 29 56 
+    // parsed:, offset 196, len 6, h: 000e: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 202, len 7, h: 000f: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 209, len 5, h: 0010: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 04 00 05 
+    // parsed:, offset 214, len 27, h: 0011: utf8{"T_invokeinterface_6.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  6  .  j  a  v  a  
+       01 00 18 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 241, len 3, h: 0012: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 244, len 50, h: 0013: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+// parsed:, offset 294, len 0, h: end constant_pool
+// parsed:, offset 294, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 296, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_6}
+// .  .  
+   00 12 
+// parsed:, offset 298, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 04 
+// parsed:, offset 300, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 302, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 304, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 306, len:75,desc: ()V
+// parsed:, offset 306, len 0, h:  methods[0]: 
+    // parsed:, offset 306, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 308, len 2, h: name: <init>
+    // .  .  
+       00 03 
+    // parsed:, offset 310, len 2, h: descriptor: ()V
+    // .  .  
+       00 07 
+    // parsed:, offset 312, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 314, len 0, h:  attributes[0]: 
+        // parsed:, offset 314, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 316, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 320, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 322, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 324, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 10 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 333, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 335, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 337, len 0, h: end attributes[0] 
+// parsed:, offset 337, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 337, len:44,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 337, len 0, h:  methods[1]: 
+    // parsed:, offset 337, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 339, len 2, h: name: run
+    // .  .  
+       00 0e 
+    // parsed:, offset 341, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 13 
+    // parsed:, offset 343, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 345, len 0, h:  attributes[0]: 
+        // parsed:, offset 345, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 347, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 351, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 353, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 355, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 2, len 5, h: 0002: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}, 0002
+        // .  .  .  .  .  
+//@mod           b9 00 02 02 00 
+           b9 00 02 02 01 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 367, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 369, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 371, len 0, h: end attributes[0] 
+// parsed:, offset 371, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 371, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 373, len 0, h:  attributes[0]: 
+    // parsed:, offset 373, len 2, h: name: SourceFile
+    // .  .  
+       00 0c 
+    // parsed:, offset 375, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 379, len 2, h: source: utf8{"T_invokeinterface_6.java"}
+    // .  .  
+       00 11 
+// parsed:, offset 381, len 0, h: end attributes[0] 
+// parsed:, offset 381, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.j
new file mode 100644
index 0000000..8fff18f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_6.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.java
new file mode 100644
index 0000000..b2a7846
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_6 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.j
new file mode 100644
index 0000000..3001e7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_7.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit1()V 1
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.java
new file mode 100644
index 0000000..2a04c77
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_7 {
+
+    public void run(ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.cfh
new file mode 100644
index 0000000..7305c39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0014
+// .  .  
+   00 14 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 27, h: 0002: utf8{"T_invokeinterface_8.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  8  .  j  a  v  a  
+       01 00 18 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 56, len 5, h: 0003: ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}
+    // .  .  .  .  .  
+       0b 00 07 00 0b 
+    // parsed:, offset 61, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 70, len 3, h: 0005: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 73, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 08 
+    // parsed:, offset 78, len 3, h: 0007: type{dxc.junit.opcodes.invokeinterface.jm.ITest}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 81, len 6, h: 0008: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 87, len 59, h: 0009: utf8{"dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8"}
+    // .  .  8  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  T  _  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  _  8  
+       01 00 38 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 5f 38 
+    // parsed:, offset 146, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 153, len 5, h: 000b: nat{doit:(I)V}
+    // .  .  .  .  .  
+       0c 00 10 00 0e 
+    // parsed:, offset 158, len 45, h: 000c: utf8{"dxc/junit/opcodes/invokeinterface/jm/ITest"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 
+    // parsed:, offset 203, len 13, h: 000d: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 216, len 7, h: 000e: utf8{"(I)V"}
+    // .  .  .  (  I  )  V  
+       01 00 04 28 49 29 56 
+    // parsed:, offset 223, len 6, h: 000f: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 229, len 7, h: 0010: utf8{"doit"}
+    // .  .  .  d  o  i  t  
+       01 00 04 64 6f 69 74 
+    // parsed:, offset 236, len 5, h: 0011: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 05 00 06 
+    // parsed:, offset 241, len 3, h: 0012: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_8}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 244, len 50, h: 0013: utf8{"(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V"}
+    // .  .  /  (  L  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  i  n  t  e  r  f  a  c  e  /  j  m  /  I  T  e  s  t  ;  )  V  
+       01 00 2f 28 4c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 69 6e 74 65 72 66 61 63 65 2f 6a 6d 2f 49 54 65 73 74 3b 29 56 
+// parsed:, offset 294, len 0, h: end constant_pool
+// parsed:, offset 294, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 296, len 2, h: this_class: type{dxc.junit.opcodes.invokeinterface.jm.T_invokeinterface_8}
+// .  .  
+   00 12 
+// parsed:, offset 298, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 05 
+// parsed:, offset 300, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 302, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 304, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 306, len:75,desc: ()V
+// parsed:, offset 306, len 0, h:  methods[0]: 
+    // parsed:, offset 306, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 308, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 310, len 2, h: descriptor: ()V
+    // .  .  
+       00 08 
+    // parsed:, offset 312, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 314, len 0, h:  attributes[0]: 
+        // parsed:, offset 314, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 316, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 320, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 322, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 324, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 11 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 333, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 335, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 337, len 0, h: end attributes[0] 
+// parsed:, offset 337, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 337, len:44,desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 337, len 0, h:  methods[1]: 
+    // parsed:, offset 337, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 339, len 2, h: name: run
+    // .  .  
+       00 0f 
+    // parsed:, offset 341, len 2, h: descriptor: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    // .  .  
+       00 13 
+    // parsed:, offset 343, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 345, len 0, h:  attributes[0]: 
+        // parsed:, offset 345, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 347, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 351, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 353, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 355, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 2, len 5, h: 0002: invokeinterface ifaceMethod{dxc.junit.opcodes.invokeinterface.jm.ITest.doit:(I)V}, 0002
+        // .  .  .  .  .  
+//@mod           b9 00 03 02 00 
+           b9 00 03 01 00 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 367, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 369, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 371, len 0, h: end attributes[0] 
+// parsed:, offset 371, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+// parsed:, offset 371, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 373, len 0, h:  attributes[0]: 
+    // parsed:, offset 373, len 2, h: name: SourceFile
+    // .  .  
+       00 0d 
+    // parsed:, offset 375, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 379, len 2, h: source: utf8{"T_invokeinterface_8.java"}
+    // .  .  
+       00 02 
+// parsed:, offset 381, len 0, h: end attributes[0] 
+// parsed:, offset 381, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.j
new file mode 100644
index 0000000..f96c46b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_8.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.java
new file mode 100644
index 0000000..f64dd1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_8 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.j
new file mode 100644
index 0000000..a324d42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokeinterface_9.java
+.class public dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(Ldxc/junit/opcodes/invokeinterface/jm/ITest;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+;    iconst_1
+    invokeinterface dxc/junit/opcodes/invokeinterface/jm/ITest/doit(I)V 2
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.java
new file mode 100644
index 0000000..8438b83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokeinterface/jm/T_invokeinterface_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokeinterface.jm;
+
+public class T_invokeinterface_9 {
+
+    public void run(ITest test) {
+        test.doit(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/Test_invokespecial.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/Test_invokespecial.java
new file mode 100644
index 0000000..3413c3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/Test_invokespecial.java
@@ -0,0 +1,393 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_1;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_11;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_12;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_13;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_15;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_16;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_17;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_18;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_19;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_2;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_21;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_7;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_8;
+import dxc.junit.opcodes.invokespecial.jm.T_invokespecial_9;
+
+public class Test_invokespecial extends DxTestCase {
+    /**
+     * @title  Superclass' method call
+     */
+    public void testN1() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_1 t = new T_invokespecial_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  private method call
+     */
+    public void testN2() {
+        T_invokespecial_2 t = new T_invokespecial_2();
+        assertEquals(345, t.run());
+    }
+
+    /**
+     * @title  Invoke method of superclass of superclass
+     */
+    public void testN3() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper2
+        T_invokespecial_15 t = new T_invokespecial_15();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  Invoke protected method of superclass specifying "this"
+     * class
+     */
+    public void testN4() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_17 t = new T_invokespecial_17();
+            assertEquals(5, t.run());
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Invoke protected method of superclass if method with the
+     * same name exists in "this" class
+     */
+    public void testN5() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_18 t = new T_invokespecial_18();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  Check that method's arguments are popped from stack
+     */
+    public void testN6() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_19 t = new T_invokespecial_19();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title  Check that new frame is created by invokespecial
+     */
+    public void testN7() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_21 t = new T_invokespecial_21();
+        assertEquals(1, t.run());
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN8() {
+        assertTrue(T_invokespecial_22.execute());
+    }
+
+
+
+    /**
+     * @title  method doesn't exist in "this" and superclass
+     */
+    public void testE1() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_7 t = new T_invokespecial_7();
+            assertEquals(5, t.run());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm; early resolution
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE2() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_16 t = new T_invokespecial_16();
+            assertEquals(5, t.run());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm; early resolution
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_8 t = new T_invokespecial_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke static method
+     */
+    public void testE4() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_11 t = new T_invokespecial_11();
+            assertEquals(5, t.run());
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm;
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        T_invokespecial_9 t = new T_invokespecial_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke private method of superclass
+     */
+    public void testE6() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            T_invokespecial_12 t = new T_invokespecial_12();
+            assertEquals(5, t.run());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) {
+            // ok for dalvikvm;
+            System.out.print("dvmvfe:");
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke abstract method
+     */
+    public void testE7() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TAbstract
+        T_invokespecial_13 t = new T_invokespecial_13();
+        try {
+            assertEquals(5, t.run());
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13 
+     * @title valid index into constant pool table
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13 
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title only &lt;init&gt; may be called
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.7 
+     * @title invokespecial target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TPlain
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - int
+     */
+    public void testVFE6() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.7 
+     * @title invokespecial must name method of "this" class or
+     *                 superclass
+     */
+    public void testVFE7() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.7 
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE10() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        //@uses dxc.junit.opcodes.invokespecial.jm.TPlain
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE11() {
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper
+        //@uses dxc.junit.opcodes.invokespecial.jm.TSuper2
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokespecial.jm.T_invokespecial_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TAbstract.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TAbstract.java
new file mode 100644
index 0000000..b37a275
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public abstract class TAbstract {
+    public abstract int toInt();
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TPlain.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TPlain.java
new file mode 100644
index 0000000..166c91a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper.java
new file mode 100644
index 0000000..3abf06f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+package dxc.junit.opcodes.invokespecial.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper2.java
new file mode 100644
index 0000000..049cedd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/TSuper2.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+package dxc.junit.opcodes.invokespecial.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper2 extends TSuper {
+    
+    public int test() {
+        return 13;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.j
new file mode 100644
index 0000000..b2bbe6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_1.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.java
new file mode 100644
index 0000000..865d81f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.j
new file mode 100644
index 0000000..ece1dfc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_10.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+;    aload_0
+    iconst_1
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.java
new file mode 100644
index 0000000..82226b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_10 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.j
new file mode 100644
index 0000000..7be1c31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_11.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntStatic()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.java
new file mode 100644
index 0000000..da69e2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_11 extends TSuper {
+
+    public int run() {
+        return super.toIntStatic();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.j
new file mode 100644
index 0000000..3396e82
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_12.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntPvt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.java
new file mode 100644
index 0000000..3ad0f09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_12 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.j
new file mode 100644
index 0000000..1e639e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_13.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13
+.super dxc/junit/opcodes/invokespecial/jm/TAbstract
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TAbstract/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TAbstract/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.java
new file mode 100644
index 0000000..9c43cdc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_13 extends TAbstract {
+    
+    public int toInt() {
+        return 5;
+    }
+
+    public int run() {
+        return toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.j
new file mode 100644
index 0000000..983792e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_14.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    aload_0
+;    ldc 5.0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt(F)I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.java
new file mode 100644
index 0000000..619f75f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_14.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_14 extends TSuper {
+
+    public int run() {
+        return super.toInt(5f);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.j
new file mode 100644
index 0000000..51650d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_15.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15
+.super dxc/junit/opcodes/invokespecial/jm/TSuper2
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.java
new file mode 100644
index 0000000..cabb444
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_15 extends TSuper2 {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.j
new file mode 100644
index 0000000..76c397c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_16.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()F
+    pop
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.java
new file mode 100644
index 0000000..7cdb15a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_16 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.j
new file mode 100644
index 0000000..6a02a3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_17.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17/toIntP()I
+    ireturn
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.java
new file mode 100644
index 0000000..6c9a6da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_17 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.j
new file mode 100644
index 0000000..c12833b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_18.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntP()I
+    ireturn
+    
+.end method
+
+.method protected toIntP()I
+
+    sipush 10
+    ireturn
+   
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.java
new file mode 100644
index 0000000..7821f26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_18.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_18 extends TSuper {
+
+    protected int toIntP() {
+        return 10;
+    }
+    
+    public int run() {
+        return super.toIntP();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.j
new file mode 100644
index 0000000..bcbee9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_19.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 4
+    .limit locals 2
+    iconst_1
+    aload_0
+    sipush 128
+    sipush 64
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/testArgsOrder(II)I
+    istore_1
+    iconst_1
+    if_icmpeq Label1
+    iinc 1 1
+Label1:
+    iload_1    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.java
new file mode 100644
index 0000000..c828ff1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_19 extends TSuper {
+
+    public int run() {
+        return super.testArgsOrder(128, 64);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.j
new file mode 100644
index 0000000..4dbda7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_2.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2/getInt()I
+    ireturn
+.end method
+
+.method private getInt()I
+    sipush 345
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.java
new file mode 100644
index 0000000..d7e604e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.j
new file mode 100644
index 0000000..b7e0b34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_20.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.java
new file mode 100644
index 0000000..48df5d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_20 extends TSuper {
+
+    public int run() {
+        return toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.j
new file mode 100644
index 0000000..961b329
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.j
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_21.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit locals 3
+    .limit stack 5
+    
+    sipush 123
+    istore_1
+    sipush 456
+    istore_2
+    
+    aload_0
+    iconst_1
+    iconst_2
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21/test(II)I
+    
+    sipush 5
+    if_icmpne Label0
+    
+    iload_1
+    sipush 123
+    if_icmpne Label0
+
+    iload_2
+    sipush 456
+    if_icmpne Label0    
+    
+    iconst_1
+    ireturn
+    
+Label0:    
+    iconst_0
+    ireturn
+.end method
+
+.method private test(II)I
+    .limit locals 3
+    sipush 987
+    istore_1
+    sipush 765
+    istore_2
+    
+    sipush 5
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.java
new file mode 100644
index 0000000..2e3ab91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_21.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_21 extends TSuper {
+
+    
+    private int test(int a, int b) {
+        int i = 0;
+        int j = 0;
+        return 5;
+    }
+    
+    public int run() {
+        int i = 123;
+        int j = 456;
+        test(0, 1);
+        
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.j
new file mode 100644
index 0000000..e2bdcbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.j
@@ -0,0 +1,159 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_22.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22/test()V
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()V
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+    dup
+    istore_1
+
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+
+    iinc 1 1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.failed Z
+
+Label0:
+    return
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22
+    dup
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.value I
+    sipush 2000
+    if_icmpne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.invokespecial.jm.T_invokespecial_22.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.java
new file mode 100644
index 0000000..b9cb14f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_22.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_22 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_invokespecial_22 test = new T_invokespecial_22();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.cfh
new file mode 100644
index 0000000..feb9dcb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.cfh
@@ -0,0 +1,131 @@
+//@class:dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000c
+// .  .  
+   00 0c 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 05 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 5, h: 0005: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 61, len 56, h: 0006: utf8{"dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23"}
+    // .  .  5  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  p  e  c  i  a  l  /  j  m  /  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  2  3  
+       01 00 35 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 32 33 
+    // parsed:, offset 117, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 124, len 26, h: 0008: utf8{"T_invokespecial_23.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  2  3  .  j  a  v  a  
+       01 00 17 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 32 33 2e 6a 61 76 61 
+    // parsed:, offset 150, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000a: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_23}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 159, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_23}
+// .  .  
+   00 0a 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 174, len:41,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+//@mod           b7 00 01 
+           b7 01 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// parsed:, offset 205, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 207, len 0, h:  attributes[0]: 
+    // parsed:, offset 207, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 209, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 213, len 2, h: source: utf8{"T_invokespecial_23.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 215, len 0, h: end attributes[0] 
+// parsed:, offset 215, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.j
new file mode 100644
index 0000000..4e92d44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_23.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.java
new file mode 100644
index 0000000..c4b048e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_23.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_23 {
+
+    public T_invokespecial_23() {
+        // only constructor        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.j
new file mode 100644
index 0000000..487c7c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_24.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 3
+    aload_0
+    dconst_1
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt(F)I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.java
new file mode 100644
index 0000000..ef62353
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_24.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_24 extends TSuper {
+
+    public int run() {
+        return super.toInt(5f);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.j
new file mode 100644
index 0000000..764c322
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_25.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokespecial/jm/TPlain
+    dup
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TPlain/<init>()V
+    astore_1
+
+    aload_1
+    invokevirtual dxc/junit/opcodes/invokespecial/jm/TSuper/toIntP()I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.java
new file mode 100644
index 0000000..9f2a005
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_25.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_25 extends TSuper {
+
+    public int run() {
+        TPlain p = new TPlain();
+        return p.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.j
new file mode 100644
index 0000000..ba28332
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_26.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26
+.super dxc/junit/opcodes/invokespecial/jm/TSuper2
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+    
+    new dxc/junit/opcodes/invokespecial/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper2/test()I
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.java
new file mode 100644
index 0000000..ffd72f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_26.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_26 extends TSuper2 {
+    
+    public int run() {
+        return super.test();
+    }   
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.cfh
new file mode 100644
index 0000000..89ebfae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.cfh
@@ -0,0 +1,132 @@
+//@class:dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000c
+// .  .  
+   00 0c 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 55, h: 0003: utf8{"dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3"}
+    // .  .  4  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  p  e  c  i  a  l  /  j  m  /  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  3  
+       01 00 34 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 33 
+    // parsed:, offset 89, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 102, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 111, len 25, h: 0006: utf8{"T_invokespecial_3.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  p  e  c  i  a  l  _  3  .  j  a  v  a  
+       01 00 16 54 5f 69 6e 76 6f 6b 65 73 70 65 63 69 61 6c 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 136, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 141, len 3, h: 0008: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_3}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 144, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 151, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 157, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 160, len 0, h: end constant_pool
+// parsed:, offset 160, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 162, len 2, h: this_class: type{dxc.junit.opcodes.invokespecial.jm.T_invokespecial_3}
+// .  .  
+   00 08 
+// parsed:, offset 164, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 166, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: methods_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:<init>, offset 172, len:41,desc: ()V
+// parsed:, offset 172, len 0, h:  methods[0]: 
+    // parsed:, offset 172, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 174, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 176, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 178, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 180, len 0, h:  attributes[0]: 
+        // parsed:, offset 180, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 182, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 186, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+    //@mod:b7 00 01 
+           b7 00 02 
+           
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 199, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 201, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 203, len 0, h: end attributes[0] 
+// parsed:, offset 203, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// parsed:, offset 203, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 205, len 0, h:  attributes[0]: 
+    // parsed:, offset 205, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 207, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 211, len 2, h: source: utf8{"T_invokespecial_3.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.j
new file mode 100644
index 0000000..f62d537
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_3.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.java
new file mode 100644
index 0000000..bd1a34e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_3 {
+
+    public T_invokespecial_3() {
+        // only constructor        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.j
new file mode 100644
index 0000000..072e67d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_4.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<clinit>()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.java
new file mode 100644
index 0000000..04b907f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_4 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.j
new file mode 100644
index 0000000..1a6a6a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_5.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+;    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.java
new file mode 100644
index 0000000..40b961e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_5 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.j
new file mode 100644
index 0000000..14db5c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_6.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TPlain/doit()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.java
new file mode 100644
index 0000000..eed67c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_6.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_6 {
+
+    public void run() {
+        pri();
+        pro();
+    }
+
+    protected void pro() {
+        // TODO Auto-generated method stub
+        
+    }
+
+    private void pri() {
+        // TODO Auto-generated method stub
+        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.j
new file mode 100644
index 0000000..c1d5d80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_7.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7/toInt1()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.java
new file mode 100644
index 0000000..b62ed8f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_7 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.j
new file mode 100644
index 0000000..e832660
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_8.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+;    aload_0
+    aconst_null
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toInt()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.java
new file mode 100644
index 0000000..e11e638
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_8 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.j
new file mode 100644
index 0000000..244fb4b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokespecial_9.java
+.class public dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9
+.super dxc/junit/opcodes/invokespecial/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokespecial dxc/junit/opcodes/invokespecial/jm/TSuper/toIntNative()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.java
new file mode 100644
index 0000000..4a0b27a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokespecial/jm/T_invokespecial_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokespecial.jm;
+
+public class T_invokespecial_9 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/TestStubs.java
new file mode 100644
index 0000000..9d5cfea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic;
+
+public class TestStubs {
+
+    protected void TestStub() {
+        // used by testE9
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/Test_invokestatic.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/Test_invokestatic.java
new file mode 100644
index 0000000..e506a30
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/Test_invokestatic.java
@@ -0,0 +1,302 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_1;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_13;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_14;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_15;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_16;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_17;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_18;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_2;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_4;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_5;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_6;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_7;
+import dxc.junit.opcodes.invokestatic.jm.T_invokestatic_8;
+
+public class Test_invokestatic extends DxTestCase {
+
+    /**
+     * @title  Static method from library class Math
+     */
+    public void testN1() {
+        T_invokestatic_1 t = new T_invokestatic_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title  Static method from user class
+     */
+    public void testN2() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        T_invokestatic_2 t = new T_invokestatic_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title  Check that <clinit> is called
+     */
+    public void testN3() {
+        assertEquals(123456789l, T_invokestatic_4.run());
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN4() {
+        assertTrue(T_invokestatic_12.execute());
+    }
+
+    /**
+     * @title  Check that new frame is created by invokestatic and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        T_invokestatic_15 t = new T_invokestatic_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  Static protected method from other class in the same package
+     */
+    public void testN6() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        T_invokestatic_18 t = new T_invokestatic_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title  attempt to call non-static method
+     * 
+     */
+    public void testE1() {
+        try {
+            T_invokestatic_5 t = new T_invokestatic_5();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError icce) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     * 
+     */
+    public void testE2() {
+        T_invokestatic_6 t = new T_invokestatic_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  NoSuchMethodError
+     */
+    public void testE3() {
+        try {
+            T_invokestatic_7 t = new T_invokestatic_7();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError nsme) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to call private method of other class
+     * 
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        try {
+            T_invokestatic_8 t = new T_invokestatic_8();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClass
+        try {
+               T_invokestatic_13 t = new T_invokestatic_13();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError nsme) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  initialization of referenced class throws exception
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClassInitError
+        T_invokestatic_14 t = new T_invokestatic_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to call abstract method of other class
+     * 
+     */
+    public void testE8() {
+        // @uses dxc.junit.opcodes.invokestatic.jm.TestClassAbstract
+        try {
+            T_invokestatic_16 t = new T_invokestatic_16();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to call protected method of unrelated class
+     * 
+     */
+    public void testE9() {
+        // @uses dxc.junit.opcodes.invokestatic.TestStubs
+        try {
+            T_invokestatic_17 t = new T_invokestatic_17();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13
+     * @title invalid type into constant pool
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;clinit&gt; may not be called using invokestatic
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;init&gt; may not be called using invokestatic
+     */
+    public void testVFE5() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokestatic.jm.T_invokestatic_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.j
new file mode 100644
index 0000000..59b7ab8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_1.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.java
new file mode 100644
index 0000000..c145a8e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.j
new file mode 100644
index 0000000..4a82b56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_10.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10
+.super java/lang/Object
+
+.field static v I
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc 1
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_10.v I
+    return
+.end method
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10/<clinit>()V
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.java
new file mode 100644
index 0000000..aeabf23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_10 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.j
new file mode 100644
index 0000000..49f3b5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_11.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+;    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.java
new file mode 100644
index 0000000..89cf798
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_11 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j
new file mode 100644
index 0000000..1b1ab55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.j
@@ -0,0 +1,146 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_12.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field static value I
+.field static failed Z
+
+.method static <clinit>()V
+    .limit stack 1
+    iconst_0
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+
+    iconst_0
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+
+    return
+.end method
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_0
+    istore_1
+
+    Label1:
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12/test()V
+
+    iinc 1 1
+
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+
+.end method
+
+
+.method private static synchronized test()V
+    .limit stack 2
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    iconst_1
+    iadd
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    istore_0
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_0
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    if_icmpeq Label0
+
+    iconst_1
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+
+Label0:
+    return
+.end method
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12
+    dup
+    invokespecial dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+    iconst_0
+    ireturn
+
+Label0:
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.value I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_12.failed Z
+    ifeq Label2
+    iconst_0
+    ireturn
+
+Label2:
+    iconst_1
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.java
new file mode 100644
index 0000000..11fc236
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_12.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_12 implements Runnable {
+    public final static int CNT = 1000;
+    static int value = 0;
+    static boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized static void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_invokestatic_12 test = new T_invokestatic_12();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(value != CNT * 2)
+            return false;
+        return !failed;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.j
new file mode 100644
index 0000000..9b008f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_13.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    fconst_1
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/test1(F)I
+    pop
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.java
new file mode 100644
index 0000000..e265d15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_13 {
+    
+    public void run(){
+        TestClass.test1(1);
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.j
new file mode 100644
index 0000000..ce3423c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_14.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClassInitError/test()V
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.java
new file mode 100644
index 0000000..c003d15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_14.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_14 {
+    
+    public void run(){
+        TestClassInitError.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.j
new file mode 100644
index 0000000..dfbf896
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.j
@@ -0,0 +1,60 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_15.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+
+    bipush 123
+    istore_1
+
+    sipush 345
+    istore_2
+
+    sipush 12
+    sipush 6
+    
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/testArgsOrder(II)I
+
+    iconst_2
+    if_icmpne Label0
+
+    iload_1
+    bipush 123
+    if_icmpne Label0
+
+    iload_2
+    sipush 345
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.java
new file mode 100644
index 0000000..26dfe06
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_15.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.j
new file mode 100644
index 0000000..4b88c39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_16.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClassAbstract/test()V
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.java
new file mode 100644
index 0000000..e59ad78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_16 {
+    
+    public void run(){
+       // TestClassAbstract.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.j
new file mode 100644
index 0000000..ce62483
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_17.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/TestStubs/TestStub()V
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.java
new file mode 100644
index 0000000..995e4da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_17 {
+    
+    public void run(){
+       // TestStubs.TestStub();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.j
new file mode 100644
index 0000000..1089e35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_18.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/testP()I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.java
new file mode 100644
index 0000000..7a168c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_18.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+import dxc.junit.opcodes.invokestatic.jm.TestClass;
+
+public class T_invokestatic_18  {
+    
+    public int run() {
+        return TestClass.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.j
new file mode 100644
index 0000000..70b7401
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_19.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokestatic java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    iconst_0
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.java
new file mode 100644
index 0000000..0c712c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.j
new file mode 100644
index 0000000..7eb5362
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_2.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/test()I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.java
new file mode 100644
index 0000000..3ca965e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+import dxc.junit.opcodes.invokestatic.jm.TestClass;
+
+public class T_invokestatic_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.j
new file mode 100644
index 0000000..638d7a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_20.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+;    ldc -1234567
+    ldc2_w 1
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.java
new file mode 100644
index 0000000..7aabdc0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_20 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.cfh
new file mode 100644
index 0000000..d3cdaf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0015
+// .  .  
+   00 15 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 9, h: 0002: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 38, len 3, h: 0003: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 41, len 5, h: 0004: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 02 00 05 
+    // parsed:, offset 46, len 6, h: 0005: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 52, len 7, h: 0006: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 59, len 13, h: 0007: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 72, len 6, h: 0008: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 78, len 6, h: 0009: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 84, len 3, h: 000a: type{java.lang.Math}
+    // .  .  .  
+       07 00 11 
+    // parsed:, offset 87, len 6, h: 000b: utf8{"abs"}
+    // .  .  .  a  b  s  
+       01 00 03 61 62 73 
+    // parsed:, offset 93, len 5, h: 000c: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 03 00 04 
+    // parsed:, offset 98, len 5, h: 000d: method{java.lang.Math.abs:(I)I}
+    // .  .  .  .  .  
+       0a 00 0a 00 13 
+    // parsed:, offset 103, len 53, h: 000e: utf8{"dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  t  a  t  i  c  /  j  m  /  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  3  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 33 
+    // parsed:, offset 156, len 7, h: 000f: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+    // parsed:, offset 163, len 3, h: 0010: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_3}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 166, len 17, h: 0011: utf8{"java/lang/Math"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  M  a  t  h  
+       01 00 0e 6a 61 76 61 2f 6c 61 6e 67 2f 4d 61 74 68 
+    // parsed:, offset 183, len 5, h: 0012: int{0xffed2979 / -1234567}
+    // .  .  .  )  y  
+       03 ff ed 29 79 
+    // parsed:, offset 188, len 5, h: 0013: nat{abs:(I)I}
+    // .  .  .  .  .  
+       0c 00 0b 00 0f 
+    // parsed:, offset 193, len 24, h: 0014: utf8{"T_invokestatic_3.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  3  .  j  a  v  a  
+       01 00 15 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 33 2e 6a 61 76 61 
+// parsed:, offset 217, len 0, h: end constant_pool
+// parsed:, offset 217, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 219, len 2, h: this_class: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_3}
+// .  .  
+   00 10 
+// parsed:, offset 221, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 03 
+// parsed:, offset 223, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 227, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 229, len:73,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[0]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: <init>
+    // .  .  
+       00 02 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 05 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 239, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 243, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0c 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 260, len:42,desc: ()I
+// parsed:, offset 260, len 0, h:  methods[1]: 
+    // parsed:, offset 260, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 262, len 2, h: name: run
+    // .  .  
+       00 09 
+    // parsed:, offset 264, len 2, h: descriptor: ()I
+    // .  .  
+       00 08 
+    // parsed:, offset 266, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 268, len 0, h:  attributes[0]: 
+        // parsed:, offset 268, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 270, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 274, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 276, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 278, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #-0012d687
+        // .  .  
+           12 12 
+        // parsed:, offset 2, len 3, h: 0002: invokestatic method{java.lang.Math.abs:(I)I}
+        // .  .  .  
+//@mod           b8 00 0d           
+           b8 00 0e 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 288, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 290, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 292, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 294, len 0, h:  attributes[0]: 
+    // parsed:, offset 294, len 2, h: name: SourceFile
+    // .  .  
+       00 07 
+    // parsed:, offset 296, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 300, len 2, h: source: utf8{"T_invokestatic_3.java"}
+    // .  .  
+       00 14 
+// parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.j
new file mode 100644
index 0000000..271a935
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_3.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.java
new file mode 100644
index 0000000..e6fb064
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_3 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.j
new file mode 100644
index 0000000..f8c2bb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_4.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4
+.super java/lang/Object
+
+.field static v2 J
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    ldc2_w 123456789
+    putstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_4.v2 J
+    return
+.end method
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()J
+    .limit stack 2
+    .limit locals 2
+
+    getstatic dxc.junit.opcodes.invokestatic.jm.T_invokestatic_4.v2 J
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.java
new file mode 100644
index 0000000..d87b044
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_4 {
+
+    static long v2 = 123456789l;
+
+    public static long run() {
+        return v2;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.j
new file mode 100644
index 0000000..c75484f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_5.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    iconst_5
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5/test(I)I
+    ireturn
+
+.end method
+
+.method public test(I)I
+    .limit stack 1
+    .limit locals 2
+
+    iload_1
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.java
new file mode 100644
index 0000000..c9448c1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_5.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_5 {
+    
+    public int run() {
+        return test(5);
+    }
+    
+    public int test(int i1) {
+        return i1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.j
new file mode 100644
index 0000000..3ad06d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_6.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6/test()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.java
new file mode 100644
index 0000000..4d38858
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.j
new file mode 100644
index 0000000..97d9b7b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_7.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static test()V
+    .limit stack 0
+    .limit locals 0
+    return
+.end method
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7/test1()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.java
new file mode 100644
index 0000000..187b33d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_7.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_7 {
+    
+    public static void test(){
+    }
+    
+    public void run(){
+        test();
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.j
new file mode 100644
index 0000000..fdc33e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_8.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    invokestatic dxc/junit/opcodes/invokestatic/jm/TestClass/testPvt()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.java
new file mode 100644
index 0000000..35a3157
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_8 {
+    
+    public void run(){
+        TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.cfh
new file mode 100644
index 0000000..7add6ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0015
+// .  .  
+   00 15 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 19, h: 0001: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 29, len 9, h: 0002: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 38, len 3, h: 0003: type{java.lang.Object}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 41, len 5, h: 0004: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 02 00 05 
+    // parsed:, offset 46, len 6, h: 0005: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 52, len 7, h: 0006: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 59, len 13, h: 0007: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 72, len 53, h: 0008: utf8{"dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  s  t  a  t  i  c  /  j  m  /  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  9  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 39 
+    // parsed:, offset 125, len 6, h: 0009: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 131, len 6, h: 000a: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 137, len 3, h: 000b: type{java.lang.Math}
+    // .  .  .  
+       07 00 12 
+    // parsed:, offset 140, len 6, h: 000c: utf8{"abs"}
+    // .  .  .  a  b  s  
+       01 00 03 61 62 73 
+    // parsed:, offset 146, len 5, h: 000d: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 03 00 04 
+    // parsed:, offset 151, len 5, h: 000e: method{java.lang.Math.abs:(I)I}
+    // .  .  .  .  .  
+       0a 00 0b 00 14 
+    // parsed:, offset 156, len 3, h: 000f: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_9}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 159, len 24, h: 0010: utf8{"T_invokestatic_9.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  s  t  a  t  i  c  _  9  .  j  a  v  a  
+       01 00 15 54 5f 69 6e 76 6f 6b 65 73 74 61 74 69 63 5f 39 2e 6a 61 76 61 
+    // parsed:, offset 183, len 7, h: 0011: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+    // parsed:, offset 190, len 17, h: 0012: utf8{"java/lang/Math"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  M  a  t  h  
+       01 00 0e 6a 61 76 61 2f 6c 61 6e 67 2f 4d 61 74 68 
+    // parsed:, offset 207, len 5, h: 0013: int{0xffed2979 / -1234567}
+    // .  .  .  )  y  
+       03 ff ed 29 79 
+    // parsed:, offset 212, len 5, h: 0014: nat{abs:(I)I}
+    // .  .  .  .  .  
+       0c 00 0c 00 11 
+// parsed:, offset 217, len 0, h: end constant_pool
+// parsed:, offset 217, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 219, len 2, h: this_class: type{dxc.junit.opcodes.invokestatic.jm.T_invokestatic_9}
+// .  .  
+   00 0f 
+// parsed:, offset 221, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 03 
+// parsed:, offset 223, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 227, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 229, len:73,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[0]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: <init>
+    // .  .  
+       00 02 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 05 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 239, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 243, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 0d 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 260, len:42,desc: ()I
+// parsed:, offset 260, len 0, h:  methods[1]: 
+    // parsed:, offset 260, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 262, len 2, h: name: run
+    // .  .  
+       00 0a 
+    // parsed:, offset 264, len 2, h: descriptor: ()I
+    // .  .  
+       00 09 
+    // parsed:, offset 266, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 268, len 0, h:  attributes[0]: 
+        // parsed:, offset 268, len 2, h: name: Code
+        // .  .  
+           00 06 
+        // parsed:, offset 270, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 274, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 276, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 278, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #-0012d687
+        // .  .  
+           12 13 
+        // parsed:, offset 2, len 3, h: 0002: invokestatic method{java.lang.Math.abs:(I)I}
+        // .  .  .  
+//@mod           b8 00 0e           
+           b8 01 0e 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 288, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 290, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 292, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 294, len 0, h:  attributes[0]: 
+    // parsed:, offset 294, len 2, h: name: SourceFile
+    // .  .  
+       00 07 
+    // parsed:, offset 296, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 300, len 2, h: source: utf8{"T_invokestatic_9.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.j
new file mode 100644
index 0000000..edcc8c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokestatic_9.java
+.class public dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc -1234567
+    invokestatic java/lang/Math/abs(I)I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.java
new file mode 100644
index 0000000..4944efd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/T_invokestatic_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class T_invokestatic_9 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClass.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClass.java
new file mode 100644
index 0000000..ef8723f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClass.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static int testP(){
+        return 888;
+    }
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassAbstract.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassAbstract.java
new file mode 100644
index 0000000..5d24d39
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassAbstract.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public abstract class TestClassAbstract {
+    
+    public abstract void test();
+}
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassInitError.java b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassInitError.java
new file mode 100644
index 0000000..c2d176e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokestatic/jm/TestClassInitError.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokestatic.jm;
+
+public class TestClassInitError {
+    static int a = 1 / 0;
+    public static void test() {
+        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/TProtected.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/TProtected.java
new file mode 100644
index 0000000..78c0ddb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/TProtected.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual;
+
+public class TProtected {
+
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+    
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/Test_invokevirtual.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/Test_invokevirtual.java
new file mode 100644
index 0000000..1726067
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/Test_invokevirtual.java
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_1;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_13;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_14;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_15;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_17;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_18;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_19;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_20;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_3;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_4;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_5;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_6;
+import dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_7;
+
+public class Test_invokevirtual extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_invokevirtual_1 t = new T_invokevirtual_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(this, sa));
+        assertFalse(t.run(sb, this));
+    }
+
+    /**
+     * @title  Check that monitor is acquired if method is synchronized
+     */
+    public void testN2() {
+        assertTrue(T_invokevirtual_2.execute());
+    }
+
+    /**
+     * @title  Invoke protected method of superclass
+     */
+    public void testN3() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        T_invokevirtual_7 t = new T_invokevirtual_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title  Private method call
+     */
+    public void testN4() {
+        T_invokevirtual_13 t = new T_invokevirtual_13();
+        assertEquals(345, t.run());
+    }
+
+    /**
+     * @title  Check that new frame is created by invokevirtual and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        T_invokevirtual_14 t = new T_invokevirtual_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  Recursion of method lookup procedure
+     */
+    public void testN6() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        T_invokevirtual_17 t = new T_invokevirtual_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title 
+     */
+    public void testE1() {
+        T_invokevirtual_3 t = new T_invokevirtual_3();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Native method can't be linked
+     */
+    public void testE2() {
+        T_invokevirtual_4 t = new T_invokevirtual_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke static method
+     */
+    public void testE3() {
+        try {
+            T_invokevirtual_5 t = new T_invokevirtual_5();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError icce) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke abstract method
+     */
+    public void testE4() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.ATest
+        T_invokevirtual_6 t = new T_invokevirtual_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke non-existing method
+     */
+    public void testE5() {
+        try {
+            T_invokevirtual_15 t = new T_invokevirtual_15();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke private method of other class
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.TProtected
+        try {
+            T_invokevirtual_18 t = new T_invokevirtual_18();
+            t.run(new TProtected());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Attempt to invoke protected method of other class
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.TProtected
+        try {
+            T_invokevirtual_20 t = new T_invokevirtual_20();
+            t.run(new TProtected());
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  method has different signature
+     */
+    public void testE8() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        try {
+            T_invokevirtual_19 t = new T_invokevirtual_19();
+            t.run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13 
+     * @title valid index into constant pool table
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.13
+     * @title invalid index into constant pool table
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;clinit&gt; may not be called using invokevirtual
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1 
+     * @title type of argument - int
+     */
+    public void testVFE5() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.14 
+     * @title &lt;init&gt; may not be called using invokevirtual
+     */
+    public void testVFE6() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.12 
+     * @title types of arguments passed to method
+     */
+    public void testVFE7() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TPlain
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.13 
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper
+        // @uses dxc.junit.opcodes.invokevirtual.jm.TSuper2
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/ATest.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/ATest.java
new file mode 100644
index 0000000..d0189ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TPlain.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TPlain.java
new file mode 100644
index 0000000..2939359
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TPlain.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+package dxc.junit.opcodes.invokevirtual.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TPlain {
+    public int toInt() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper.java
new file mode 100644
index 0000000..cc198ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+/** Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+package dxc.junit.opcodes.invokevirtual.jm;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+    public int testArgsOrder(int a, int b){
+        int i = 349;
+        int j = 344656;
+        return a / b;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper2.java
new file mode 100644
index 0000000..6fcbefe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/TSuper2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokespecial.jm.TSuper;
+
+public class TSuper2 extends TSuper {
+    
+    public int test() {
+        return 13;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.j
new file mode 100644
index 0000000..b64e0c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_1.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.java
new file mode 100644
index 0000000..1bbaec3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.j
new file mode 100644
index 0000000..e12428b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_10.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokevirtual java/lang/Object/<clinit>()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.java
new file mode 100644
index 0000000..0bdaf58
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.j
new file mode 100644
index 0000000..5fb634d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_11.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+;    aload_1
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.java
new file mode 100644
index 0000000..7c28cae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_11 {
+    
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.j
new file mode 100644
index 0000000..293a6e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_12.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    iconst_1
+    aload_1
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.java
new file mode 100644
index 0000000..62e1971
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_12 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.j
new file mode 100644
index 0000000..f7f0f0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_13.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13/getInt()I
+    ireturn
+.end method
+
+.method private getInt()I
+    sipush 345
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.java
new file mode 100644
index 0000000..dfa6179
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_13 {
+    
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.j
new file mode 100644
index 0000000..ebbad2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.j
@@ -0,0 +1,59 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_14.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()Z
+    .limit stack 3
+    .limit locals 3
+
+    bipush 123
+    istore_1
+
+    sipush 659
+    istore_2
+
+    aload_0
+    sipush 300
+    iconst_3
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14/testArgsOrder(II)I
+
+    bipush 100
+    if_icmpne Label0
+
+    iload_1
+    bipush 123
+    if_icmpne Label0
+
+    iload_2
+    sipush 659
+    if_icmpne Label0
+
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.java
new file mode 100644
index 0000000..d039fbe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_14.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_14 extends TSuper {
+
+    public boolean run() {
+        int a = 123;
+        int b = 659;
+        if(testArgsOrder(300, 3) == 100)
+            if(a == 123)
+                if(b == 659)
+                    return true;
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.j
new file mode 100644
index 0000000..61a84e0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_15.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public test()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15/test1()V
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.java
new file mode 100644
index 0000000..fae4bba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_15.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_15 {
+    
+    public void test(){
+    }
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.j
new file mode 100644
index 0000000..fc2d18c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.j
@@ -0,0 +1,23 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_16.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokevirtual java/lang/Object/<init>()V
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.java
new file mode 100644
index 0000000..c30e960
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_16.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_16 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.j
new file mode 100644
index 0000000..ac29622
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_17.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17/toInt()I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.java
new file mode 100644
index 0000000..639d499
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_17.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_17 extends TSuper {
+
+    public int run() {
+        return toInt();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.j
new file mode 100644
index 0000000..c38f212
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_18.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokevirtual/TProtected;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/TProtected/TestStub()V
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.java
new file mode 100644
index 0000000..d027bf2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_18.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.TProtected;
+
+
+    
+public class T_invokevirtual_18 extends TSuper {
+
+    public void run(TProtected obj) {
+        //obj.TestStub();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.j
new file mode 100644
index 0000000..1214d1b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_19.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    iconst_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19/toInt(I)I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.java
new file mode 100644
index 0000000..564c27f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_19.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_19 extends TSuper {
+
+    public int run() {
+        return toInt(3.14f);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.j
new file mode 100644
index 0000000..0386883
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.j
@@ -0,0 +1,158 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_2.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.failed Z
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    iconst_0
+    istore_1
+
+Label1:
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2/test()V
+
+    iinc 1 1
+
+Label0:
+    iload_1
+    sipush 1000
+    if_icmplt Label1
+
+    return
+.end method
+
+
+
+.method public synchronized test()V
+    .limit stack 3
+    .limit locals 2
+
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    istore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.failed Z
+
+Label0:
+    return
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2
+    dup
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+
+    iconst_0
+    ireturn
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.value I
+    sipush 2000
+    if_icmpeq Label1
+
+    iconst_0
+    ireturn
+
+Label1:
+
+    aload_0
+    getfield dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_2.failed Z
+    ifeq Label2
+    iconst_0
+    ireturn
+
+Label2:
+    iconst_1
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.java
new file mode 100644
index 0000000..92bb8a8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_2.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_2 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    public synchronized void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_invokevirtual_2 test = new T_invokevirtual_2();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.j
new file mode 100644
index 0000000..e340162
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_20.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ldxc/junit/opcodes/invokevirtual/TProtected;)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/TProtected/TestStubP()V
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.java
new file mode 100644
index 0000000..aa2c8d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.TProtected;
+
+    
+public class T_invokevirtual_20 extends TSuper {
+
+    public void run(TProtected obj) {
+        //obj.TestStubP();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.j
new file mode 100644
index 0000000..af0a530
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_21.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 3
+    .limit locals 1
+
+    aload_0
+;    ldc 5.0
+    dconst_1
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21/toInt(F)I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.java
new file mode 100644
index 0000000..50333e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_21 extends TSuper {
+
+    public int run() {
+        return toInt(5f);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.j
new file mode 100644
index 0000000..d3c3164
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_22.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/invokevirtual/jm/TPlain
+    dup
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TPlain/<init>()V
+
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/TSuper/toIntP()I
+
+    Label1:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.java
new file mode 100644
index 0000000..b002637
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_22.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+public class T_invokevirtual_22 extends TSuper {
+
+    public int run() {
+        TPlain p = new TPlain();
+        return p.toInt();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.j
new file mode 100644
index 0000000..8c7eec8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_23.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper2
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper2/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+    new dxc/junit/opcodes/invokevirtual/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/TSuper2/test()I
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.java
new file mode 100644
index 0000000..b2ef484
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_23.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_23 extends TSuper2 {
+    
+    public int run() {
+        return super.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.j
new file mode 100644
index 0000000..c1fd20f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_3.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.java
new file mode 100644
index 0000000..8f0fb67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_3 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.j
new file mode 100644
index 0000000..c4efa88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_4.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public native test()V
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4/test()V
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.java
new file mode 100644
index 0000000..08a969b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.j
new file mode 100644
index 0000000..d751a75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_5.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static test()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5/test()V
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.java
new file mode 100644
index 0000000..c931ce4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_5.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_5 {
+    
+    public void test(){
+    }
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.j
new file mode 100644
index 0000000..56612ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_6.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6
+.super dxc/junit/opcodes/invokevirtual/jm/ATest
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/ATest/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/ATest/test()V
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.java
new file mode 100644
index 0000000..0d18e83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_6.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.j
new file mode 100644
index 0000000..07e6f88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_7.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7
+.super dxc/junit/opcodes/invokevirtual/jm/TSuper
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/invokevirtual/jm/TSuper/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokevirtual dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7/toIntP()I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.java
new file mode 100644
index 0000000..abff1db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_7.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+import dxc.junit.opcodes.invokevirtual.jm.TSuper;
+
+    
+public class T_invokevirtual_7 extends TSuper {
+
+    public int run() {
+        return toIntP();
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.cfh
new file mode 100644
index 0000000..d8991a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 25, h: 0001: utf8{"T_invokevirtual_8.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  8  .  j  a  v  a  
+       01 00 16 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 35, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 09 
+    // parsed:, offset 40, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 59, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 72, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 96, len 9, h: 0006: utf8{"equals"}
+    // .  .  .  e  q  u  a  l  s  
+       01 00 06 65 71 75 61 6c 73 
+    // parsed:, offset 105, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 114, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0f 
+    // parsed:, offset 125, len 5, h: 000a: method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0a 00 11 00 0e 
+    // parsed:, offset 130, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 137, len 42, h: 000c: utf8{"(Ljava/lang/Object;Ljava/lang/Object;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 179, len 55, h: 000d: utf8{"dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8"}
+    // .  .  4  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  v  i  r  t  u  a  l  /  j  m  /  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  8  
+       01 00 34 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 38 
+    // parsed:, offset 234, len 5, h: 000e: nat{equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0c 00 06 00 05 
+    // parsed:, offset 239, len 6, h: 000f: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 245, len 3, h: 0010: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_8}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 248, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 251, len 0, h: end constant_pool
+// parsed:, offset 251, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 253, len 2, h: this_class: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_8}
+// .  .  
+   00 10 
+// parsed:, offset 255, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 257, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 259, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 261, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 263, len:73,desc: ()V
+// parsed:, offset 263, len 0, h:  methods[0]: 
+    // parsed:, offset 263, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 265, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 267, len 2, h: descriptor: ()V
+    // .  .  
+       00 0f 
+    // parsed:, offset 269, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 271, len 0, h:  attributes[0]: 
+        // parsed:, offset 271, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 273, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 277, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 279, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 281, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 290, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 292, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 294, len:42,desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 294, len 0, h:  methods[1]: 
+    // parsed:, offset 294, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 296, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 298, len 2, h: descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
+    // .  .  
+       00 0c 
+    // parsed:, offset 300, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 302, len 0, h:  attributes[0]: 
+        // parsed:, offset 302, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 304, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 308, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 310, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 312, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: invokevirtual method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+        // .  .  .  
+//@mod           b6 00 0a
+           b6 00 0b 
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 322, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 324, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 326, len 0, h: end attributes[0] 
+// parsed:, offset 326, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 326, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 328, len 0, h:  attributes[0]: 
+    // parsed:, offset 328, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 330, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 334, len 2, h: source: utf8{"T_invokevirtual_8.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 336, len 0, h: end attributes[0] 
+// parsed:, offset 336, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.j
new file mode 100644
index 0000000..14fc66b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_8.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+    
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.java
new file mode 100644
index 0000000..4c9fac6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_8 {
+    
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.cfh
new file mode 100644
index 0000000..a98e1d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 24, h: 0004: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 71, len 9, h: 0005: utf8{"equals"}
+    // .  .  .  e  q  u  a  l  s  
+       01 00 06 65 71 75 61 6c 73 
+    // parsed:, offset 80, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 89, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 95, len 25, h: 0008: utf8{"T_invokevirtual_9.java"}
+    // .  .  .  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  9  .  j  a  v  a  
+       01 00 16 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 39 2e 6a 61 76 61 
+    // parsed:, offset 120, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0f 
+    // parsed:, offset 125, len 5, h: 000a: method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0a 00 11 00 0e 
+    // parsed:, offset 130, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 137, len 42, h: 000c: utf8{"(Ljava/lang/Object;Ljava/lang/Object;)Z"}
+    // .  .  '  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 27 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 179, len 55, h: 000d: utf8{"dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9"}
+    // .  .  4  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  i  n  v  o  k  e  v  i  r  t  u  a  l  /  j  m  /  T  _  i  n  v  o  k  e  v  i  r  t  u  a  l  _  9  
+       01 00 34 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 2f 6a 6d 2f 54 5f 69 6e 76 6f 6b 65 76 69 72 74 75 61 6c 5f 39 
+    // parsed:, offset 234, len 5, h: 000e: nat{equals:(Ljava/lang/Object;)Z}
+    // .  .  .  .  .  
+       0c 00 05 00 04 
+    // parsed:, offset 239, len 6, h: 000f: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 245, len 3, h: 0010: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_9}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 248, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 251, len 0, h: end constant_pool
+// parsed:, offset 251, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 253, len 2, h: this_class: type{dxc.junit.opcodes.invokevirtual.jm.T_invokevirtual_9}
+// .  .  
+   00 10 
+// parsed:, offset 255, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 257, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 259, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 261, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 263, len:73,desc: ()V
+// parsed:, offset 263, len 0, h:  methods[0]: 
+    // parsed:, offset 263, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 265, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 267, len 2, h: descriptor: ()V
+    // .  .  
+       00 0f 
+    // parsed:, offset 269, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 271, len 0, h:  attributes[0]: 
+        // parsed:, offset 271, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 273, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 277, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 279, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 281, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 290, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 292, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 294, len:42,desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 294, len 0, h:  methods[1]: 
+    // parsed:, offset 294, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 296, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 298, len 2, h: descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
+    // .  .  
+       00 0c 
+    // parsed:, offset 300, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 302, len 0, h:  attributes[0]: 
+        // parsed:, offset 302, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 304, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 308, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 310, len 2, h: max_locals: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 312, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 1, h: 0001: aload_2 // 02
+        // ,  
+           2c 
+        // parsed:, offset 2, len 3, h: 0002: invokevirtual method{java.lang.Object.equals:(Ljava/lang/Object;)Z}
+        // .  .  .  
+//@mod           b6 00 0a 
+           b6 01 0a           
+        // parsed:, offset 5, len 1, h: 0005: ireturn
+        // .  
+           ac 
+        // parsed:, offset 322, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 324, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 326, len 0, h: end attributes[0] 
+// parsed:, offset 326, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;Ljava/lang/Object;)Z
+// parsed:, offset 326, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 328, len 0, h:  attributes[0]: 
+    // parsed:, offset 328, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 330, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 334, len 2, h: source: utf8{"T_invokevirtual_9.java"}
+    // .  .  
+       00 08 
+// parsed:, offset 336, len 0, h: end attributes[0] 
+// parsed:, offset 336, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.j b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.j
new file mode 100644
index 0000000..d72271b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_invokevirtual_9.java
+.class public dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_2
+    invokevirtual java/lang/Object/equals(Ljava/lang/Object;)Z
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.java b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.java
new file mode 100644
index 0000000..22b9bb0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/invokevirtual/jm/T_invokevirtual_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.invokevirtual.jm;
+
+public class T_invokevirtual_9 {
+    
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/Test_ior.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/Test_ior.java
new file mode 100644
index 0000000..e035cf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/Test_ior.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ior;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ior.jm.T_ior_1;
+
+public class Test_ior extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1 
+     */
+    public void testN2() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ior_1 t = new T_ior_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ior.jm.T_ior_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.j
new file mode 100644
index 0000000..66611f1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ior_1.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ior
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.java
new file mode 100644
index 0000000..98f023e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.j
new file mode 100644
index 0000000..39e9a3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ior_2.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ior
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.java
new file mode 100644
index 0000000..db93a0b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_2 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.j
new file mode 100644
index 0000000..fea22c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ior_3.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    ior
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.java
new file mode 100644
index 0000000..d000987
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_3 {
+
+    public int run(double a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.j
new file mode 100644
index 0000000..1d21407
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ior_4.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+    ior
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.java
new file mode 100644
index 0000000..c8cc013
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_4 {
+
+    public int run(int a, long b) {
+        return a | (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.j
new file mode 100644
index 0000000..7528958
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ior_5.java
+.class public dxc/junit/opcodes/ior/jm/T_ior_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ior
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.java
new file mode 100644
index 0000000..6dfc5aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ior/jm/T_ior_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ior.jm;
+
+public class T_ior_5 {
+    
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/Test_irem.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/Test_irem.java
new file mode 100644
index 0000000..ce72810
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/Test_irem.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.irem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.irem.jm.T_irem_1;
+
+public class Test_irem extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_irem_1 t = new T_irem_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_irem_1 t = new T_irem_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_irem_1 t = new T_irem_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.irem.jm.T_irem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.j
new file mode 100644
index 0000000..2f13c91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_irem_1.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    irem
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.java
new file mode 100644
index 0000000..e966dea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.j
new file mode 100644
index 0000000..9c9bf8b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_irem_2.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    irem
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.java
new file mode 100644
index 0000000..4ab9d2d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_2 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.j
new file mode 100644
index 0000000..e07bfea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_irem_3.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    irem
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.java
new file mode 100644
index 0000000..a7cbab2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_3 {
+
+    public int run(int a, double b) {
+        return a%(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.j
new file mode 100644
index 0000000..7571e37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_irem_4.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    irem
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.java
new file mode 100644
index 0000000..75b8831
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_4 {
+
+    public int run(long a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.j
new file mode 100644
index 0000000..803b81f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_irem_5.java
+.class public dxc/junit/opcodes/irem/jm/T_irem_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    irem
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.java
new file mode 100644
index 0000000..397fb9c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/irem/jm/T_irem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.irem.jm;
+
+public class T_irem_5 {
+    
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/Test_ireturn.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/Test_ireturn.java
new file mode 100644
index 0000000..cdb6450
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/Test_ireturn.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_1;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_6;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_7;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_8;
+import dxc.junit.opcodes.ireturn.jm.T_ireturn_9;
+
+public class Test_ireturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_ireturn_1 t = new T_ireturn_1();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_ireturn_6 t = new T_ireturn_6();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by ireturn
+     */
+    public void testN3() {
+        assertTrue(T_ireturn_7.execute());
+    }
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_ireturn_8 t = new T_ireturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_ireturn_9 t = new T_ireturn_9();
+        try {
+            assertEquals(1, t.run());
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ireturn.jm.T_ireturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.j
new file mode 100644
index 0000000..8ba1daf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_1.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc 123456
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.java
new file mode 100644
index 0000000..fe00032
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_1 {
+
+    public int run() {
+        return 123456;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.j
new file mode 100644
index 0000000..f8779af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_10.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()I
+    .limit stack 1
+    .limit locals 0
+
+    iconst_1
+    ireturn
+.end method
+
+
+
+.method public run()I
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/ireturn/jm/T_ireturn_10/test()I
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.java
new file mode 100644
index 0000000..929c22a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_10 {
+    
+    private static int test() {
+        return 1;
+    }
+    
+    public int run() {
+        return test();
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.j
new file mode 100644
index 0000000..fa54cc5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_11.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.java
new file mode 100644
index 0000000..a58a6ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_11 {
+    
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.j
new file mode 100644
index 0000000..c5d10b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_2.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.java
new file mode 100644
index 0000000..074dfd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.j
new file mode 100644
index 0000000..7afc97d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_3.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 1
+    .limit locals 1
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.java
new file mode 100644
index 0000000..dba74ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_3 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.j
new file mode 100644
index 0000000..961ad40
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_4.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    ;iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.java
new file mode 100644
index 0000000..9b0b1bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_4 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.j
new file mode 100644
index 0000000..dbd1ac5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_5.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+    .limit locals 1
+
+    dconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.java
new file mode 100644
index 0000000..bdeba53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_5 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.j
new file mode 100644
index 0000000..3ed78c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.j
@@ -0,0 +1,85 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_6.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit locals 6
+    .limit stack 6
+    
+    iconst_1
+    istore_1
+    iconst_2
+    istore_2
+    iconst_3
+    istore 3
+    
+    iconst_4
+    
+    invokestatic dxc/junit/opcodes/ireturn/jm/T_ireturn_6/test()I
+    
+    ldc 0xcafe
+    if_icmpne Label1
+    
+    iconst_4
+    if_icmpne Label0
+    
+    iload_1
+    iconst_1
+    if_icmpne Label0
+    
+    iload_2
+    iconst_2
+    if_icmpne Label0
+    
+    iload_3
+    iconst_3
+    if_icmpne Label0    
+    
+    ldc 123456
+    ireturn
+
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+
+.end method
+
+.method private static test()I
+    .limit locals 4
+    .limit stack 4
+    
+    ldc 0xaaa
+    istore_1
+    ldc 0xbbbb
+    istore_2
+    ldc 0xcccc
+    istore_3
+    
+    ldc 0xdddd
+    
+    ldc 0xcafe
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.java
new file mode 100644
index 0000000..dbf7438
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_6 {
+
+    public int run() {
+        return 123456;
+    }
+    
+    private static int test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 0xcafe;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.j
new file mode 100644
index 0000000..d1b7909
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.j
@@ -0,0 +1,161 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_7.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/ireturn/jm/T_ireturn_7/test()I
+    pop
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()I
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+    dup
+    istore_1
+
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+
+    iinc 1 1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.failed Z
+
+Label0:
+    iload_1
+    ireturn
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/ireturn/jm/T_ireturn_7
+    dup
+    invokespecial dxc/junit/opcodes/ireturn/jm/T_ireturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.value I
+    sipush 2000
+    if_icmpne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.ireturn.jm.T_ireturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.java
new file mode 100644
index 0000000..3505f19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_7.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized int test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_ireturn_7 test = new T_ireturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.j
new file mode 100644
index 0000000..ad9d528
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_8.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()I
+    .limit stack 1
+    aload_0
+    monitorexit
+    iconst_0
+    ireturn
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/ireturn/jm/T_ireturn_8/test()I
+    pop
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.java
new file mode 100644
index 0000000..9ed48af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_8 {
+    
+    private synchronized int test() {
+        return 0;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.j
new file mode 100644
index 0000000..42230f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ireturn_9.java
+.class public dxc/junit/opcodes/ireturn/jm/T_ireturn_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.java
new file mode 100644
index 0000000..50bc299
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ireturn/jm/T_ireturn_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ireturn.jm;
+
+public class T_ireturn_9 {
+    
+    public int run() {
+        return 1;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/Test_ishl.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/Test_ishl.java
new file mode 100644
index 0000000..b433c89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/Test_ishl.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ishl.jm.T_ishl_1;
+
+public class Test_ishl extends DxTestCase {
+
+    /**
+     * @title  15 << 1
+     */
+    public void testN1() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title  33 << 2
+     */
+    public void testN2() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title  -15 << 1
+     */
+    public void testN3() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(66, t.run(33, 33));
+    }
+
+    /**
+     * FIXME: do we need to check that all the shift distances (0..31) works
+     * fine?
+     */
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ishl_1 t = new T_ishl_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishl.jm.T_ishl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.j
new file mode 100644
index 0000000..a703b28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishl_1.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ishl
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.java
new file mode 100644
index 0000000..179d4f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.j
new file mode 100644
index 0000000..015f57f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishl_2.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ishl
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.java
new file mode 100644
index 0000000..94479b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_2 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.j
new file mode 100644
index 0000000..d1a4f05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishl_3.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    ishl
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.java
new file mode 100644
index 0000000..e29bdcb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_3 {
+
+    public int run(double a, int b) {
+        return (int)a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.j
new file mode 100644
index 0000000..bf5cfb7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishl_4.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    ishl
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.java
new file mode 100644
index 0000000..ea7a5ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_4 {
+
+    public int run(int a, long b) {
+        return a << (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.j
new file mode 100644
index 0000000..f5af8bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishl_5.java
+.class public dxc/junit/opcodes/ishl/jm/T_ishl_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ishl
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.java
new file mode 100644
index 0000000..6db63ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishl/jm/T_ishl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishl.jm;
+
+public class T_ishl_5 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/Test_ishr.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/Test_ishr.java
new file mode 100644
index 0000000..eaed21c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/Test_ishr.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ishr.jm.T_ishr_1;
+
+public class Test_ishr extends DxTestCase {
+
+    /**
+     * @title  15 >> 1
+     */
+    public void testN1() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title  33 >> 2
+     */
+    public void testN2() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title  -15 >> 1
+     */
+    public void testN3() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ishr_1 t = new T_ishr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ishr.jm.T_ishr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.j
new file mode 100644
index 0000000..227936c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishr_1.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ishr
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.java
new file mode 100644
index 0000000..388f28d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.j
new file mode 100644
index 0000000..21e352f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishr_2.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ishr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.java
new file mode 100644
index 0000000..4e5a4aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_2 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.j
new file mode 100644
index 0000000..26d6bd5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishr_3.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    ishr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.java
new file mode 100644
index 0000000..bee515f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_3 {
+
+    public int run(double a, int b) {
+        return (int)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.j
new file mode 100644
index 0000000..78f5c70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishr_4.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    ishr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.java
new file mode 100644
index 0000000..c8c90be
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_4 {
+
+    public int run(int a, long b) {
+        return a >> (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.j
new file mode 100644
index 0000000..8abb1ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ishr_5.java
+.class public dxc/junit/opcodes/ishr/jm/T_ishr_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ishr
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.java
new file mode 100644
index 0000000..158f740
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ishr/jm/T_ishr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ishr.jm;
+
+public class T_ishr_5 {
+    
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/Test_istore.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/Test_istore.java
new file mode 100644
index 0000000..0bf0a72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/Test_istore.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore.jm.T_istore_1;
+import dxc.junit.opcodes.istore.jm.T_istore_1_w;
+import dxc.junit.opcodes.istore.jm.T_istore_5;
+import dxc.junit.opcodes.istore.jm.T_istore_5_w;
+
+public class Test_istore extends DxTestCase {
+
+    /*
+     * NORMAL ISTORE VERSION
+     */
+
+    /**
+     * @title  istore 0
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_1.run());
+    }
+
+    /**
+     * @title  istore 255
+     */
+    public void testN2() {
+        assertEquals(3, T_istore_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ISTORE VERSION
+     */
+
+    /**
+     * @title  istore_w 0
+     */
+    public void testN3() {
+        assertEquals(3, T_istore_1_w.run());
+    }
+
+    /**
+     * @title  istore 257
+     */
+    public void testN4() {
+        assertEquals(3, T_istore_5_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore.jm.T_istore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.j
new file mode 100644
index 0000000..2b56c03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_1.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore 0
+    iconst_4
+    iload 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.java
new file mode 100644
index 0000000..26bb424
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.j
new file mode 100644
index 0000000..fd4e415
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_1_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_1_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore_w 0
+    iconst_4
+    iload 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.java
new file mode 100644
index 0000000..4de9c68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_1_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_1_w {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.j
new file mode 100644
index 0000000..c84ab6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_2.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.java
new file mode 100644
index 0000000..7c31a2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.j
new file mode 100644
index 0000000..4366807
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_2_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.java
new file mode 100644
index 0000000..eea683b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_2_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_2_w {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.j
new file mode 100644
index 0000000..d7bd3b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_3.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.java
new file mode 100644
index 0000000..094c6c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.j
new file mode 100644
index 0000000..dfac893
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_3_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.java
new file mode 100644
index 0000000..9b2f312
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_3_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.j
new file mode 100644
index 0000000..6252b44
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_4.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.java
new file mode 100644
index 0000000..c7882a3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.j
new file mode 100644
index 0000000..7050afa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_4_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_w 0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.java
new file mode 100644
index 0000000..79d0d0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_4_w {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.j
new file mode 100644
index 0000000..41e7c1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_5.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_3
+    istore 255
+    iconst_4
+    iload 255
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.java
new file mode 100644
index 0000000..51761df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_5 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.j
new file mode 100644
index 0000000..79ddbac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_5_w.java
+.class public dxc/junit/opcodes/istore/jm/T_istore_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 300
+    
+    iconst_3
+    istore_w 257
+    iconst_4
+    iload 257
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.java
new file mode 100644
index 0000000..456e1c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore/jm/T_istore_5_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore.jm;
+
+public class T_istore_5_w {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/Test_istore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/Test_istore_0.java
new file mode 100644
index 0000000..5db3ee1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/Test_istore_0.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_0.jm.T_istore_0_1;
+import dxc.junit.opcodes.istore_0.jm.T_istore_0_5;
+
+public class Test_istore_0 extends DxTestCase {
+
+    /**
+     * @title 
+     * "The value of local variable at <n> is pushed onto the operand stack."
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_0_1.run());
+    }
+
+    /**
+     * @title 
+     * "Each of the istore_<n> instructions is the same as istore with an index of <n>"
+     */
+    public void testN2() {
+        assertTrue(T_istore_0_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_0.jm.T_istore_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_0.jm.T_istore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_0.jm.T_istore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.j
new file mode 100644
index 0000000..018b594
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_0_1.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+    
+    iconst_3
+    istore_0
+    iconst_4
+    iload_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.java
new file mode 100644
index 0000000..1674efd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.j
new file mode 100644
index 0000000..72a9b7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_0_2.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.java
new file mode 100644
index 0000000..072ea72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.j
new file mode 100644
index 0000000..8e48f0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_0_3.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.java
new file mode 100644
index 0000000..7b4b791
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.j
new file mode 100644
index 0000000..97a9b31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_0_4.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_0
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.java
new file mode 100644
index 0000000..afe4463
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.j
new file mode 100644
index 0000000..2d44529
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_0_5.java
+.class public dxc/junit/opcodes/istore_0/jm/T_istore_0_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    iconst_4
+    istore_0
+    iload_0
+
+    iconst_4
+    istore 0
+    iload_0
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.java
new file mode 100644
index 0000000..f1de781
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_0/jm/T_istore_0_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_0.jm;
+
+public class T_istore_0_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/Test_istore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/Test_istore_1.java
new file mode 100644
index 0000000..f19e001
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/Test_istore_1.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_1.jm.T_istore_1_1;
+import dxc.junit.opcodes.istore_1.jm.T_istore_1_5;
+
+public class Test_istore_1 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_1_1.run());
+    }
+
+    /**
+     * @title each of the istore_<n> instructions is the same as istore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_istore_1_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_1.jm.T_istore_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_1.jm.T_istore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_1.jm.T_istore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.j
new file mode 100644
index 0000000..19950d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_1_1.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 2
+    
+    iconst_3
+    istore_1
+    iconst_4
+    iload_1
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.java
new file mode 100644
index 0000000..862a5ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.j
new file mode 100644
index 0000000..5e4ba56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_1_2.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.java
new file mode 100644
index 0000000..914e29a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.j
new file mode 100644
index 0000000..46c9882
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_1_3.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.java
new file mode 100644
index 0000000..4e6c906
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.j
new file mode 100644
index 0000000..f5d9dd6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_1_4.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.java
new file mode 100644
index 0000000..ef863a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.j
new file mode 100644
index 0000000..2f36d55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_1_5.java
+.class public dxc/junit/opcodes/istore_1/jm/T_istore_1_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 2
+
+    iconst_4
+    istore_1
+    iload_1
+
+    iconst_4
+    istore 1
+    iload_1
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.java
new file mode 100644
index 0000000..1169514
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_6.java
new file mode 100644
index 0000000..91d705a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_1/jm/T_istore_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_1.jm;
+
+public class T_istore_1_6 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/Test_istore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/Test_istore_2.java
new file mode 100644
index 0000000..5969a29
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/Test_istore_2.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_2.jm.T_istore_2_1;
+import dxc.junit.opcodes.istore_2.jm.T_istore_2_5;
+
+public class Test_istore_2 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_2_1.run());
+    }
+
+    /**
+     * @title Each of the istore_<n> instructions is the same as istore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_istore_2_5.run());
+    }
+
+    /**
+     * /** @constraint 4.8.1.22
+     * @title index must be no greater than the
+     * value of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_2.jm.T_istore_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_2.jm.T_istore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_2.jm.T_istore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.j
new file mode 100644
index 0000000..08ecc36
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_2_1.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 4
+    
+    iconst_3
+    istore_2
+    iconst_4
+    iload_2
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.java
new file mode 100644
index 0000000..ee46237
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.j
new file mode 100644
index 0000000..a87b68b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_2_2.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.java
new file mode 100644
index 0000000..0bd11f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.j
new file mode 100644
index 0000000..c3a6c6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_2_3.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.java
new file mode 100644
index 0000000..7b1052c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.j
new file mode 100644
index 0000000..e78662a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_2_4.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_2
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.java
new file mode 100644
index 0000000..ef0a44b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.j
new file mode 100644
index 0000000..65212ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_2_5.java
+.class public dxc/junit/opcodes/istore_2/jm/T_istore_2_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 3
+
+    iconst_4
+    istore_2
+    iload_2
+
+    iconst_4
+    istore 2
+    iload_2
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.java
new file mode 100644
index 0000000..3d852d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_2/jm/T_istore_2_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_2.jm;
+
+public class T_istore_2_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/Test_istore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/Test_istore_3.java
new file mode 100644
index 0000000..3935338
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/Test_istore_3.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.istore_3.jm.T_istore_3_1;
+import dxc.junit.opcodes.istore_3.jm.T_istore_3_5;
+
+public class Test_istore_3 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(3, T_istore_3_1.run());
+    }
+
+    /**
+     * @title Each of the istore_<n> instructions is the same as istore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_istore_3_5.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_3.jm.T_istore_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_3.jm.T_istore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.istore_3.jm.T_istore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.j
new file mode 100644
index 0000000..4500a87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_3_1.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 4
+    
+    iconst_3
+    istore_3
+    iconst_4
+    iload_3
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.java
new file mode 100644
index 0000000..6e26dac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_1 {
+
+    public static int run() {
+        return 3;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.j
new file mode 100644
index 0000000..0be8ae9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_3_2.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    istore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.java
new file mode 100644
index 0000000..cd6cc2e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_2 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.j
new file mode 100644
index 0000000..e481f78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_3_3.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    istore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.java
new file mode 100644
index 0000000..b51534a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.j
new file mode 100644
index 0000000..0c6e947
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_3_4.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    lconst_1
+    istore_3
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.java
new file mode 100644
index 0000000..9eebda6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.j
new file mode 100644
index 0000000..6a10077
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_istore_3_5.java
+.class public dxc/junit/opcodes/istore_3/jm/T_istore_3_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public static run()Z
+    .limit stack 2
+    .limit locals 4
+
+    iconst_4
+    istore_3
+    iload_3
+
+    iconst_4
+    istore 3
+    iload_3
+    
+    if_icmpne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.java
new file mode 100644
index 0000000..dc6c7ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/istore_3/jm/T_istore_3_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.istore_3.jm;
+
+public class T_istore_3_5 {
+
+    public static boolean run() {
+        int i = 4;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/Test_isub.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/Test_isub.java
new file mode 100644
index 0000000..a31f856
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/Test_isub.java
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.isub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.isub.jm.T_isub_1;
+
+public class Test_isub extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_isub_1 t = new T_isub_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.isub.jm.T_isub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.j
new file mode 100644
index 0000000..d406038
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_isub_1.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    isub
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.java
new file mode 100644
index 0000000..bcb204e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.j
new file mode 100644
index 0000000..d9c100a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_isub_2.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    ; iload_2    
+    isub
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.java
new file mode 100644
index 0000000..b0c22d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_2 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.j
new file mode 100644
index 0000000..e8afde9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_isub_3.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(ID)I
+    .limit stack 3
+    .limit locals 5
+    iload_1
+    dload_2    
+    isub
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.java
new file mode 100644
index 0000000..0bfd571
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_3 {
+
+    public int run(int a, double b) {
+        return a-(int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.j
new file mode 100644
index 0000000..93d9f1d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_isub_4.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)I
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+;    l2i
+    iload_3
+    isub
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.java
new file mode 100644
index 0000000..66b9274
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_4 {
+
+    public int run(long a, int b) {
+        return (int)a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.j
new file mode 100644
index 0000000..3ec22ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_isub_5.java
+.class public dxc/junit/opcodes/isub/jm/T_isub_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    isub
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.java
new file mode 100644
index 0000000..f7660cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/isub/jm/T_isub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.isub.jm;
+
+public class T_isub_5 {
+    
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/Test_iushr.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/Test_iushr.java
new file mode 100644
index 0000000..2f20baf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/Test_iushr.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iushr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.iushr.jm.T_iushr_1;
+
+public class Test_iushr extends DxTestCase {
+
+    /**
+     * @title  15 >> 1
+     */
+    public void testN1() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title  33 >> 2
+     */
+    public void testN2() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title  -15 >> 1
+     */
+    public void testN3() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_iushr_1 t = new T_iushr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.iushr.jm.T_iushr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.j
new file mode 100644
index 0000000..d155b85
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iushr_1.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    iushr
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.java
new file mode 100644
index 0000000..bef0499
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.j
new file mode 100644
index 0000000..211cd49
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iushr_2.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    iushr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.java
new file mode 100644
index 0000000..951c9db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_2 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.j
new file mode 100644
index 0000000..37f6b3c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iushr_3.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    iushr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.java
new file mode 100644
index 0000000..ede613c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_3 {
+
+    public int run(double a, int b) {
+        return (int)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.j
new file mode 100644
index 0000000..c6e4744
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iushr_4.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    iushr
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.java
new file mode 100644
index 0000000..41c7829
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_4 {
+
+    public int run(int a, long b) {
+        return a >> (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.j
new file mode 100644
index 0000000..4e4ae33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_iushr_5.java
+.class public dxc/junit/opcodes/iushr/jm/T_iushr_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    iushr
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.java
new file mode 100644
index 0000000..beb152c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/iushr/jm/T_iushr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.iushr.jm;
+
+public class T_iushr_5 {
+    
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/Test_ixor.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/Test_ixor.java
new file mode 100644
index 0000000..5425b9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/Test_ixor.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ixor;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ixor.jm.T_ixor_1;
+
+public class Test_ixor extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(7, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_ixor_1 t = new T_ixor_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ixor.jm.T_ixor_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.j
new file mode 100644
index 0000000..56ae3a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ixor_1.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    ixor
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.java
new file mode 100644
index 0000000..c4ae6bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.j
new file mode 100644
index 0000000..5d80b38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ixor_2.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    ixor
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.java
new file mode 100644
index 0000000..57fbb22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_2 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.j
new file mode 100644
index 0000000..5773388
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ixor_3.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    ixor
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.java
new file mode 100644
index 0000000..8b968ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_3 {
+
+    public int run(double a, int b) {
+        return (int)a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.j
new file mode 100644
index 0000000..68649a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ixor_4.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+;    l2i
+    ixor
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.java
new file mode 100644
index 0000000..6406bc9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_4 {
+
+    public int run(int a, long b) {
+        return a ^ (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.j
new file mode 100644
index 0000000..53c64f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ixor_5.java
+.class public dxc/junit/opcodes/ixor/jm/T_ixor_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    iload_2
+    ixor
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.java
new file mode 100644
index 0000000..3b52886
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ixor/jm/T_ixor_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ixor.jm;
+
+public class T_ixor_5 {
+    
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/Test_jsr.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/Test_jsr.java
new file mode 100644
index 0000000..5a737a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/Test_jsr.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.jsr.jm.T_jsr_1;
+import dxc.junit.opcodes.jsr.jm.T_jsr_2;
+
+public class Test_jsr extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_jsr_1 t = new T_jsr_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  nested jsrs
+     */
+    public void testN2() {
+        T_jsr_2 t = new T_jsr_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.23
+     * @title recursion of jsr
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr.jm.T_jsr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr.jm.T_jsr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target inside wide instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr.jm.T_jsr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.j
new file mode 100644
index 0000000..5e97c77
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_1.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_1
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_1.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_1.i1 I
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.java
new file mode 100644
index 0000000..d148104
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_1 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.j
new file mode 100644
index 0000000..ee1ffac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_2.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_2
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_2.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 500
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_2.i1 I
+    
+    jsr SetField1
+    
+    ret 1
+    
+SetField1:
+    astore_2
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_2.i1 I
+    ret 2
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.java
new file mode 100644
index 0000000..10e4303
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_2.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_2 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 500;
+        setfield1();
+    }
+    
+    private void setfield1() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.cfh
new file mode 100644
index 0000000..6deff56
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.cfh
@@ -0,0 +1,219 @@
+//@class:dxc/junit/opcodes/jsr/jm/T_jsr_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 3, h: 0005: type{dxc.junit.opcodes.jsr.jm.T_jsr_3}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 70, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 75, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 6, h: 000a: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 88, len 15, h: 000b: utf8{"T_jsr_3.java"}
+    // .  .  .  T  _  j  s  r  _  3  .  j  a  v  a  
+       01 00 0c 54 5f 6a 73 72 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 103, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 109, len 35, h: 000d: utf8{"dxc/junit/opcodes/jsr/jm/T_jsr_3"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  /  j  m  /  T  _  j  s  r  _  3  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 2f 6a 6d 2f 54 5f 6a 73 72 5f 33 
+    // parsed:, offset 144, len 4, h: 000e: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 148, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 151, len 0, h: end constant_pool
+// parsed:, offset 151, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 153, len 2, h: this_class: type{dxc.junit.opcodes.jsr.jm.T_jsr_3}
+// .  .  
+   00 05 
+// parsed:, offset 155, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 157, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 159, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 161, len:90,desc: I
+// parsed:, offset 161, len 0, h:  fields[0]: 
+    // parsed:, offset 161, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 163, len 2, h: name: i1
+    // .  .  
+       00 07 
+    // parsed:, offset 165, len 2, h: descriptor: I
+    // .  .  
+       00 0e 
+    // parsed:, offset 167, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 169, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 169, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 171, len:80,desc: ()V
+// parsed:, offset 171, len 0, h:  methods[0]: 
+    // parsed:, offset 171, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 175, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 177, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 0, h:  attributes[0]: 
+        // parsed:, offset 179, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 181, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 185, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 187, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 189, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 198, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 200, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 202, len 0, h: end attributes[0] 
+// parsed:, offset 202, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 202, len:49,desc: ()Z
+// parsed:, offset 202, len 0, h:  methods[1]: 
+    // parsed:, offset 202, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 206, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0a 
+    // parsed:, offset 208, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 0, h:  attributes[0]: 
+        // parsed:, offset 210, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 212, len 4, h: length: 00000019
+        // .  .  .  .  
+           00 00 00 19 
+        // parsed:, offset 216, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 218, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 220, len 4, h: code_length: 0000000d
+        // .  .  .  .  
+           00 00 00 0d 
+        // parsed:, offset 0, len 3, h: 0000: jsr 0007
+        // .  .  .  
+//@mod           a8 00 07 
+           a8 00 08 
+        // parsed:, offset 3, len 1, h: 0003: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 4, len 1, h: 0004: ireturn
+        // .  
+           ac 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 4, h: 0007: wide astore 0001
+        // .  :  .  .  
+           c4 3a 00 01 
+        // parsed:, offset 11, len 2, h: 000b: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 237, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 239, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 241, len 0, h: end attributes[0] 
+// parsed:, offset 241, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 241, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 243, len 0, h:  attributes[0]: 
+    // parsed:, offset 243, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 249, len 2, h: source: utf8{"T_jsr_3.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 251, len 0, h: end attributes[0] 
+// parsed:, offset 251, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.j
new file mode 100644
index 0000000..f0f987a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_3.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_3
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    iconst_0
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_w 1
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.java
new file mode 100644
index 0000000..2d5b6a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_3.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_3 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.j
new file mode 100644
index 0000000..3282061
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_4.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_4
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_4.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_4.i1 I
+ 
+    jsr SetField
+  
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.java
new file mode 100644
index 0000000..ec13147
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_4.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_4 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.cfh
new file mode 100644
index 0000000..6ecea6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.cfh
@@ -0,0 +1,246 @@
+//@class:dxc/junit/opcodes/jsr/jm/T_jsr_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: type{dxc.junit.opcodes.jsr.jm.T_jsr_5}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 70, len 5, h: 0008: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 75, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 82, len 15, h: 000a: utf8{"T_jsr_5.java"}
+    // .  .  .  T  _  j  s  r  _  5  .  j  a  v  a  
+       01 00 0c 54 5f 6a 73 72 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 97, len 6, h: 000b: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 103, len 5, h: 000c: field{dxc.junit.opcodes.jsr.jm.T_jsr_5.i1:I}
+    // .  .  .  .  .  
+       09 00 04 00 11 
+    // parsed:, offset 108, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 114, len 35, h: 000e: utf8{"dxc/junit/opcodes/jsr/jm/T_jsr_5"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  /  j  m  /  T  _  j  s  r  _  5  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 2f 6a 6d 2f 54 5f 6a 73 72 5f 35 
+    // parsed:, offset 149, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 152, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 156, len 5, h: 0011: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 08 00 10 
+// parsed:, offset 161, len 0, h: end constant_pool
+// parsed:, offset 161, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 163, len 2, h: this_class: type{dxc.junit.opcodes.jsr.jm.T_jsr_5}
+// .  .  
+   00 04 
+// parsed:, offset 165, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 167, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 169, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 171, len:104,desc: I
+// parsed:, offset 171, len 0, h:  fields[0]: 
+    // parsed:, offset 171, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 2, h: name: i1
+    // .  .  
+       00 08 
+    // parsed:, offset 175, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 177, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 179, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 179, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 181, len:94,desc: ()V
+// parsed:, offset 181, len 0, h:  methods[0]: 
+    // parsed:, offset 181, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 183, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 185, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 187, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 0, h:  attributes[0]: 
+        // parsed:, offset 189, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 191, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 195, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 208, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 210, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 212, len 0, h: end attributes[0] 
+// parsed:, offset 212, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 212, len:63,desc: ()Z
+// parsed:, offset 212, len 0, h:  methods[1]: 
+    // parsed:, offset 212, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 214, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 216, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0b 
+    // parsed:, offset 218, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 0, h:  attributes[0]: 
+        // parsed:, offset 220, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 222, len 4, h: length: 00000027
+        // .  .  .  '  
+           00 00 00 27 
+        // parsed:, offset 226, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 230, len 4, h: code_length: 0000001b
+        // .  .  .  .  
+           00 00 00 1b 
+        // parsed:, offset 0, len 3, h: 0000: jsr 0011
+        // .  .  .  
+//@mod           a8 00 11 
+           a8 00 ff 
+        // parsed:, offset 3, len 1, h: 0003: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 4, len 3, h: 0004: getfield field{dxc.junit.opcodes.jsr.jm.T_jsr_5.i1:I}
+        // .  .  .  
+           b4 00 0c 
+        // parsed:, offset 7, len 3, h: 0007: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 10, len 3, h: 000a: if_icmpne 000f
+        // .  .  .  
+           a0 00 05 
+        // parsed:, offset 13, len 1, h: 000d: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 14, len 1, h: 000e: ireturn
+        // .  
+           ac 
+        // parsed:, offset 15, len 1, h: 000f: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 16, len 1, h: 0010: ireturn
+        // .  
+           ac 
+        // parsed:, offset 17, len 1, h: 0011: astore_1 // 01
+        // L  
+           4c 
+        // parsed:, offset 18, len 1, h: 0012: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 19, len 3, h: 0013: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 22, len 3, h: 0016: putfield field{dxc.junit.opcodes.jsr.jm.T_jsr_5.i1:I}
+        // .  .  .  
+           b5 00 0c 
+        // parsed:, offset 25, len 2, h: 0019: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 261, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 263, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 265, len 0, h: end attributes[0] 
+// parsed:, offset 265, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 265, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 267, len 0, h:  attributes[0]: 
+    // parsed:, offset 267, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 269, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 273, len 2, h: source: utf8{"T_jsr_5.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 275, len 0, h: end attributes[0] 
+// parsed:, offset 275, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.j
new file mode 100644
index 0000000..d369389
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_5.java
+.class public dxc/junit/opcodes/jsr/jm/T_jsr_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr.jm.T_jsr_5.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr.jm.T_jsr_5.i1 I
+    
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.java
new file mode 100644
index 0000000..6e99e92
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr/jm/T_jsr_5.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr.jm;
+
+public class T_jsr_5 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/Test_jsr_w.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/Test_jsr_w.java
new file mode 100644
index 0000000..65e3320
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/Test_jsr_w.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.jsr_w.jm.T_jsr_w_1;
+import dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2;
+
+public class Test_jsr_w extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_jsr_w_1 t = new T_jsr_w_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title  nested jsrs
+     */
+    public void testN2() {
+        T_jsr_w_2 t = new T_jsr_w_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.23
+     * @title recursion of jsr
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr_w.jm.T_jsr_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target inside wide instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.jsr_w.jm.T_jsr_w_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.j
new file mode 100644
index 0000000..b1e3523
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_w_1.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_1.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_1.i1 I
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.java
new file mode 100644
index 0000000..7dbb6b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_1 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.j
new file mode 100644
index 0000000..c9eb7b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_w_2.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 500
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2.i1 I
+    
+    jsr_w SetField1
+    
+    ret 1
+    
+SetField1:
+    astore_2
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_2.i1 I
+    ret 2
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.java
new file mode 100644
index 0000000..cd78013
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_2.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_2 {
+    public int i1;
+    
+    private void setfield() {
+        i1 = 500;
+        setfield1();
+    }
+    
+    private void setfield1() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.cfh
new file mode 100644
index 0000000..af25bac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.cfh
@@ -0,0 +1,219 @@
+//@class:dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 17, h: 0004: utf8{"T_jsr_w_3.java"}
+    // .  .  .  T  _  j  s  r  _  w  _  3  .  j  a  v  a  
+       01 00 0e 54 5f 6a 73 72 5f 77 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 64, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 73, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 79, len 5, h: 0007: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 84, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 89, len 39, h: 0009: utf8{"dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  _  w  /  j  m  /  T  _  j  s  r  _  w  _  3  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 5f 77 2f 6a 6d 2f 54 5f 6a 73 72 5f 77 5f 33 
+    // parsed:, offset 128, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 141, len 3, h: 000c: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_3}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 144, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 150, len 4, h: 000e: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 154, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 157, len 0, h: end constant_pool
+// parsed:, offset 157, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 159, len 2, h: this_class: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_3}
+// .  .  
+   00 0c 
+// parsed:, offset 161, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 163, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 165, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 167, len:92,desc: I
+// parsed:, offset 167, len 0, h:  fields[0]: 
+    // parsed:, offset 167, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 169, len 2, h: name: i1
+    // .  .  
+       00 07 
+    // parsed:, offset 171, len 2, h: descriptor: I
+    // .  .  
+       00 0e 
+    // parsed:, offset 173, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 175, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 175, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 177, len:82,desc: ()V
+// parsed:, offset 177, len 0, h:  methods[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 181, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 183, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 0, h:  attributes[0]: 
+        // parsed:, offset 185, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 187, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 191, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 193, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 204, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 206, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 208, len 0, h: end attributes[0] 
+// parsed:, offset 208, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 208, len:51,desc: ()Z
+// parsed:, offset 208, len 0, h:  methods[1]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0b 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 218, len 4, h: length: 0000001b
+        // .  .  .  .  
+           00 00 00 1b 
+        // parsed:, offset 222, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 224, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 226, len 4, h: code_length: 0000000f
+        // .  .  .  .  
+           00 00 00 0f 
+        // parsed:, offset 0, len 5, h: 0000: jsr_w 00000009
+        // .  .  .  .  .  
+//@mod           c9 00 00 00 09 
+           c9 00 00 00 0a 
+        // parsed:, offset 5, len 1, h: 0005: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 7, len 1, h: 0007: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 8, len 1, h: 0008: ireturn
+        // .  
+           ac 
+        // parsed:, offset 9, len 4, h: 0009: wide astore 0001
+        // .  :  .  .  
+           c4 3a 00 01 
+        // parsed:, offset 13, len 2, h: 000d: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 245, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 247, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 249, len 0, h: end attributes[0] 
+// parsed:, offset 249, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 249, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 251, len 0, h:  attributes[0]: 
+    // parsed:, offset 251, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 253, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 257, len 2, h: source: utf8{"T_jsr_w_3.java"}
+    // .  .  
+       00 04 
+// parsed:, offset 259, len 0, h: end attributes[0] 
+// parsed:, offset 259, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.j
new file mode 100644
index 0000000..7be029b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_w_3.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    iconst_0
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_w 1
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.java
new file mode 100644
index 0000000..125de8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_3.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_3 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.j
new file mode 100644
index 0000000..0fdd704
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_w_4.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_4.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_4.i1 I
+ 
+    jsr_w SetField
+  
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.java
new file mode 100644
index 0000000..c58f2f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_4.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_4 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.cfh
new file mode 100644
index 0000000..b0bb2e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.cfh
@@ -0,0 +1,246 @@
+//@class:dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5}
+    // .  .  .  
+       07 00 07 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 39, h: 0007: utf8{"dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  j  s  r  _  w  /  j  m  /  T  _  j  s  r  _  w  _  5  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6a 73 72 5f 77 2f 6a 6d 2f 54 5f 6a 73 72 5f 77 5f 35 
+    // parsed:, offset 104, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 109, len 5, h: 0009: utf8{"i1"}
+    // .  .  .  i  1  
+       01 00 02 69 31 
+    // parsed:, offset 114, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 121, len 6, h: 000b: utf8{"()Z"}
+    // .  .  .  (  )  Z  
+       01 00 03 28 29 5a 
+    // parsed:, offset 127, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 133, len 5, h: 000d: field{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1:I}
+    // .  .  .  .  .  
+       09 00 04 00 11 
+    // parsed:, offset 138, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 141, len 4, h: 000f: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 145, len 17, h: 0010: utf8{"T_jsr_w_5.java"}
+    // .  .  .  T  _  j  s  r  _  w  _  5  .  j  a  v  a  
+       01 00 0e 54 5f 6a 73 72 5f 77 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 162, len 5, h: 0011: nat{i1:I}
+    // .  .  .  .  .  
+       0c 00 09 00 0f 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5}
+// .  .  
+   00 04 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:i1, offset 177, len:106,desc: I
+// parsed:, offset 177, len 0, h:  fields[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: i1
+    // .  .  
+       00 09 
+    // parsed:, offset 181, len 2, h: descriptor: I
+    // .  .  
+       00 0f 
+    // parsed:, offset 183, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 185, len 0, h: end fields[0] 
+// ========== end-ParseMember:i1, desc: I
+// parsed:, offset 185, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 187, len:96,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[0]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 197, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 201, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 214, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 216, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 218, len 0, h: end attributes[0] 
+// parsed:, offset 218, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 218, len:65,desc: ()Z
+// parsed:, offset 218, len 0, h:  methods[1]: 
+    // parsed:, offset 218, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 220, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 222, len 2, h: descriptor: ()Z
+    // .  .  
+       00 0b 
+    // parsed:, offset 224, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 226, len 0, h:  attributes[0]: 
+        // parsed:, offset 226, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 228, len 4, h: length: 00000029
+        // .  .  .  )  
+           00 00 00 29 
+        // parsed:, offset 232, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 234, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 236, len 4, h: code_length: 0000001d
+        // .  .  .  .  
+           00 00 00 1d 
+        // parsed:, offset 0, len 5, h: 0000: jsr_w 00000013
+        // .  .  .  .  .  
+//@mod           c9 00 00 00 13 
+           c9 00 00 00 ff         
+        // parsed:, offset 5, len 1, h: 0005: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 6, len 3, h: 0006: getfield field{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1:I}
+        // .  .  .  
+           b4 00 0d 
+        // parsed:, offset 9, len 3, h: 0009: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 12, len 3, h: 000c: if_icmpne 0011
+        // .  .  .  
+           a0 00 05 
+        // parsed:, offset 15, len 1, h: 000f: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 16, len 1, h: 0010: ireturn
+        // .  
+           ac 
+        // parsed:, offset 17, len 1, h: 0011: iconst_0 // #+00
+        // .  
+           03 
+        // parsed:, offset 18, len 1, h: 0012: ireturn
+        // .  
+           ac 
+        // parsed:, offset 19, len 1, h: 0013: astore_1 // 01
+        // L  
+           4c 
+        // parsed:, offset 20, len 1, h: 0014: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 21, len 3, h: 0015: sipush #+03e8
+        // .  .  .  
+           11 03 e8 
+        // parsed:, offset 24, len 3, h: 0018: putfield field{dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1:I}
+        // .  .  .  
+           b5 00 0d 
+        // parsed:, offset 27, len 2, h: 001b: ret 01
+        // .  .  
+           a9 01 
+        // parsed:, offset 269, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 271, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 273, len 0, h: end attributes[0] 
+// parsed:, offset 273, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Z
+// parsed:, offset 273, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 275, len 0, h:  attributes[0]: 
+    // parsed:, offset 275, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 277, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 281, len 2, h: source: utf8{"T_jsr_w_5.java"}
+    // .  .  
+       00 10 
+// parsed:, offset 283, len 0, h: end attributes[0] 
+// parsed:, offset 283, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.j
new file mode 100644
index 0000000..41dd4bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.j
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_jsr_w_5.java
+.class public dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.jsr_w.jm.T_jsr_w_5.i1 I
+    
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.java
new file mode 100644
index 0000000..4693529
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/jsr_w/jm/T_jsr_w_5.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.jsr_w.jm;
+
+public class T_jsr_w_5 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/Test_l2d.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/Test_l2d.java
new file mode 100644
index 0000000..6b27eab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/Test_l2d.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.l2d.jm.T_l2d_1;
+
+public class Test_l2d extends DxTestCase {
+
+    /**
+     * @title  Argument = 50000000000
+     */
+    public void testN1() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(5.0E10d, t.run(50000000000l), 0d);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(1d, t.run(1l), 0d);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(-1d, t.run(-1l), 0d);
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(9.223372036854776E18d, t.run(Long.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_l2d_1 t = new T_l2d_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2d.jm.T_l2d_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.j
new file mode 100644
index 0000000..0a98eb7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2d_1.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.java
new file mode 100644
index 0000000..0d4f014
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_1 {
+
+    public double run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.j
new file mode 100644
index 0000000..ecf0bf8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2d_2.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.java
new file mode 100644
index 0000000..fbba547
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_2 {
+
+    public double run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.j
new file mode 100644
index 0000000..b529402
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2d_3.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(F)D
+    .limit stack 2
+    .limit locals 2
+
+    fload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.java
new file mode 100644
index 0000000..92a342f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_3 {
+
+    public double run(float a) {
+        return a;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.j
new file mode 100644
index 0000000..42c4e7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2d_4.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(I)D
+    .limit stack 2
+    .limit locals 2
+
+    iload_1
+    l2d
+
+    dreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.java
new file mode 100644
index 0000000..717aedb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_4 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_5.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_5.java
new file mode 100644
index 0000000..4a3ebb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_5 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_6.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_6.java
new file mode 100644
index 0000000..f79957e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.j b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.j
new file mode 100644
index 0000000..70fbabb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2d_7.java
+.class public dxc/junit/opcodes/l2d/jm/T_l2d_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)D
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    l2d
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.java b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.java
new file mode 100644
index 0000000..2d04278
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2d/jm/T_l2d_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2d.jm;
+
+public class T_l2d_7 {
+    
+    public double run(long a) {
+        return a;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/Test_l2f.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/Test_l2f.java
new file mode 100644
index 0000000..7b1d277
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/Test_l2f.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2f;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.l2f.jm.T_l2f_1;
+
+public class Test_l2f extends DxTestCase {
+
+    /**
+     * @title  Argument = 123456789012345
+     */
+    public void testN1() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(1.23456788E14f, t.run(123456789012345l), 0f);
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(1f, t.run(1l), 0f);
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(-1f, t.run(-1l), 0f);
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(9.223372036854776E18, t.run(Long.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0f);
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_l2f_1 t = new T_l2f_1();
+        assertEquals(0f, t.run(0l), 0f);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2f.jm.T_l2f_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.j
new file mode 100644
index 0000000..69cd105
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2f_1.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.java
new file mode 100644
index 0000000..a115daf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_1 {
+
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.j
new file mode 100644
index 0000000..abc3a02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2f_2.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.java
new file mode 100644
index 0000000..fde8820
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_2 {
+
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.j
new file mode 100644
index 0000000..55b3efd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2f_3.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)F
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.java
new file mode 100644
index 0000000..e4e0342
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_3 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.j
new file mode 100644
index 0000000..7fa4036
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2f_4.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(I)F
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    l2f
+
+    freturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.java
new file mode 100644
index 0000000..6bdd0dc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_4 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.j b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.j
new file mode 100644
index 0000000..8addc20
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2f_5.java
+.class public dxc/junit/opcodes/l2f/jm/T_l2f_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)F
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    l2f
+    freturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.java b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.java
new file mode 100644
index 0000000..dae1222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2f/jm/T_l2f_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2f.jm;
+
+public class T_l2f_5 {
+    
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/Test_l2i.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/Test_l2i.java
new file mode 100644
index 0000000..627e5fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/Test_l2i.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2i;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.l2i.jm.T_l2i_1;
+
+public class Test_l2i extends DxTestCase {
+
+    /**
+     * @title  Argument = 0xAAAAFFEEDDCCl
+     */
+    public void testN1() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(0xFFEEDDCC, t.run(0xAAAAFFEEDDCCl));
+    }
+
+    /**
+     * @title  Argument = -123456789
+     */
+    public void testN2() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(-123456789, t.run(-123456789l));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN3() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(1, t.run(1l));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN4() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(-1, t.run(-1l));
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(-1, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(0, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB3() {
+        T_l2i_1 t = new T_l2i_1();
+        assertEquals(0, t.run(0l));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.l2i.jm.T_l2i_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.j
new file mode 100644
index 0000000..7acd7e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2i_1.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    l2i
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.java
new file mode 100644
index 0000000..a871771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_1 {
+
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.j
new file mode 100644
index 0000000..d2a23ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2i_2.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    l2i
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.java
new file mode 100644
index 0000000..beabb5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_2 {
+
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.j
new file mode 100644
index 0000000..013f9b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2i_3.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(D)I
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    l2i
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.java
new file mode 100644
index 0000000..edcc6d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_3 {
+
+    public int run(double a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.j
new file mode 100644
index 0000000..acc31bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2i_4.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(F)I
+    .limit stack 2
+    .limit locals 3
+
+    fload_1
+    l2i
+
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.java
new file mode 100644
index 0000000..af8320c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_4 {
+
+    public int run(float a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.j b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.j
new file mode 100644
index 0000000..8ee7bcd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_l2i_5.java
+.class public dxc/junit/opcodes/l2i/jm/T_l2i_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)I
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    l2i
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.java b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.java
new file mode 100644
index 0000000..1ffbb57
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/l2i/jm/T_l2i_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.l2i.jm;
+
+public class T_l2i_5 {
+    
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/Test_ladd.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/Test_ladd.java
new file mode 100644
index 0000000..7c37739
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/Test_ladd.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ladd;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ladd.jm.T_ladd_1;
+
+public class Test_ladd extends DxTestCase {
+
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+    /**
+     * @title  Arguments: 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments: 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments: 0 + 0
+     */
+    public void testB3() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title  Arguments: Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments: Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments: Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments: Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title  Arguments: Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_ladd_1 t = new T_ladd_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ladd.jm.T_ladd_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.j
new file mode 100644
index 0000000..03b8556
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ladd_1.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.java
new file mode 100644
index 0000000..56c7f9a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.j
new file mode 100644
index 0000000..5757930
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ladd_2.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.java
new file mode 100644
index 0000000..98d4e78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_2 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.j
new file mode 100644
index 0000000..0fb7885
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ladd_3.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+;    d2l    
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.java
new file mode 100644
index 0000000..cc306af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_3 {
+
+    public long run(long a, double b) {
+        return (long)(a+b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.j
new file mode 100644
index 0000000..da9d27f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ladd_4.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JI)J
+    .limit stack 4
+    .limit locals 4
+
+    lload_1
+    iload_3
+;    i2l
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.java
new file mode 100644
index 0000000..0412967
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_4 {
+
+    public long run(long a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.j
new file mode 100644
index 0000000..fbb7d16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ladd_5.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_5
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JF)J
+    .limit stack 4
+    .limit locals 4
+
+    lload_1
+    fload_3
+;    f2l    
+    ladd
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.java
new file mode 100644
index 0000000..0468585
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_5 {
+
+    public long run(long a, float b) {
+        return (long)(a+b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.j
new file mode 100644
index 0000000..c82e12e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ladd_6.java
+.class public dxc/junit/opcodes/ladd/jm/T_ladd_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    ladd
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.java
new file mode 100644
index 0000000..b7fefc4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ladd/jm/T_ladd_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ladd.jm;
+
+public class T_ladd_6 {
+    
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/Test_laload.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/Test_laload.java
new file mode 100644
index 0000000..a4c0b97
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/Test_laload.java
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.laload.jm.T_laload_1;
+
+public class Test_laload extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN1() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        arr[1] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN2() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        arr[0] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 0));
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - NullPointerException
+     */
+    public void testE2() {
+        T_laload_1 t = new T_laload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_laload_1 t = new T_laload_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dxc.junit.opcodes.laload.jm.T_laload_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.j
new file mode 100644
index 0000000..156aad2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_1.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_1
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    iload_2
+    
+    laload
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.java
new file mode 100644
index 0000000..0e06614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_1 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.j
new file mode 100644
index 0000000..ca6cbcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_10.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    laload
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.java
new file mode 100644
index 0000000..a6fa4bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_10 {
+    
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.j
new file mode 100644
index 0000000..0b1bc5b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_2.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_2
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+;    aload_1
+    iload_2
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.java
new file mode 100644
index 0000000..93854c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_2 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.j
new file mode 100644
index 0000000..da77288
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_3.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_3
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JI)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+;    iload_2
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.java
new file mode 100644
index 0000000..2230c0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_3 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.j
new file mode 100644
index 0000000..18646c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_4.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_4
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JD)J
+    .limit stack 5
+    .limit locals 4
+
+    aload_1
+    dload_2
+;    d2i
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.java
new file mode 100644
index 0000000..fbff226
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_4 {
+
+    public long run(long[] arr, double idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.j
new file mode 100644
index 0000000..5b8fcae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_5.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_5
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JF)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    fload_2
+;    f2i
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.java
new file mode 100644
index 0000000..b3072a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_5 {
+
+    public long run(long[] arr, float idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.j
new file mode 100644
index 0000000..299b9ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_6.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_6
+.super java/lang/Object
+
+
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([JJ)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    lload_2
+;    l2i
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.java
new file mode 100644
index 0000000..1d2e294
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_6 {
+
+    public long run(long[] arr, long idx) {
+        return arr[(int)idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.j
new file mode 100644
index 0000000..747b974
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_7.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(Ljava/lang/Object;[JI)J
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    laload
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.java
new file mode 100644
index 0000000..3c54ede
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_7 {
+
+    public long run(Object a, long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.j
new file mode 100644
index 0000000..8fb0626
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_8.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run([D[JI)J
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    laload
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.java
new file mode 100644
index 0000000..908c1ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_8 {
+
+    public long run(double[] a, long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.j
new file mode 100644
index 0000000..152895c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_laload_9.java
+.class public dxc/junit/opcodes/laload/jm/T_laload_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([I[JI)J
+    .limit stack 2
+    .limit locals 4
+
+    aload_1
+    iload_3
+    laload
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.java
new file mode 100644
index 0000000..e4a0373
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/laload/jm/T_laload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.laload.jm;
+
+public class T_laload_9 {
+
+    public long run(int[] a, long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/Test_land.java b/tools/dx-tests/src/dxc/junit/opcodes/land/Test_land.java
new file mode 100644
index 0000000..6902318
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/Test_land.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.land.jm.T_land_1;
+
+public class Test_land extends DxTestCase {
+
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_land_1 t = new T_land_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title  Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_land_1 t = new T_land_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.land.jm.T_land_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.j
new file mode 100644
index 0000000..ceffcd2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_land_1.java
+.class public dxc/junit/opcodes/land/jm/T_land_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.java
new file mode 100644
index 0000000..dfb8ce3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.j
new file mode 100644
index 0000000..ca6c6bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_land_2.java
+.class public dxc/junit/opcodes/land/jm/T_land_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.java
new file mode 100644
index 0000000..2eeb88f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_2 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.j
new file mode 100644
index 0000000..f2e9b24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_land_3.java
+.class public dxc/junit/opcodes/land/jm/T_land_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 4
+    .limit locals 4
+
+    fload_1
+;    f2l
+    lload_2
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.java
new file mode 100644
index 0000000..4d669ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_3 {
+
+    public long run(float a, long b) {
+        return (long)a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.j
new file mode 100644
index 0000000..8387452
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_land_4.java
+.class public dxc/junit/opcodes/land/jm/T_land_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+;    i2l
+    lload_2
+    land
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.java
new file mode 100644
index 0000000..05240b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_4 {
+
+    public long run(int a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_5.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_5.java
new file mode 100644
index 0000000..71b07b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_5 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_6.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_6.java
new file mode 100644
index 0000000..1320ff8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_6 {
+
+    public void run() {
+        // TODO
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.j b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.j
new file mode 100644
index 0000000..7547338
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_land_7.java
+.class public dxc/junit/opcodes/land/jm/T_land_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    land
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.java b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.java
new file mode 100644
index 0000000..3df40e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/land/jm/T_land_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.land.jm;
+
+public class T_land_7 {
+    
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/Test_lastore.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/Test_lastore.java
new file mode 100644
index 0000000..269cdc7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/Test_lastore.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lastore.jm.T_lastore_1;
+
+public class Test_lastore extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN1() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        t.run(arr, 1, 100000000000l);
+        assertEquals(100000000000l, arr[1]);
+    }
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN2() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        t.run(arr, 0, 100000000000l);
+        assertEquals(100000000000l, arr[0]);
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - NullPointerException
+     */
+    public void testE2() {
+        T_lastore_1 t = new T_lastore_1();
+        try {
+            t.run(null, 1, 100000000000l);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Exception - ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_lastore_1 t = new T_lastore_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int, long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * long
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lastore.jm.T_lastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.j
new file mode 100644
index 0000000..84a545d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_1.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload_3
+    lastore
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.java
new file mode 100644
index 0000000..1b99d7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_1 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.j
new file mode 100644
index 0000000..e390ddc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_2.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+;    lload_3
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.java
new file mode 100644
index 0000000..5ffe95a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_2 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.j
new file mode 100644
index 0000000..c99fb54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_3.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+;    aload_1
+    iload_2
+    lload_3
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.java
new file mode 100644
index 0000000..49f5b9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_3 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.j
new file mode 100644
index 0000000..0ad73cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_4.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JDJ)V
+    .limit stack 5
+    .limit locals 6
+
+    aload_1
+    dload_2
+;    d2i
+    lload 4
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.java
new file mode 100644
index 0000000..d18b82f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_4 {
+
+    public void run(long[] arr, double idx, long value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.j
new file mode 100644
index 0000000..8c2ffd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_5.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([JII)V
+    .limit stack 4
+    .limit locals 4
+    
+    aload_1
+    iload_2
+    iload_3
+;    i2l
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.java
new file mode 100644
index 0000000..091def6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_5 {
+
+    public void run(long[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.j
new file mode 100644
index 0000000..0b74d34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_6.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(Ljava/lang/Object;[JIJ)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_3
+    lload 4
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.java
new file mode 100644
index 0000000..8fd85cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_6 {
+
+    public void run(Object a, long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.j
new file mode 100644
index 0000000..fbd9554
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_7.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_7
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([D[JIJ)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_3
+    lload 4
+    lastore
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.java
new file mode 100644
index 0000000..f878359
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_7 {
+    
+    public void run(double[] a, long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.j
new file mode 100644
index 0000000..abde74c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_8.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run([I[JIJ)V
+    .limit stack 4
+    .limit locals 6
+
+    aload_1
+    iload_3
+    lload 4
+    lastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.java
new file mode 100644
index 0000000..21de247
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_8 {
+    
+    public void run(int[] a, long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.j
new file mode 100644
index 0000000..dd05a54
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lastore_9.java
+.class public dxc/junit/opcodes/lastore/jm/T_lastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([JIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    aload_0
+    lload_3
+    lastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.java
new file mode 100644
index 0000000..2cc91fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lastore/jm/T_lastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lastore.jm;
+
+public class T_lastore_9 {
+    
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/Test_lcmp.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/Test_lcmp.java
new file mode 100644
index 0000000..7a5e66a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/Test_lcmp.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lcmp;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lcmp.jm.T_lcmp_1;
+
+public class Test_lcmp extends DxTestCase {
+
+    /**
+     * @title  Arguments = 111234567891l > 111234567890l
+     */
+    public void testN1() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(111234567891l, 111234567890l));
+    }
+
+    /**
+     * @title  Arguments = 112234567890 == 112234567890
+     */
+    public void testN2() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(0, t.run(112234567890l, 112234567890l));
+    }
+
+    /**
+     * @title  Arguments = 112234567890 < 998876543210
+     */
+    public void testN3() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(-1, t.run(112234567890l, 998876543210l));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE > Long.MIN_VALUE
+     */
+    public void testB1() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE < Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Arguments = 1 > 0
+     */
+    public void testB3() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(1l, 0l));
+    }
+
+    /**
+     * @title  Arguments = 0 > -1
+     */
+    public void testB4() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(1, t.run(0l, -1l));
+    }
+
+    /**
+     * @title  Arguments = -1 < 0
+     */
+    public void testB5() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(-1, t.run(-1l, 0l));
+    }
+
+    /**
+     * @title  Arguments = 0 = 0
+     */
+    public void testB6() {
+        T_lcmp_1 t = new T_lcmp_1();
+        assertEquals(0, t.run(0l, 0l));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lcmp.jm.T_lcmp_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.j
new file mode 100644
index 0000000..a37867b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.j
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lcmp_1.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(JJ)I
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    
+    lcmp
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    
+    lload_1
+    lload_3
+    
+    lcmp
+    ifne Label1
+    iconst_0
+    ireturn
+
+    Label1:
+
+    iconst_m1
+
+    Label3:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.java
new file mode 100644
index 0000000..648eef6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_1 {
+
+    public int run(long a, long b) {
+        if (a > b)   return 1;
+        if (a == b)  return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.j
new file mode 100644
index 0000000..30e358f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lcmp_2.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+.method public run(JJ)I
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lcmp
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.java
new file mode 100644
index 0000000..9443337
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_2 {
+
+    public int run(long a, long b) {
+        if (a > b)   return 1;
+        if (a == b)  return 0;
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.j
new file mode 100644
index 0000000..16498e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lcmp_3.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)Z
+    .limit stack 4
+    .limit locals 5
+    
+    lload_1
+    dload_3
+;    d2l
+    lcmp
+
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.java
new file mode 100644
index 0000000..6c560b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_3 {
+
+    public boolean run(long a, double b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.j
new file mode 100644
index 0000000..01d5862
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lcmp_4.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)Z
+    .limit stack 3
+    .limit locals 4
+    
+    fload_1
+;    f2l    
+    lload_2
+    lcmp
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.java
new file mode 100644
index 0000000..610f55c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_4 {
+
+    public boolean run(float a, long b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.j
new file mode 100644
index 0000000..e726534
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lcmp_5.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)Z
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+;    i2l
+    lload_2
+    lcmp
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.java
new file mode 100644
index 0000000..3e6e5a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_5 {
+
+    public boolean run(int a, long b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.j
new file mode 100644
index 0000000..115621e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.j
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lcmp_6.java
+.class public dxc/junit/opcodes/lcmp/jm/T_lcmp_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(IJ)Z
+    .limit stack 4
+    .limit locals 4
+
+    aload_0
+    lload_2
+    lcmp
+    ifle Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.java
new file mode 100644
index 0000000..bd3b599
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lcmp/jm/T_lcmp_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lcmp.jm;
+
+public class T_lcmp_6 {
+
+    public boolean run(int a, long b) {
+        return  a > b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/Test_lconst_0.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/Test_lconst_0.java
new file mode 100644
index 0000000..7da9440
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/Test_lconst_0.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lconst_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lconst_0.jm.T_lconst_0_1;
+
+public class Test_lconst_0 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_lconst_0_1 t = new T_lconst_0_1();
+        long a = 20l;
+        long b = 20l;
+        assertEquals(a - b, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lconst_0.jm.T_lconst_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.j
new file mode 100644
index 0000000..615936c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lconst_0_1.java
+.class public dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.java
new file mode 100644
index 0000000..6d20fef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lconst_0.jm;
+
+public class T_lconst_0_1 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.j
new file mode 100644
index 0000000..2290ece
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lconst_0_2.java
+.class public dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+    lconst_0
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.java
new file mode 100644
index 0000000..251f700
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_0/jm/T_lconst_0_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lconst_0.jm;
+
+public class T_lconst_0_2 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/Test_lconst_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/Test_lconst_1.java
new file mode 100644
index 0000000..f486fe8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/Test_lconst_1.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lconst_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lconst_1.jm.T_lconst_1_1;
+
+public class Test_lconst_1 extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_lconst_1_1 t = new T_lconst_1_1();
+        long a = 20l;
+        long b = 19l;
+        assertEquals(a - b, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lconst_1.jm.T_lconst_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.j
new file mode 100644
index 0000000..3a476e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lconst_1_1.java
+.class public dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+    
+    lconst_1
+    lreturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.java
new file mode 100644
index 0000000..f6d01f2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lconst_1.jm;
+
+public class T_lconst_1_1 {
+
+    public long run() {
+        return 1l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.j
new file mode 100644
index 0000000..2be8208
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lconst_1_2.java
+.class public dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    lconst_1
+    lconst_1
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.java
new file mode 100644
index 0000000..62d1019
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lconst_1/jm/T_lconst_1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lconst_1.jm;
+
+public class T_lconst_1_2 {
+
+    public long run() {
+        return 1l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/Test_ldc.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/Test_ldc.java
new file mode 100644
index 0000000..d83462b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/Test_ldc.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldc.jm.T_ldc_1;
+import dxc.junit.opcodes.ldc.jm.T_ldc_2;
+import dxc.junit.opcodes.ldc.jm.T_ldc_3;
+
+public class Test_ldc extends DxTestCase {
+
+    /**
+     * @title push string into stack
+     */
+    public void testN1() {
+        T_ldc_1 t = new T_ldc_1();
+        // lcd is hard to test isolated
+        String res = t.run();
+        assertEquals(5, res.length());
+        assertEquals('h', res.charAt(0));
+    }
+
+    /**
+     * @title push float into stack
+     */
+    public void testN2() {
+        T_ldc_2 t = new T_ldc_2();
+        float a = 1.5f;
+        float b = 0.04f;
+        assertEquals(a + b, t.run(), 0f);
+        assertEquals(1.54f, t.run(), 0f);
+    }
+
+    /**
+     * @title push int into stack
+     */
+    public void testN3() {
+        T_ldc_3 t = new T_ldc_3();
+        int a = 1000000000;
+        int b = 1000000000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc.jm.T_ldc_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title wrong constant pool entry type (long)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc.jm.T_ldc_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.j
new file mode 100644
index 0000000..1b9571e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_1.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/String;
+    ldc "hello"
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.java
new file mode 100644
index 0000000..1c1d9ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_1 {
+
+    public String run() {
+        return "hello";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.j
new file mode 100644
index 0000000..65f5222
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_2.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()F
+    ldc 1.54
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.java
new file mode 100644
index 0000000..771174a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_2 {
+
+    public float run() {
+        return 1.54f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.j
new file mode 100644
index 0000000..08731e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_3.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    ldc 2000000000
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.java
new file mode 100644
index 0000000..5dbec3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_3 {
+
+    public int run() {
+        return 2000000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.cfh
new file mode 100644
index 0000000..ea05bc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/ldc/jm/T_ldc_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 5, h: 0004: int{0x00003039 / 12345}
+    // .  .  .  0  9  
+       03 00 00 30 39 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 6, h: 0006: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 73, len 3, h: 0008: type{dxc.junit.opcodes.ldc.jm.T_ldc_4}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 76, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 81, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 88, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 94, len 15, h: 000c: utf8{"T_ldc_4.java"}
+    // .  .  .  T  _  l  d  c  _  4  .  j  a  v  a  
+       01 00 0c 54 5f 6c 64 63 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 109, len 35, h: 000d: utf8{"dxc/junit/opcodes/ldc/jm/T_ldc_4"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  /  j  m  /  T  _  l  d  c  _  4  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 2f 6a 6d 2f 54 5f 6c 64 63 5f 34 
+    // parsed:, offset 144, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 147, len 0, h: end constant_pool
+// parsed:, offset 147, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 149, len 2, h: this_class: type{dxc.junit.opcodes.ldc.jm.T_ldc_4}
+// .  .  
+   00 08 
+// parsed:, offset 151, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 153, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 155, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 157, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 159, len:70,desc: ()V
+// parsed:, offset 159, len 0, h:  methods[0]: 
+    // parsed:, offset 159, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 161, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 163, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 165, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 167, len 0, h:  attributes[0]: 
+        // parsed:, offset 167, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 169, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 173, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 175, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 177, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 186, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 188, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 190, len 0, h: end attributes[0] 
+// parsed:, offset 190, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 190, len:39,desc: ()I
+// parsed:, offset 190, len 0, h:  methods[1]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 194, len 2, h: descriptor: ()I
+    // .  .  
+       00 06 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 200, len 4, h: length: 0000000f
+        // .  .  .  .  
+           00 00 00 0f 
+        // parsed:, offset 204, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000003
+        // .  .  .  .  
+           00 00 00 03 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+00003039
+        // .  .  
+//@mod           12 04 
+           12 14 
+        // parsed:, offset 2, len 1, h: 0002: ireturn
+        // .  
+           ac 
+        // parsed:, offset 215, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 217, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 219, len 0, h: end attributes[0] 
+// parsed:, offset 219, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 219, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 221, len 0, h:  attributes[0]: 
+    // parsed:, offset 221, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 223, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 227, len 2, h: source: utf8{"T_ldc_4.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 229, len 0, h: end attributes[0] 
+// parsed:, offset 229, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.j
new file mode 100644
index 0000000..9d121ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_4.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+
+    ldc 12345
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.java
new file mode 100644
index 0000000..e66c022
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_4 {
+
+    public int run() {
+        return 12345;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.cfh
new file mode 100644
index 0000000..a56ea0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ldc/jm/T_ldc_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 0a 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 15, h: 0003: utf8{"T_ldc_5.java"}
+    // .  .  .  T  _  l  d  c  _  5  .  j  a  v  a  
+       01 00 0c 54 5f 6c 64 63 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 49, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 62, len 5, h: 0005: int{0x00003039 / 12345}
+    // .  .  .  0  9  
+       03 00 00 30 39 
+    // parsed:, offset 67, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 76, len 6, h: 0007: utf8{"()I"}
+    // .  .  .  (  )  I  
+       01 00 03 28 29 49 
+    // parsed:, offset 82, len 3, h: 0008: type{dxc.junit.opcodes.ldc.jm.T_ldc_5}
+    // .  .  .  
+       07 00 0d 
+    // parsed:, offset 85, len 6, h: 0009: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 91, len 5, h: 000a: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0c 
+    // parsed:, offset 96, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 103, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 109, len 35, h: 000d: utf8{"dxc/junit/opcodes/ldc/jm/T_ldc_5"}
+    // .  .     d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  /  j  m  /  T  _  l  d  c  _  5  
+       01 00 20 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 2f 6a 6d 2f 54 5f 6c 64 63 5f 35 
+    // parsed:, offset 144, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 147, len 9, h: 000f: long{0x0000000000003039 / 12345}
+    // .  .  .  .  .  .  .  0  9  
+       05 00 00 00 00 00 00 30 39 
+// parsed:, offset 156, len 0, h: end constant_pool
+// parsed:, offset 156, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 158, len 2, h: this_class: type{dxc.junit.opcodes.ldc.jm.T_ldc_5}
+// .  .  
+   00 08 
+// parsed:, offset 160, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 162, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 164, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 166, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 168, len:74,desc: ()V
+// parsed:, offset 168, len 0, h:  methods[0]: 
+    // parsed:, offset 168, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 170, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 172, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 174, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 0, h:  attributes[0]: 
+        // parsed:, offset 176, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 178, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 182, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 184, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 186, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 195, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 197, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 199, len 0, h: end attributes[0] 
+// parsed:, offset 199, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 199, len:43,desc: ()I
+// parsed:, offset 199, len 0, h:  methods[1]: 
+    // parsed:, offset 199, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 201, len 2, h: name: run
+    // .  .  
+       00 09 
+    // parsed:, offset 203, len 2, h: descriptor: ()I
+    // .  .  
+       00 07 
+    // parsed:, offset 205, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 0, h:  attributes[0]: 
+        // parsed:, offset 207, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 209, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 213, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 215, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 3, h: 0000: ldc2_w #+0000000000003039
+        // .  .  .  
+           14 00 0f 
+        // parsed:, offset 3, len 1, h: 0003: pop2
+        // X  
+           58 
+        // parsed:, offset 4, len 2, h: 0004: ldc #+00003039
+        // .  .  
+//@mod           12 05 
+           12 0f 
+        // parsed:, offset 6, len 1, h: 0006: ireturn
+        // .  
+           ac 
+        // parsed:, offset 228, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 230, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 232, len 0, h: end attributes[0] 
+// parsed:, offset 232, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()I
+// parsed:, offset 232, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 234, len 0, h:  attributes[0]: 
+    // parsed:, offset 234, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 236, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 240, len 2, h: source: utf8{"T_ldc_5.java"}
+    // .  .  
+       00 03 
+// parsed:, offset 242, len 0, h: end attributes[0] 
+// parsed:, offset 242, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.j
new file mode 100644
index 0000000..5640bdf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_5.java
+.class public dxc/junit/opcodes/ldc/jm/T_ldc_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 2
+
+    ldc2_w 12345
+    pop2
+    ldc 12345
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.java
new file mode 100644
index 0000000..8507910
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc/jm/T_ldc_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc.jm;
+
+public class T_ldc_5 {
+
+    public int run() {
+        return 12345;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/Test_ldc2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/Test_ldc2_w.java
new file mode 100644
index 0000000..0ad5ca8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/Test_ldc2_w.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc2_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_1;
+import dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_2;
+
+public class Test_ldc2_w extends DxTestCase {
+
+    /**
+     * @title push long into stack
+     */
+    public void testN1() {
+        T_ldc2_w_1 t = new T_ldc2_w_1();
+        long a = 1234567890122l;
+        long b = 1l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @title push double into stack
+     */
+    public void testN2() {
+        T_ldc2_w_2 t = new T_ldc2_w_2();
+        double a = 1234567890123232323232232323232323232323232323456788d;
+        double b = 1d;
+        assertEquals(a + b, t.run(), 0d);
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title wrong constant pool entry type (float)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.j
new file mode 100644
index 0000000..35ca464
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc2_w_1.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+    ldc2_w 1234567890123
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.java
new file mode 100644
index 0000000..101a0ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_1 {
+
+    public long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.j
new file mode 100644
index 0000000..cbca295
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc2_w_2.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()D
+    .limit stack 2
+    .limit locals 1
+    ldc2_w 1.2345678901232324E51
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.java
new file mode 100644
index 0000000..bdc6ed9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_2 {
+
+    public double run() {
+        return 1234567890123232323232232323232323232323232323456789d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.cfh
new file mode 100644
index 0000000..cf6919f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 67, len 6, h: 0007: utf8{"()D"}
+    // .  .  .  (  )  D  
+       01 00 03 28 29 44 
+    // parsed:, offset 73, len 3, h: 0008: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_4}
+    // .  .  .  
+       07 00 0f 
+    // parsed:, offset 76, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 83, len 9, h: 000a: double{0x40091eb860000000 / 3.140000104904175}
+    // .  @  .  .  .  `  .  .  .  
+       06 40 09 1e b8 60 00 00 00 
+    // parsed:, offset 92, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 98, len 18, h: 000d: utf8{"T_ldc2_w_4.java"}
+    // .  .  .  T  _  l  d  c  2  _  w  _  4  .  j  a  v  a  
+       01 00 0f 54 5f 6c 64 63 32 5f 77 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 116, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 119, len 41, h: 000f: utf8{"dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  2  _  w  /  j  m  /  T  _  l  d  c  2  _  w  _  4  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 32 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 32 5f 77 5f 34 
+// parsed:, offset 160, len 0, h: end constant_pool
+// parsed:, offset 160, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 162, len 2, h: this_class: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_4}
+// .  .  
+   00 08 
+// parsed:, offset 164, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 166, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 172, len:71,desc: ()V
+// parsed:, offset 172, len 0, h:  methods[0]: 
+    // parsed:, offset 172, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 174, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 176, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 178, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 180, len 0, h:  attributes[0]: 
+        // parsed:, offset 180, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 182, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 186, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 199, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 201, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 203, len 0, h: end attributes[0] 
+// parsed:, offset 203, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 203, len:40,desc: ()D
+// parsed:, offset 203, len 0, h:  methods[1]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 207, len 2, h: descriptor: ()D
+    // .  .  
+       00 07 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 213, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 217, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 219, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 221, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 3, h: 0000: ldc2_w #40091eb860000000 // 3.140000104904175
+        // .  .  .  
+//@mod           14 00 0a 
+           14 01 0a 
+        // parsed:, offset 3, len 1, h: 0003: dreturn
+        // .  
+           af 
+        // parsed:, offset 229, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 231, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 233, len 0, h: end attributes[0] 
+// parsed:, offset 233, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()D
+// parsed:, offset 233, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 235, len 0, h:  attributes[0]: 
+    // parsed:, offset 235, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 237, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 241, len 2, h: source: utf8{"T_ldc2_w_4.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 243, len 0, h: end attributes[0] 
+// parsed:, offset 243, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.j
new file mode 100644
index 0000000..c3dc2d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc2_w_4.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+
+    ldc2_w 3.14
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.java
new file mode 100644
index 0000000..f6d7d17
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_4 {
+
+    public double run() {
+        return 3.14d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.cfh
new file mode 100644
index 0000000..0a5eb37
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 18, h: 0004: utf8{"T_ldc2_w_5.java"}
+    // .  .  .  T  _  l  d  c  2  _  w  _  5  .  j  a  v  a  
+       01 00 0f 54 5f 6c 64 63 32 5f 77 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 65, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 74, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 80, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0d 
+    // parsed:, offset 85, len 3, h: 0008: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_5}
+    // .  .  .  
+       07 00 0f 
+    // parsed:, offset 88, len 6, h: 0009: utf8{"()D"}
+    // .  .  .  (  )  D  
+       01 00 03 28 29 44 
+    // parsed:, offset 94, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 9, h: 000b: double{0x40091eb860000000 / 3.140000104904175}
+    // .  @  .  .  .  `  .  .  .  
+       06 40 09 1e b8 60 00 00 00 
+    // parsed:, offset 110, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 116, len 5, h: 000e: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 121, len 41, h: 000f: utf8{"dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5"}
+    // .  .  &  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  2  _  w  /  j  m  /  T  _  l  d  c  2  _  w  _  5  
+       01 00 26 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 32 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 32 5f 77 5f 35 
+    // parsed:, offset 162, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 165, len 0, h: end constant_pool
+// parsed:, offset 165, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 167, len 2, h: this_class: type{dxc.junit.opcodes.ldc2_w.jm.T_ldc2_w_5}
+// .  .  
+   00 08 
+// parsed:, offset 169, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 171, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 173, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 177, len:74,desc: ()V
+// parsed:, offset 177, len 0, h:  methods[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 181, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 183, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 0, h:  attributes[0]: 
+        // parsed:, offset 185, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 187, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 191, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 193, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 204, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 206, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 208, len 0, h: end attributes[0] 
+// parsed:, offset 208, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 208, len:43,desc: ()D
+// parsed:, offset 208, len 0, h:  methods[1]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 212, len 2, h: descriptor: ()D
+    // .  .  
+       00 09 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 218, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 222, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0e 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 3, h: 0003: ldc2_w #40091eb860000000 // 3.140000104904175
+        // .  .  .  
+//@mod           14 00 0b 
+           14 00 0e 
+        // parsed:, offset 6, len 1, h: 0006: dreturn
+        // .  
+           af 
+        // parsed:, offset 237, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 239, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 241, len 0, h: end attributes[0] 
+// parsed:, offset 241, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()D
+// parsed:, offset 241, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 243, len 0, h:  attributes[0]: 
+    // parsed:, offset 243, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 245, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 249, len 2, h: source: utf8{"T_ldc2_w_5.java"}
+    // .  .  
+       00 04 
+// parsed:, offset 251, len 0, h: end attributes[0] 
+// parsed:, offset 251, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.j
new file mode 100644
index 0000000..4001c60
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc2_w_5.java
+.class public dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()D
+    .limit stack 2
+
+    ldc 3.14
+    pop
+
+    ldc2_w 3.14
+    dreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.java
new file mode 100644
index 0000000..3c49374
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc2_w/jm/T_ldc2_w_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc2_w.jm;
+
+public class T_ldc2_w_5 {
+
+    public double run() {
+        return 3.14d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/Test_ldc_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/Test_ldc_w.java
new file mode 100644
index 0000000..2be1dac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/Test_ldc_w.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc_w;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldc_w.jm.T_ldc_w_1;
+import dxc.junit.opcodes.ldc_w.jm.T_ldc_w_2;
+
+public class Test_ldc_w extends DxTestCase {
+
+    /**
+     * @title push float into stack
+     */
+    public void testN1() {
+        T_ldc_w_1 t = new T_ldc_w_1();
+        float a = 1.5f;
+        float b = 0.04f;
+        assertEquals(a + b, t.run(), 0f);
+        assertEquals(1.54f, t.run(), 0f);
+    }
+
+    /**
+     * @title push int into stack
+     */
+    public void testN2() {
+        T_ldc_w_2 t = new T_ldc_w_2();
+        int a = 1000000000;
+        int b = 1000000000;
+        assertEquals(a + b, t.run());
+    }
+
+
+    /**
+     * @constraint 4.8.1.10
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc_w.jm.T_ldc_w_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.10
+     * @title wrong constant pool entry type
+     * (double)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldc_w.jm.T_ldc_w_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.j
new file mode 100644
index 0000000..532bb69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_w_1.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    ldc_w 1.54
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.java
new file mode 100644
index 0000000..d877227
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_1 {
+    
+    public float run(){
+        return 1.54f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.j
new file mode 100644
index 0000000..b3f0bc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_w_2.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    ldc_w 2000000000
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.java
new file mode 100644
index 0000000..451fa71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_2 {
+
+    public int run() {
+        return 2000000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.cfh
new file mode 100644
index 0000000..343bc75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 17, h: 0001: utf8{"T_ldc_w_4.java"}
+    // .  .  .  T  _  l  d  c  _  w  _  4  .  j  a  v  a  
+       01 00 0e 54 5f 6c 64 63 5f 77 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 27, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 32, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 51, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 64, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 73, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"()F"}
+    // .  .  .  (  )  F  
+       01 00 03 28 29 46 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 90, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 103, len 5, h: 000b: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 108, len 39, h: 000c: utf8{"dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  _  w  /  j  m  /  T  _  l  d  c  _  w  _  4  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 5f 77 5f 34 
+    // parsed:, offset 147, len 3, h: 000d: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_4}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 150, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 153, len 0, h: end constant_pool
+// parsed:, offset 153, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 155, len 2, h: this_class: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_4}
+// .  .  
+   00 0d 
+// parsed:, offset 157, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 159, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 161, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 163, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 165, len:71,desc: ()V
+// parsed:, offset 165, len 0, h:  methods[0]: 
+    // parsed:, offset 165, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 167, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 169, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 171, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 0, h:  attributes[0]: 
+        // parsed:, offset 173, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 175, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 179, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 181, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 183, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 192, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 194, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 196, len 0, h: end attributes[0] 
+// parsed:, offset 196, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 196, len:40,desc: ()F
+// parsed:, offset 196, len 0, h:  methods[1]: 
+    // parsed:, offset 196, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 200, len 2, h: descriptor: ()F
+    // .  .  
+       00 07 
+    // parsed:, offset 202, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 0, h:  attributes[0]: 
+        // parsed:, offset 204, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 206, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 210, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 212, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 214, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 3, h: 0000: ldc_w #4048f5c3 // 3.14
+        // .  .  .  
+//@mod           13 00 0b 
+           13 01 0b 
+        // parsed:, offset 3, len 1, h: 0003: freturn
+        // .  
+           ae 
+        // parsed:, offset 222, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 224, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()F
+// parsed:, offset 226, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 228, len 0, h:  attributes[0]: 
+    // parsed:, offset 228, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 230, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 234, len 2, h: source: utf8{"T_ldc_w_4.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 236, len 0, h: end attributes[0] 
+// parsed:, offset 236, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.j
new file mode 100644
index 0000000..f978b5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.j
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_w_4.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    ldc_w 3.14f
+    freturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.java
new file mode 100644
index 0000000..75eef74
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_4 {
+
+    public float run(String a){
+        return 3.14f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.cfh
new file mode 100644
index 0000000..ecfe634
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 17, h: 0006: utf8{"T_ldc_w_5.java"}
+    // .  .  .  T  _  l  d  c  _  w  _  5  .  j  a  v  a  
+       01 00 0e 54 5f 6c 64 63 5f 77 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"()F"}
+    // .  .  .  (  )  F  
+       01 00 03 28 29 46 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 90, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 9, h: 000a: double{0x40091eb860000000 / 3.140000104904175}
+    // .  @  .  .  .  `  .  .  .  
+       06 40 09 1e b8 60 00 00 00 
+    // parsed:, offset 106, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 112, len 5, h: 000d: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 117, len 39, h: 000e: utf8{"dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5"}
+    // .  .  $  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  d  c  _  w  /  j  m  /  T  _  l  d  c  _  w  _  5  
+       01 00 24 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 64 63 5f 77 2f 6a 6d 2f 54 5f 6c 64 63 5f 77 5f 35 
+    // parsed:, offset 156, len 3, h: 000f: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_5}
+    // .  .  .  
+       07 00 0e 
+    // parsed:, offset 159, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 162, len 0, h: end constant_pool
+// parsed:, offset 162, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 164, len 2, h: this_class: type{dxc.junit.opcodes.ldc_w.jm.T_ldc_w_5}
+// .  .  
+   00 0f 
+// parsed:, offset 166, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 168, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 172, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 174, len:75,desc: ()V
+// parsed:, offset 174, len 0, h:  methods[0]: 
+    // parsed:, offset 174, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 176, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 178, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 180, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 182, len 0, h:  attributes[0]: 
+        // parsed:, offset 182, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 184, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 188, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 192, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 201, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 205, len 0, h: end attributes[0] 
+// parsed:, offset 205, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 205, len:44,desc: ()F
+// parsed:, offset 205, len 0, h:  methods[1]: 
+    // parsed:, offset 205, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 207, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 209, len 2, h: descriptor: ()F
+    // .  .  
+       00 07 
+    // parsed:, offset 211, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 213, len 0, h:  attributes[0]: 
+        // parsed:, offset 213, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 215, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 219, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 223, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: ldc2_w #40091eb860000000 // 3.140000104904175
+        // .  .  .  
+           14 00 0a 
+        // parsed:, offset 3, len 1, h: 0003: pop2
+        // X  
+           58 
+        // parsed:, offset 4, len 3, h: 0004: ldc_w #4048f5c3 // 3.14
+        // .  .  .  
+//@mod           13 00 0d 
+           13 00 0a 
+        // parsed:, offset 7, len 1, h: 0007: freturn
+        // .  
+           ae 
+        // parsed:, offset 235, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 237, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 239, len 0, h: end attributes[0] 
+// parsed:, offset 239, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()F
+// parsed:, offset 239, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 241, len 0, h:  attributes[0]: 
+    // parsed:, offset 241, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 243, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 247, len 2, h: source: utf8{"T_ldc_w_5.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 249, len 0, h: end attributes[0] 
+// parsed:, offset 249, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.j
new file mode 100644
index 0000000..b6be6e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldc_w_5.java
+.class public dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    ldc2_w 3.14
+    pop2
+    ldc_w 3.14f
+    freturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.java
new file mode 100644
index 0000000..da51419
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldc_w/jm/T_ldc_w_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldc_w.jm;
+
+public class T_ldc_w_5 {
+
+    public float run(String a){
+        return 3.14f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/Test_ldiv.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/Test_ldiv.java
new file mode 100644
index 0000000..213d28b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/Test_ldiv.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ldiv.jm.T_ldiv_1;
+
+public class Test_ldiv extends DxTestCase {
+
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title  Rounding
+     */
+    public void testN2() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_ldiv_1 t = new T_ldiv_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_ldiv_1 t = new T_ldiv_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float / long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ldiv.jm.T_ldiv_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.j
new file mode 100644
index 0000000..49f0bda
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldiv_1.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.java
new file mode 100644
index 0000000..b33a03d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+
+public class T_ldiv_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.j
new file mode 100644
index 0000000..d1a1bec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldiv_2.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.java
new file mode 100644
index 0000000..0f92d94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_2 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.j
new file mode 100644
index 0000000..04592e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldiv_3.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.java
new file mode 100644
index 0000000..1703f8d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_3 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.j
new file mode 100644
index 0000000..1043a5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldiv_4.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+;    d2l    
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.java
new file mode 100644
index 0000000..a9f70ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_4 {
+
+    public long run(long a, double b) {
+        return (long)(a/b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.j
new file mode 100644
index 0000000..5e0cd21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldiv_5.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+;    i2l
+    lload_2
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.java
new file mode 100644
index 0000000..d413aa6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_5 {
+
+    public long run(int a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.j
new file mode 100644
index 0000000..2bf8741
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldiv_6.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 3
+    .limit locals 4
+    
+    fload_1
+    lload_2
+    ldiv
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.java
new file mode 100644
index 0000000..bd48c33
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_6 {
+
+    public long run(float a, long b) {
+        return (long)(a/b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.j b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.j
new file mode 100644
index 0000000..9bd04a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ldiv_7.java
+.class public dxc/junit/opcodes/ldiv/jm/T_ldiv_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    ldiv
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.java b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.java
new file mode 100644
index 0000000..f859a38
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ldiv/jm/T_ldiv_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ldiv.jm;
+
+public class T_ldiv_7 {
+    
+    public long run(long a, long b) {
+        return a/b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/Test_lload.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/Test_lload.java
new file mode 100644
index 0000000..ed06cbb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/Test_lload.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload.jm.T_lload_1;
+import dxc.junit.opcodes.lload.jm.T_lload_1_w;
+import dxc.junit.opcodes.lload.jm.T_lload_2;
+import dxc.junit.opcodes.lload.jm.T_lload_2_w;
+
+public class Test_lload extends DxTestCase {
+
+    /*
+     * NORMAL ILOAD VERSION
+     */
+
+    /**
+     * @title Test lload 1
+     */
+    public void testN1() {
+        T_lload_1 t = new T_lload_1();
+        assertEquals(1234567890123l, t.run());
+    }
+
+    /**
+     * @title  Test lload 255
+     */
+    public void testN2() {
+        T_lload_2 t = new T_lload_2();
+        assertEquals(9876543210123l, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ILOAD VERSION
+     */
+
+    /**
+     * @title  Test lload_w 1
+     */
+    public void testN3() {
+        T_lload_1_w t = new T_lload_1_w();
+        assertEquals(1234567890123l, t.run());
+    }
+
+    /**
+     * @title  Test lload 257
+     */
+    public void testN4() {
+        T_lload_2_w t = new T_lload_2_w();
+        assertEquals(9876543210123l, t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload.jm.T_lload_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.j
new file mode 100644
index 0000000..7acd2d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 4
+
+    ldc2_w 1234567890123
+    lstore 1
+    ldc2_w 3
+    lload 1
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.java
new file mode 100644
index 0000000..564bc8e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_1 {
+
+    public long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.j
new file mode 100644
index 0000000..db18231
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 4
+
+    ldc2_w 1234567890123
+    lstore 1
+    ldc2_w 3
+    lload_w 1
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.java
new file mode 100644
index 0000000..e608b1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_1_w {
+    
+    public long run() {
+        return 1234567890123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.j
new file mode 100644
index 0000000..2034bcd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 300
+    
+    ldc2_w 9876543210123
+    lstore 255
+    ldc2_w 3
+    lload 255
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.java
new file mode 100644
index 0000000..7149ed5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_2 {
+
+    public long run() {
+        return 9876543210123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.j
new file mode 100644
index 0000000..6ffe007
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 4
+    .limit locals 300
+    
+    ldc2_w 9876543210123
+    lstore 257
+    ldc2_w 3
+    lload_w 257
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.java
new file mode 100644
index 0000000..2175495
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_2_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_2_w {
+    
+    public long run() {
+        return 9876543210123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.j
new file mode 100644
index 0000000..217bb42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 2
+
+    lload 2
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.java
new file mode 100644
index 0000000..ba729a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_3 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.j
new file mode 100644
index 0000000..7ad273a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 300
+
+    lload_w 300
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.java
new file mode 100644
index 0000000..2e0a76f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_3_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_3_w {
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.j
new file mode 100644
index 0000000..2d0c1c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_4.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+    
+    dconst_1
+    dstore_1
+    
+    lload 1
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.java
new file mode 100644
index 0000000..01231c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_4 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.j
new file mode 100644
index 0000000..0540f0c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_4_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    dconst_1
+    dstore 260
+    
+    lload_w 260
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.java
new file mode 100644
index 0000000..3a7ebbe
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_4_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_4_w {
+    
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.j
new file mode 100644
index 0000000..9e1fc59
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_5.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 4
+    
+    iconst_1
+    istore_1
+    iconst_1
+    istore_2
+    
+    lload 1
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.java
new file mode 100644
index 0000000..ee11b04
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_5 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.j
new file mode 100644
index 0000000..cc2476b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_5_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 300
+
+    iconst_1
+    istore 257
+    iconst_1
+    istore 258
+    
+    lload_w 257
+    
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.java
new file mode 100644
index 0000000..6d8f81a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_5_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_5_w {
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.j
new file mode 100644
index 0000000..e2a6e09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_6.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 3
+
+    lconst_1
+    lstore_1
+    
+    lload 1
+    lload 1
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.java
new file mode 100644
index 0000000..13bfa4c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_6 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.j
new file mode 100644
index 0000000..af353ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_6_w.java
+.class public dxc/junit/opcodes/lload/jm/T_lload_6_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 300
+
+    lconst_1
+    lstore 257
+    
+    lload_w 257
+    lload_w 257
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.java
new file mode 100644
index 0000000..9f9a392
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload/jm/T_lload_6_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload.jm;
+
+public class T_lload_6_w {
+    public void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/Test_lload_0.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/Test_lload_0.java
new file mode 100644
index 0000000..907b444
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/Test_lload_0.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_0.jm.T_lload_0_1;
+import dxc.junit.opcodes.lload_0.jm.T_lload_0_6;
+
+public class Test_lload_0 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_0_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_0_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_0.jm.T_lload_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.j
new file mode 100644
index 0000000..880e0f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_0_1.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234567890123
+    lstore_0
+    ldc2_w 4
+    lload_0
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.java
new file mode 100644
index 0000000..f7c26cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.j
new file mode 100644
index 0000000..410c35d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_0_2.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.java
new file mode 100644
index 0000000..965b1c9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.j
new file mode 100644
index 0000000..7fee6f7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_0_3.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_0
+    
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.java
new file mode 100644
index 0000000..fffd4b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.j
new file mode 100644
index 0000000..d946623
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_0_4.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    istore_0
+    iconst_1
+    istore_1
+    
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.java
new file mode 100644
index 0000000..b054db4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.j
new file mode 100644
index 0000000..43e0600
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_0_5.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 2
+
+    lconst_1
+    lstore_0
+    
+    lload_0
+    lload_0
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.java
new file mode 100644
index 0000000..0c71a3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.j
new file mode 100644
index 0000000..e1b7d2f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_0_6.java
+.class public dxc/junit/opcodes/lload_0/jm/T_lload_0_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc2_w 1234567890123
+    lstore_0
+
+    lload_0
+    lload 0
+
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.java
new file mode 100644
index 0000000..2f225f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_0/jm/T_lload_0_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_0.jm;
+
+public class T_lload_0_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/Test_lload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/Test_lload_1.java
new file mode 100644
index 0000000..161d6d9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/Test_lload_1.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_1.jm.T_lload_1_1;
+import dxc.junit.opcodes.lload_1.jm.T_lload_1_6;
+
+public class Test_lload_1 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_1_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_1_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_1.jm.T_lload_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.j
new file mode 100644
index 0000000..f6f0f2e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1_1.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 3
+    
+    ldc2_w 1234567890123
+    lstore_1
+    ldc2_w 4
+    lload_1
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.java
new file mode 100644
index 0000000..e111f73
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.j
new file mode 100644
index 0000000..ea2e467
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1_2.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.java
new file mode 100644
index 0000000..6734f21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.j
new file mode 100644
index 0000000..9c50055
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1_3.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_1
+    
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.java
new file mode 100644
index 0000000..3161c8e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.j
new file mode 100644
index 0000000..93ec644
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1_4.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    istore_1
+    iconst_1
+    istore_2
+    
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.java
new file mode 100644
index 0000000..7bcdd19
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.j
new file mode 100644
index 0000000..16e89db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1_5.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    lconst_1
+    lstore_1
+    
+    lload_1
+    lload_1
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.java
new file mode 100644
index 0000000..8e3b949
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.j
new file mode 100644
index 0000000..2cdbd8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_1_6.java
+.class public dxc/junit/opcodes/lload_1/jm/T_lload_1_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 3
+
+    ldc2_w 1234567890123
+    lstore_1
+
+    lload_1
+    lload 1
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.java
new file mode 100644
index 0000000..91fc928
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_1/jm/T_lload_1_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_1.jm;
+
+public class T_lload_1_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/Test_lload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/Test_lload_2.java
new file mode 100644
index 0000000..e8976b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/Test_lload_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_2.jm.T_lload_2_1;
+import dxc.junit.opcodes.lload_2.jm.T_lload_2_6;
+
+public class Test_lload_2 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_2_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_2_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_2.jm.T_lload_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.j
new file mode 100644
index 0000000..753ab6a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2_1.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_2
+    ldc2_w 4
+    lload_2
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.java
new file mode 100644
index 0000000..86720db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.j
new file mode 100644
index 0000000..4ce9a63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2_2.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_2
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.java
new file mode 100644
index 0000000..cd54b1b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.j
new file mode 100644
index 0000000..85c8f7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2_3.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    dstore_2
+    
+    lload_2
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.java
new file mode 100644
index 0000000..866e9a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.j
new file mode 100644
index 0000000..ee23e5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2_4.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_2
+    istore_2
+    iconst_2
+    istore_3
+    
+    lload_2
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.java
new file mode 100644
index 0000000..c6305a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.j
new file mode 100644
index 0000000..8e0022d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2_5.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 3
+
+    lconst_1
+    lstore_2
+    
+    lload_2
+    lload_2
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.java
new file mode 100644
index 0000000..d21571e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.j
new file mode 100644
index 0000000..10633f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_2_6.java
+.class public dxc/junit/opcodes/lload_2/jm/T_lload_2_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+
+    ldc2_w 1234567890123
+    lstore_2
+
+    lload_2
+    lload 2
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.java
new file mode 100644
index 0000000..41fa7ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_2/jm/T_lload_2_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_2.jm;
+
+public class T_lload_2_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/Test_lload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/Test_lload_3.java
new file mode 100644
index 0000000..16227ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/Test_lload_3.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lload_3.jm.T_lload_3_1;
+import dxc.junit.opcodes.lload_3.jm.T_lload_3_6;
+
+public class Test_lload_3 extends DxTestCase {
+
+    /**
+     * @title value is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lload_3_1.run());
+    }
+
+    /**
+     * @title equality of lload_<n> and lload <n>
+     */
+    public void testN2() {
+        assertTrue(T_lload_3_6.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lload_3.jm.T_lload_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.j
new file mode 100644
index 0000000..987c791
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3_1.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 5
+    
+    ldc2_w 1234567890123
+    lstore_3
+    ldc2_w 4
+    lload_3
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.java
new file mode 100644
index 0000000..e5436cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.j
new file mode 100644
index 0000000..1e4a2a2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3_2.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lload_3
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.java
new file mode 100644
index 0000000..2e12383
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_2 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.j
new file mode 100644
index 0000000..0d06391
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3_3.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    dstore_3
+    
+    lload_3
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.java
new file mode 100644
index 0000000..add5f68
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_3.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_3 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.j
new file mode 100644
index 0000000..6fe0e5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3_4.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    iconst_1
+    istore_3
+    iconst_1
+    istore 4
+    
+    lload_3
+    
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.java
new file mode 100644
index 0000000..26fb64c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.j
new file mode 100644
index 0000000..6639760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3_5.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 1
+    .limit locals 5
+
+    lconst_1
+    lstore_3
+    
+    lload_3
+    lload_3
+    
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.java
new file mode 100644
index 0000000..552d7e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.j
new file mode 100644
index 0000000..ddfb923
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lload_3_6.java
+.class public dxc/junit/opcodes/lload_3/jm/T_lload_3_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+
+    ldc2_w 1234567890123
+    lstore_3
+
+    lload_3
+    lload 3
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.java
new file mode 100644
index 0000000..781ed48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lload_3/jm/T_lload_3_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lload_3.jm;
+
+public class T_lload_3_6 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/Test_lmul.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/Test_lmul.java
new file mode 100644
index 0000000..8bd913a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/Test_lmul.java
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lmul.jm.T_lmul_1;
+
+public class Test_lmul extends DxTestCase {
+
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_lmul_1 t = new T_lmul_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long * double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float * long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference * long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lmul.jm.T_lmul_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.j
new file mode 100644
index 0000000..59ba73e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lmul_1.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.java
new file mode 100644
index 0000000..455a293
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.j
new file mode 100644
index 0000000..2965969
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lmul_2.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.java
new file mode 100644
index 0000000..10a1dce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_2 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.j
new file mode 100644
index 0000000..32818bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lmul_3.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.java
new file mode 100644
index 0000000..44d7e83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_3 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.j
new file mode 100644
index 0000000..b50059e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lmul_4.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.java
new file mode 100644
index 0000000..db452a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_4 {
+
+    public long run(long a, double b) {
+        return (long)(a*b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.j
new file mode 100644
index 0000000..7fe2ef8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lmul_5.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 4
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.java
new file mode 100644
index 0000000..8869241
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_5 {
+
+    public long run(long a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.j
new file mode 100644
index 0000000..691a9a1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lmul_6.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 3
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lmul
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.java
new file mode 100644
index 0000000..46ecbec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_6 {
+
+    public long run(float a, long b) {
+        return (long)(a*b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.j
new file mode 100644
index 0000000..fe37744
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lmul_7.java
+.class public dxc/junit/opcodes/lmul/jm/T_lmul_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lmul
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.java
new file mode 100644
index 0000000..b30347d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lmul/jm/T_lmul_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lmul.jm;
+
+public class T_lmul_7 {
+    
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/Test_lneg.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/Test_lneg.java
new file mode 100644
index 0000000..b9d2010
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/Test_lneg.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lneg.jm.T_lneg_1;
+import dxc.junit.opcodes.lneg.jm.T_lneg_2;
+
+public class Test_lneg extends DxTestCase {
+
+    /**
+     * @title Argument = 123123123272432432l
+     */
+    public void testN1() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-123123123272432432l, t.run(123123123272432432l));
+    }
+
+    /**
+     * @title  Argument = 1
+     */
+    public void testN2() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-1l, t.run(1l));
+    }
+
+    /**
+     * @title  Argument = -1
+     */
+    public void testN3() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(1l, t.run(-1l));
+    }
+
+    /**
+     * @title  Check that -x == (~x + 1)
+     */
+    public void testN4() {
+        T_lneg_2 t = new T_lneg_2();
+        assertTrue(t.run(123123123272432432l));
+    }
+
+    /**
+     * @title  Argument = 0
+     */
+    public void testB1() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title  Argument = Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title  Argument = Long.MIN_VALUE
+     */
+    public void testB3() {
+        T_lneg_1 t = new T_lneg_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lneg.jm.T_lneg_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.j
new file mode 100644
index 0000000..a92e968
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lneg_1.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    lload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.java
new file mode 100644
index 0000000..662717f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_1 {
+
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.j
new file mode 100644
index 0000000..3142cdb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lneg_2.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)Z
+    .limit stack 6
+    .limit locals 3
+
+    lload_1
+    lneg
+    lload_1
+    ldc2_w -1
+    lxor
+    lconst_1
+    ladd
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+    Label0:
+    iconst_0
+
+    Label2:
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.java
new file mode 100644
index 0000000..44b3657
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_2 {
+
+    public boolean run(long d) {
+        return -d == (~d + 1);
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.j
new file mode 100644
index 0000000..1fe25a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lneg_3.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+;    lload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.java
new file mode 100644
index 0000000..423f347
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_3 {
+
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.j
new file mode 100644
index 0000000..5e585ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lneg_4.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(D)J
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.java
new file mode 100644
index 0000000..e2bbda3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_4 {
+
+    public long run(double d) {
+        return (long)-d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.j
new file mode 100644
index 0000000..bc1a58f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lneg_5.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(I)J
+    .limit stack 2
+    .limit locals 2
+
+    iload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.java
new file mode 100644
index 0000000..8d80a66
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_5 {
+
+    public long run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.j
new file mode 100644
index 0000000..2b5fa6d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lneg_6.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(F)J
+    .limit stack 2
+    .limit locals 2
+
+    fload_1
+    lneg
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.java
new file mode 100644
index 0000000..47b901a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_6 {
+
+    public long run(float d) {
+        return (long)-d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.j
new file mode 100644
index 0000000..a5e1696
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lneg_7.java
+.class public dxc/junit/opcodes/lneg/jm/T_lneg_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(J)J
+    .limit stack 2
+    .limit locals 3
+
+    aload_0
+    lneg
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.java
new file mode 100644
index 0000000..ccbc868
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lneg/jm/T_lneg_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lneg.jm;
+
+public class T_lneg_7 {
+    
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/Test_lookupswitch.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/Test_lookupswitch.java
new file mode 100644
index 0000000..5b5ced8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/Test_lookupswitch.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_1;
+
+public class Test_lookupswitch extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_lookupswitch_1 t = new T_lookupswitch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(9));
+        assertEquals(20, t.run(10));
+        assertEquals(-1, t.run(11));
+
+        assertEquals(-1, t.run(14));
+        assertEquals(20, t.run(15));
+        assertEquals(-1, t.run(16));
+    }
+
+    /**
+     * @title check Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_lookupswitch_1 t = new T_lookupswitch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title check Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_lookupswitch_1 t = new T_lookupswitch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title npairs shall be >= 0
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title non-zero padding
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title pairs shall be sorted in ascending
+     * order
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.9
+     * @title number of entries in jump table
+     */
+    public void testVFE9() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.j
new file mode 100644
index 0000000..310c3d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_1.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.java
new file mode 100644
index 0000000..0f1f657
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.cfh
new file mode 100644
index 0000000..d4c30e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 25, h: 0006: utf8{"T_lookupswitch_10.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  1  0  .  j  a  v  a  
+       01 00 16 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 31 30 2e 6a 61 76 61 
+    // parsed:, offset 87, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 92, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 99, len 54, h: 0009: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10"}
+    // .  .  3  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  1  0  
+       01 00 33 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 31 30 
+    // parsed:, offset 153, len 3, h: 000a: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_10}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 156, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 162, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 165, len 0, h: end constant_pool
+// parsed:, offset 165, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 167, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_10}
+// .  .  
+   00 0a 
+// parsed:, offset 169, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 171, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 173, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 177, len:89,desc: ()V
+// parsed:, offset 177, len 0, h:  methods[0]: 
+    // parsed:, offset 177, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 181, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 183, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 0, h:  attributes[0]: 
+        // parsed:, offset 185, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 187, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 191, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 193, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 204, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 206, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 208, len 0, h: end attributes[0] 
+// parsed:, offset 208, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 208, len:58,desc: ()V
+// parsed:, offset 208, len 0, h:  methods[1]: 
+    // parsed:, offset 208, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 212, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 214, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 0, h:  attributes[0]: 
+        // parsed:, offset 216, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 218, len 4, h: length: 00000022
+        // .  .  .  "  
+           00 00 00 22 
+        // parsed:, offset 222, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 224, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 4, h: code_length: 00000016
+        // .  .  .  .  
+           00 00 00 16 
+        // parsed:, offset 0, len 1, h: 0000: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 1, len 19, h: 0001: lookupswitch   -00000001: 0014   default: 0015
+        // .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           ab 00 00 00 00 00 14 00 00 00 01 ff ff ff ff 00 00 00 13 
+           ab 00 00 00 00 00 14 00 00 00 02 ff ff ff ff 00 00 00 13 
+        // parsed:, offset 20, len 1, h: 0014: return
+        // .  
+           b1 
+        // parsed:, offset 21, len 1, h: 0015: return
+        // .  
+           b1 
+        // parsed:, offset 252, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 254, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 256, len 0, h: end attributes[0] 
+// parsed:, offset 256, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 256, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 258, len 0, h:  attributes[0]: 
+    // parsed:, offset 258, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 260, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 264, len 2, h: source: utf8{"T_lookupswitch_10.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 266, len 0, h: end attributes[0] 
+// parsed:, offset 266, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.j
new file mode 100644
index 0000000..73ad264
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_10.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+    iconst_1
+    lookupswitch
+            -1 : Label0
+            default: Label2
+
+ Label0:
+    return
+
+Label2:
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.java
new file mode 100644
index 0000000..ee806f4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_10 {
+
+    public void run() {
+        switch (1) {
+        case -1:
+            return;
+        case 10:
+            return;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.j
new file mode 100644
index 0000000..db16d9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_2.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+;    iload_1
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.java
new file mode 100644
index 0000000..05ec5ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_2 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.j
new file mode 100644
index 0000000..0b96e9d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_3.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.java
new file mode 100644
index 0000000..1c777ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_3.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_3 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.cfh
new file mode 100644
index 0000000..436d184
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_4}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 53, h: 0009: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  4  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 34 
+    // parsed:, offset 130, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 136, len 24, h: 000b: utf8{"T_lookupswitch_4.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  4  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 160, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_4}
+// .  .  
+   00 07 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 ff 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_4.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.j
new file mode 100644
index 0000000..e342dc3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_4.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.java
new file mode 100644
index 0000000..407ccad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_4.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_4 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.cfh
new file mode 100644
index 0000000..e578a07
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 24, h: 0001: utf8{"T_lookupswitch_5.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  5  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 34, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 39, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 58, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 71, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 80, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 86, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 91, len 3, h: 0008: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_5}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 94, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 107, len 53, h: 000b: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  5  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 35 
+    // parsed:, offset 160, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_5}
+// .  .  
+   00 08 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:112,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:81,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 223, len 4, h: length: 00000039
+        // .  .  .  9  
+           00 00 00 39 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002d
+        // .  .  .  -  
+           00 00 00 2d 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 002b
+        // .  .  .  .  .  .  *  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 2a 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 2a 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 26 00 00 00 0f 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 4, h: 0026: wide iload 0001
+        // .  .  .  .  
+           c4 15 00 01 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 43, len 1, h: 002b: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 44, len 1, h: 002c: ireturn
+        // .  
+           ac 
+        // parsed:, offset 280, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 282, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 284, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 286, len 0, h:  attributes[0]: 
+    // parsed:, offset 286, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 288, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 292, len 2, h: source: utf8{"T_lookupswitch_5.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 294, len 0, h: end attributes[0] 
+// parsed:, offset 294, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.j
new file mode 100644
index 0000000..cd74f87
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_5.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    iload_w 1
+;
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.java
new file mode 100644
index 0000000..9fbeaa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_5.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_5 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.cfh
new file mode 100644
index 0000000..6ea0620
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 24, h: 0006: utf8{"T_lookupswitch_6.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  6  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 86, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 91, len 3, h: 0008: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_6}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 94, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 107, len 53, h: 000b: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  6  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 36 
+    // parsed:, offset 160, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_6}
+// .  .  
+   00 08 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 28 ff ff ff ff ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_6.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.j
new file mode 100644
index 0000000..dde35ca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_6.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.java
new file mode 100644
index 0000000..5fa0f3d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_6.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_6 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.cfh
new file mode 100644
index 0000000..278dc9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 3, h: 0006: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_7}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 24, h: 0009: utf8{"T_lookupswitch_7.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  7  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 37 2e 6a 61 76 61 
+    // parsed:, offset 101, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 107, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 110, len 53, h: 000c: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  7  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 37 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_7}
+// .  .  
+   00 06 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 01 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_7.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.j
new file mode 100644
index 0000000..5dfd4df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_7.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.java
new file mode 100644
index 0000000..105db5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.cfh
new file mode 100644
index 0000000..b03b95c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0a 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 3, h: 0005: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_8}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 59, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 65, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 83, len 3, h: 000a: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 86, len 53, h: 000b: utf8{"dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8"}
+    // .  .  2  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  l  o  o  k  u  p  s  w  i  t  c  h  /  j  m  /  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  8  
+       01 00 32 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 38 
+    // parsed:, offset 139, len 24, h: 000c: utf8{"T_lookupswitch_8.java"}
+    // .  .  .  T  _  l  o  o  k  u  p  s  w  i  t  c  h  _  8  .  j  a  v  a  
+       01 00 15 54 5f 6c 6f 6f 6b 75 70 73 77 69 74 63 68 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 163, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 170, len 0, h: end constant_pool
+// parsed:, offset 170, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 172, len 2, h: this_class: type{dxc.junit.opcodes.lookupswitch.jm.T_lookupswitch_8}
+// .  .  
+   00 05 
+// parsed:, offset 174, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0a 
+// parsed:, offset 176, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 178, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 180, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 182, len:110,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[0]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 209, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 211, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 213, len 0, h: end attributes[0] 
+// parsed:, offset 213, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 213, len:79,desc: (I)I
+// parsed:, offset 213, len 0, h:  methods[1]: 
+    // parsed:, offset 213, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 215, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 217, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 219, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 221, len 0, h:  attributes[0]: 
+        // parsed:, offset 221, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 223, len 4, h: length: 00000037
+        // .  .  .  7  
+           00 00 00 37 
+        // parsed:, offset 227, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 229, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 231, len 4, h: code_length: 0000002b
+        // .  .  .  +  
+           00 00 00 2b 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 35, h: 0001: lookupswitch   -00000001: 0024   +0000000a: 0026   +0000000f: 0026   default: 0029
+        // .  .  .  .  .  .  (  .  .  .  .  .  .  .  .  .  .  .  #  .  .  .  .  .  .  .  %  .  .  .  .  .  .  .  %  
+//@mod           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0a 00 00 00 25 00 00 00 0f 00 00 00 25 
+           ab 00 00 00 00 00 28 00 00 00 03 ff ff ff ff 00 00 00 23 00 00 00 0f 00 00 00 25 00 00 00 0a 00 00 00 25 
+        // parsed:, offset 36, len 1, h: 0024: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 38, len 2, h: 0026: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 40, len 1, h: 0028: ireturn
+        // .  
+           ac 
+        // parsed:, offset 41, len 1, h: 0029: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 42, len 1, h: 002a: ireturn
+        // .  
+           ac 
+        // parsed:, offset 278, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 280, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 282, len 0, h: end attributes[0] 
+// parsed:, offset 282, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 282, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 284, len 0, h:  attributes[0]: 
+    // parsed:, offset 284, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 286, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 290, len 2, h: source: utf8{"T_lookupswitch_8.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 292, len 0, h: end attributes[0] 
+// parsed:, offset 292, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.j
new file mode 100644
index 0000000..9213d50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_8.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.java
new file mode 100644
index 0000000..13a1255
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_8 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.j b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.j
new file mode 100644
index 0000000..9359025
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.j
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lookupswitch_9.java
+.class public dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    lookupswitch
+            -1 : Label0
+            10 : Label1
+            15 : Label1
+            default: Label3
+
+    Label0:
+.line 8
+    iconst_2
+    ireturn
+
+    Label1:
+.line 11
+    bipush 20
+    ireturn
+
+    Label3:
+.line 13
+    iconst_m1
+
+    Label5:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.java b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.java
new file mode 100644
index 0000000..e6dca83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lookupswitch/jm/T_lookupswitch_9.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lookupswitch.jm;
+
+public class T_lookupswitch_9 {
+    
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/Test_lor.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/Test_lor.java
new file mode 100644
index 0000000..6c39754
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/Test_lor.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lor;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lor.jm.T_lor_1;
+
+public class Test_lor extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title  Arguments = 0xabcdefabcdef, -1
+     */
+    public void testN3() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_lor_1 t = new T_lor_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lor.jm.T_lor_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.j
new file mode 100644
index 0000000..b2bf3b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lor_1.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.java
new file mode 100644
index 0000000..ca5c203
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.j
new file mode 100644
index 0000000..f706ad6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lor_2.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.java
new file mode 100644
index 0000000..9124f10
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_2 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.j
new file mode 100644
index 0000000..da974e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lor_3.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DJ)J
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    lload_3
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.java
new file mode 100644
index 0000000..99cf176
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_3 {
+
+    public long run(double a, long b) {
+        return (long)a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.j
new file mode 100644
index 0000000..b60b092
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lor_4.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.java
new file mode 100644
index 0000000..e37f8f6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_4 {
+
+    public long run(int a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.j
new file mode 100644
index 0000000..62376b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lor_5.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 4
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.java
new file mode 100644
index 0000000..db49535
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_5 {
+
+    public long run(float a, long b) {
+        return (long)a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.j
new file mode 100644
index 0000000..c03fcc6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lor_6.java
+.class public dxc/junit/opcodes/lor/jm/T_lor_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lor
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.java
new file mode 100644
index 0000000..8918dd6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lor/jm/T_lor_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lor.jm;
+
+public class T_lor_6 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/Test_lrem.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/Test_lrem.java
new file mode 100644
index 0000000..1c9346d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/Test_lrem.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lrem;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lrem.jm.T_lrem_1;
+
+public class Test_lrem extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title  Dividend = 0
+     */
+    public void testN3() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title  Dividend is negative
+     */
+    public void testN4() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title  Divisor is negative
+     */
+    public void testN5() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title  Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_lrem_1 t = new T_lrem_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Divisor is 0
+     */
+    public void testE1() {
+        T_lrem_1 t = new T_lrem_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference / float
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lrem.jm.T_lrem_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.j
new file mode 100644
index 0000000..c675add
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lrem_1.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.java
new file mode 100644
index 0000000..d4a6114
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.j
new file mode 100644
index 0000000..8612604
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lrem_2.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.java
new file mode 100644
index 0000000..4f9a924
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_2 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.j
new file mode 100644
index 0000000..6b51605
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lrem_3.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.java
new file mode 100644
index 0000000..5b6d8df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_3 {
+
+    public long run(long a, double b) {
+        return (long) (a % b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.j
new file mode 100644
index 0000000..3fcffc5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lrem_4.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.java
new file mode 100644
index 0000000..6e5990d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_4 {
+
+    public long run(int a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.j
new file mode 100644
index 0000000..10841d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lrem_5.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JF)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    fload_3
+    lrem
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.java
new file mode 100644
index 0000000..e3267dd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_5 {
+
+    public long run(long a, float b) {
+        return (long) (a % b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.j
new file mode 100644
index 0000000..6b329d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lrem_6.java
+.class public dxc/junit/opcodes/lrem/jm/T_lrem_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lrem
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.java
new file mode 100644
index 0000000..b9d3b17
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lrem/jm/T_lrem_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lrem.jm;
+
+public class T_lrem_6 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/Test_lreturn.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/Test_lreturn.java
new file mode 100644
index 0000000..805c4a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/Test_lreturn.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_1;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_6;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_7;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_8;
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_9;
+
+public class Test_lreturn extends DxTestCase {
+
+    /**
+     * @title  simple
+     */
+    public void testN1() {
+        T_lreturn_1 t = new T_lreturn_1();
+        assertEquals(12345612345l, t.run());
+    }
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN2() {
+        T_lreturn_6 t = new T_lreturn_6();
+        assertEquals(0l, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by lreturn
+     */
+    public void testN3() {
+        assertTrue(T_lreturn_7.execute());
+    }
+
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_lreturn_8 t = new T_lreturn_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+// Dalvik currently does not support structured locks, so we remove this test.    
+//    public void testE2() {
+//        T_lreturn_9 t = new T_lreturn_9();
+//        try {
+//            assertEquals(1d, t.run());
+//            // the JVM spec says that it is optional to implement the structural
+//            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+//            System.out.print("dvmvfe:");
+//            //fail("expected IllegalMonitorStateException");
+//        } catch (IllegalMonitorStateException imse) {
+//            // expected
+//        }
+//    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lreturn.jm.T_lreturn_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.j
new file mode 100644
index 0000000..1049bf3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_1.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    
+    ldc2_w 12345612345
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.java
new file mode 100644
index 0000000..5fb565d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_1 {
+
+    public long run() {
+        return 12345612345l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.j
new file mode 100644
index 0000000..d855369
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_10.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_10
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private static test()J
+    .limit stack 2
+    .limit locals 0
+    
+    lconst_1
+    lreturn
+    
+.end method
+
+
+.method public run()J
+    .limit stack 0
+    .limit locals 1
+
+    invokestatic dxc/junit/opcodes/lreturn/jm/T_lreturn_10/test()J
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.java
new file mode 100644
index 0000000..5949439
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_10.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_10 {
+    
+    private static long test() {
+        return 1l;
+    }
+    
+    public long run() {
+        return test();
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.j
new file mode 100644
index 0000000..68dfcd4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_11.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.java
new file mode 100644
index 0000000..0b1c976
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_11 {
+    
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.j
new file mode 100644
index 0000000..117d3fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_2.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.java
new file mode 100644
index 0000000..778ee8f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.j
new file mode 100644
index 0000000..b9a758c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_3.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    return
+.end method
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 1
+
+    lconst_0
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.java
new file mode 100644
index 0000000..1708e8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_3 {
+
+   
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.j
new file mode 100644
index 0000000..1776541
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_4.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    ;lconst_0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.java
new file mode 100644
index 0000000..c7ad19c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_4 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.j
new file mode 100644
index 0000000..16c1340
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_5.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    fconst_0
+    lreturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.java
new file mode 100644
index 0000000..c1cb526
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_5 {
+
+    public long run() {
+        return 0l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.j
new file mode 100644
index 0000000..6c7fed7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.j
@@ -0,0 +1,93 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_6.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit locals 12
+    .limit stack 6
+    
+    lconst_1
+    lstore_1
+    ldc2_w 22222222222
+    lstore_3
+    ldc2_w 33333333333
+    lstore 5
+    
+    ldc2_w 44444444444
+    
+    invokestatic dxc/junit/opcodes/lreturn/jm/T_lreturn_6/test()J
+    
+    ldc2_w 4444444444444
+    lcmp
+    ifne Label1
+    
+    ldc2_w 44444444444
+    lcmp
+    ifne Label0
+    
+    lload_1
+    lconst_1
+    lcmp
+    ifne Label0
+    
+    lload_3
+    ldc2_w 22222222222
+    lcmp
+    ifne Label0
+    
+    lload 5
+    ldc2_w 33333333333
+    lcmp
+    ifne Label0    
+    
+    ldc2_w 12345612345
+    lreturn
+
+Label1:
+    pop2
+Label0:
+    lconst_0
+    lreturn
+
+.end method
+
+
+.method private static test()J
+    .limit locals 8
+    .limit stack 4
+    
+    ldc2_w 11111111111
+    lstore_1
+    ldc2_w 22222222222
+    lstore_3
+    ldc2_w 33333333333
+    lstore 5
+    
+    ldc2_w 55555555555
+    
+    ldc2_w 44444444444
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.java
new file mode 100644
index 0000000..2461760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_6 {
+
+    public long run() {
+        return 12345612345l;
+    }
+    
+    private static long test() {
+        long a = 11111111111l;
+        long b = 22222222222l;
+        long c = 33333333333l;
+        return 44444444444l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.j
new file mode 100644
index 0000000..70e857c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.j
@@ -0,0 +1,164 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_7.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_7
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value J
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    lconst_0
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.failed Z
+
+    return
+
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/lreturn/jm/T_lreturn_7/test()J
+    pop2
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()J
+    .limit stack 5
+    .limit locals 3
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+    dup2
+    lstore_1
+
+    lconst_1
+    ladd
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+
+    lload_1
+    lconst_1
+    ladd
+    lstore_1
+
+    invokestatic java/lang/Thread/yield()V
+
+    lload_1
+    aload_0
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+    lcmp
+    ifeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.failed Z
+
+Label0:
+    lload_1
+    lreturn
+.end method
+
+
+.method public static execute()Z
+    .limit stack 5
+    .limit locals 4
+
+    new dxc/junit/opcodes/lreturn/jm/T_lreturn_7
+    dup
+    invokespecial dxc/junit/opcodes/lreturn/jm/T_lreturn_7/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.value J
+    ldc2_w 2000
+    lcmp
+    ifne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.lreturn.jm.T_lreturn_7.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.java
new file mode 100644
index 0000000..fc97b6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_7.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+import dxc.junit.opcodes.lreturn.jm.T_lreturn_7;
+
+public class T_lreturn_7 implements Runnable {
+    public final static int CNT = 1000;
+    long value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized long test()  {
+        value++;
+        long c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+        return c;
+    }
+    
+    public static boolean execute() {
+        T_lreturn_7 test = new T_lreturn_7();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.j
new file mode 100644
index 0000000..6b7597c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_8.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_8
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()J
+    .limit stack 2
+    
+    aload_0
+    monitorexit
+       lconst_0
+    lreturn
+.end method
+
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/lreturn/jm/T_lreturn_8/test()J
+    pop2
+
+    iconst_1
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.java
new file mode 100644
index 0000000..1653cb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_8.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_8 {
+    
+    private synchronized long test() {
+        return 0l;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.j b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.j
new file mode 100644
index 0000000..17dfe86
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lreturn_9.java
+.class public dxc/junit/opcodes/lreturn/jm/T_lreturn_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()J
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    lconst_1
+    lreturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.java b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.java
new file mode 100644
index 0000000..df514b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lreturn/jm/T_lreturn_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lreturn.jm;
+
+public class T_lreturn_9 {
+    
+    public long run() {
+        return 1l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/Test_lshl.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/Test_lshl.java
new file mode 100644
index 0000000..df45a03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/Test_lshl.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshl;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lshl.jm.T_lshl_1;
+
+public class Test_lshl extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, -1
+     */
+    public void testN4() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title  Arguments = 1, 0
+     */
+    public void testB2() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_lshl_1 t = new T_lshl_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshl.jm.T_lshl_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.j
new file mode 100644
index 0000000..47ea4ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshl_1.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.java
new file mode 100644
index 0000000..5855d09
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.j
new file mode 100644
index 0000000..cb0a00c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshl_2.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+;    lload_1
+    iload_3
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.java
new file mode 100644
index 0000000..42d89f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_2 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.j
new file mode 100644
index 0000000..a5d5200
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshl_3.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DI)J
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.java
new file mode 100644
index 0000000..0de1686
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_3 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.j
new file mode 100644
index 0000000..6ff06c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshl_4.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)J
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.java
new file mode 100644
index 0000000..a7a4fcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_4 {
+
+    public long run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.j
new file mode 100644
index 0000000..6461614
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshl_5.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FI)J
+    .limit stack 3
+    .limit locals 3
+
+    fload_1
+    iload_2
+    lshl
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.java
new file mode 100644
index 0000000..f48ad7d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_5 {
+
+    public long run(float a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.j
new file mode 100644
index 0000000..6b3e135
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshl_6.java
+.class public dxc/junit/opcodes/lshl/jm/T_lshl_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    iload_3
+    lshl
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.java
new file mode 100644
index 0000000..b27e156
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshl/jm/T_lshl_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshl.jm;
+
+public class T_lshl_6 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/Test_lshr.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/Test_lshr.java
new file mode 100644
index 0000000..5f98083
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/Test_lshr.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lshr.jm.T_lshr_1;
+
+public class Test_lshr extends DxTestCase {
+
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, -1
+     */
+    public void testN4() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title  Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title  Arguments = 1, 0
+     */
+    public void testB2() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_lshr_1 t = new T_lshr_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lshr.jm.T_lshr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.j
new file mode 100644
index 0000000..b21e884
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshr_1.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.java
new file mode 100644
index 0000000..45f4113
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.j
new file mode 100644
index 0000000..21a59a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshr_2.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+;    lload_1
+    iload_3
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.java
new file mode 100644
index 0000000..6c0243b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_2 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.j
new file mode 100644
index 0000000..3edefd3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshr_3.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DI)J
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.java
new file mode 100644
index 0000000..8a2132d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_3 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.j
new file mode 100644
index 0000000..58349f5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshr_4.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)J
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.java
new file mode 100644
index 0000000..322a193
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_4 {
+
+    public long run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.j
new file mode 100644
index 0000000..179e48e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshr_5.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FI)J
+    .limit stack 3
+    .limit locals 3
+
+    fload_1
+    iload_2
+    lshr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.java
new file mode 100644
index 0000000..0f97441
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_5 {
+
+    public long run(float a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.j
new file mode 100644
index 0000000..33c9991
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lshr_6.java
+.class public dxc/junit/opcodes/lshr/jm/T_lshr_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    iload_3
+    lshr
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.java
new file mode 100644
index 0000000..31d5f9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lshr/jm/T_lshr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lshr.jm;
+
+public class T_lshr_6 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/Test_lstore.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/Test_lstore.java
new file mode 100644
index 0000000..8d5ba1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/Test_lstore.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore.jm.T_lstore_1;
+import dxc.junit.opcodes.lstore.jm.T_lstore_1_w;
+import dxc.junit.opcodes.lstore.jm.T_lstore_2;
+import dxc.junit.opcodes.lstore.jm.T_lstore_2_w;
+
+public class Test_lstore extends DxTestCase {
+
+    /*
+     * NORMAL ISTORE VERSION
+     */
+
+    /**
+     * @title  lstore 0
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_1.run());
+    }
+
+    /**
+     * @title  lstore 255
+     */
+    public void testN2() {
+        assertEquals(1234567890123l, T_lstore_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /*
+     * WIDE ISTORE VERSION
+     */
+
+    /**
+     * @title  lstore_w 0
+     */
+    public void testN3() {
+        assertEquals(1234567890123l, T_lstore_1_w.run());
+    }
+
+    /**
+     * @title  lstore 257
+     */
+    public void testN4() {
+        assertEquals(1234567890123l, T_lstore_2_w.run());
+    }
+
+    /**
+     * @constraint 4.8.1.25
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore.jm.T_lstore_6_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.j
new file mode 100644
index 0000000..02f5c5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234567890123
+
+    lstore 0
+    ldc2_w 4
+    lload 0
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.java
new file mode 100644
index 0000000..7c1c4b7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.j
new file mode 100644
index 0000000..24666bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_1_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+
+    ldc2_w 1234567890123
+    lstore_w 0
+    ldc2_w 4
+    lload 0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.java
new file mode 100644
index 0000000..416a4e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_1_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_1_w {
+    
+    public static long run() {
+        return 1234567890123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.j
new file mode 100644
index 0000000..b0501e7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 300
+
+    ldc2_w 1234567890123
+    lstore 255
+    ldc2_w 4
+    lload 255
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.java
new file mode 100644
index 0000000..877fd84
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_2 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.j
new file mode 100644
index 0000000..294ea0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_2_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 300
+    
+    ldc2_w 1234567890123
+    lstore_w 257
+    ldc2_w 4
+    lload 257
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.java
new file mode 100644
index 0000000..369e5ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_2_w.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_2_w {
+    
+    public static long run() {
+        return 1234567890123l;
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.j
new file mode 100644
index 0000000..a3e1c91
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+    
+    lstore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.java
new file mode 100644
index 0000000..a26dc24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.j
new file mode 100644
index 0000000..782a123
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_3_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.java
new file mode 100644
index 0000000..717415a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_3_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_3_w {
+    public static void run() {
+
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.j
new file mode 100644
index 0000000..15529ed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_4.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+    
+     dconst_1
+    lstore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.java
new file mode 100644
index 0000000..566f220
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_4 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.j
new file mode 100644
index 0000000..54bb0aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_4_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_4_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+     dconst_1
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.java
new file mode 100644
index 0000000..cb56b27
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_4_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_4_w {
+    public static void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.j
new file mode 100644
index 0000000..f4017d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_5.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    lstore 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.java
new file mode 100644
index 0000000..ad183ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_5 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.j
new file mode 100644
index 0000000..7ada7ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_5_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_5_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+     iconst_1
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.java
new file mode 100644
index 0000000..1a9bbe7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_5_w.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_5_w {
+    public static void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.j
new file mode 100644
index 0000000..960f6a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_6.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+    
+    fconst_1
+    lstore 0
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.java
new file mode 100644
index 0000000..2417318
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_6 {
+
+    public static void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.j
new file mode 100644
index 0000000..4f32a72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_6_w.java
+.class public dxc/junit/opcodes/lstore/jm/T_lstore_6_w
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+     fconst_1
+    lstore_w 0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.java
new file mode 100644
index 0000000..69a7469
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore/jm/T_lstore_6_w.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore.jm;
+
+public class T_lstore_6_w {
+    
+    public static void run() {
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/Test_lstore_0.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/Test_lstore_0.java
new file mode 100644
index 0000000..9259090
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/Test_lstore_0.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_0;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_0.jm.T_lstore_0_1;
+import dxc.junit.opcodes.lstore_0.jm.T_lstore_0_2;
+
+public class Test_lstore_0 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_0_1.run());
+    }
+
+    /**
+     * @title Each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_0_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_0.jm.T_lstore_0_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.j
new file mode 100644
index 0000000..e6d36c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_0_1.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234567890123
+    lstore_0
+    ldc2_w 4
+    lload_0
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.java
new file mode 100644
index 0000000..3d017ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.j
new file mode 100644
index 0000000..f61972a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_0_2.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 2
+   
+    ldc2_w 1234567890123
+    lstore_0
+    lload_0
+    
+    ldc2_w 1234567890123
+    lstore 0
+    lload_0
+    
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.java
new file mode 100644
index 0000000..15fff7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.j
new file mode 100644
index 0000000..115c9d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_0_3.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_0
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.java
new file mode 100644
index 0000000..78bedb4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.j
new file mode 100644
index 0000000..212743c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_0_4.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    lstore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.java
new file mode 100644
index 0000000..84982cb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.j
new file mode 100644
index 0000000..e8653c7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_0_5.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    lstore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.java
new file mode 100644
index 0000000..82e115b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.j
new file mode 100644
index 0000000..6722bca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_0_6.java
+.class public dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    lstore_0
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.java
new file mode 100644
index 0000000..7a56680
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_0/jm/T_lstore_0_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_0.jm;
+
+public class T_lstore_0_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/Test_lstore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/Test_lstore_1.java
new file mode 100644
index 0000000..019721b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/Test_lstore_1.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_1.jm.T_lstore_1_1;
+import dxc.junit.opcodes.lstore_1.jm.T_lstore_1_2;
+
+public class Test_lstore_1 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_1_1.run());
+    }
+
+    /**
+     * @title each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_1_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_1.jm.T_lstore_1_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.j
new file mode 100644
index 0000000..6da940c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1_1.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_1
+    ldc2_w 4
+    lload_1
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.java
new file mode 100644
index 0000000..406368d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_1 {
+    
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.j
new file mode 100644
index 0000000..cdbae78
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1_2.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_1
+    lload_1
+
+    ldc2_w 1234567890123
+    lstore 1
+    lload_1
+    
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.java
new file mode 100644
index 0000000..767fccb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.j
new file mode 100644
index 0000000..46567eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1_3.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_1
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.java
new file mode 100644
index 0000000..2a02047
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.j
new file mode 100644
index 0000000..8045824
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1_4.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    lstore_1
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.java
new file mode 100644
index 0000000..b27f43f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.j
new file mode 100644
index 0000000..4926c01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1_5.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_1
+    lstore_1
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.java
new file mode 100644
index 0000000..380b2e6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.j
new file mode 100644
index 0000000..684aa83
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_1_6.java
+.class public dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_1
+    lstore_1
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.java
new file mode 100644
index 0000000..22b4ec4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_1/jm/T_lstore_1_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_1.jm;
+
+public class T_lstore_1_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/Test_lstore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/Test_lstore_2.java
new file mode 100644
index 0000000..e42d3f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/Test_lstore_2.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_2.jm.T_lstore_2_1;
+import dxc.junit.opcodes.lstore_2.jm.T_lstore_2_2;
+
+public class Test_lstore_2 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_2_1.run());
+    }
+
+    /**
+     * @title each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_2_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_2.jm.T_lstore_2_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.j
new file mode 100644
index 0000000..28b3391
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2_1.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_2
+    ldc2_w 4
+    lload_2
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.java
new file mode 100644
index 0000000..cf0a9c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.j
new file mode 100644
index 0000000..7bd36ac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2_2.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 4
+    
+    ldc2_w 1234567890123
+    lstore_2
+    lload_2
+
+    ldc2_w 1234567890123
+    lstore 2
+    lload_2
+    
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.java
new file mode 100644
index 0000000..8947807
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.j
new file mode 100644
index 0000000..fbd7f42
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2_3.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_2
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.java
new file mode 100644
index 0000000..ff83d99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.j
new file mode 100644
index 0000000..d939607
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2_4.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    dconst_1
+    lstore_2
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.java
new file mode 100644
index 0000000..c9b028e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_4 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.j
new file mode 100644
index 0000000..51d5d5f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2_5.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    iconst_2
+    lstore_2
+    return
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.java
new file mode 100644
index 0000000..898c226
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.j
new file mode 100644
index 0000000..9de277f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_2_6.java
+.class public dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 4
+
+    fconst_2
+    lstore_2
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.java
new file mode 100644
index 0000000..30c6c25
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_2/jm/T_lstore_2_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_2.jm;
+
+public class T_lstore_2_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/Test_lstore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/Test_lstore_3.java
new file mode 100644
index 0000000..b89ca5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/Test_lstore_3.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lstore_3.jm.T_lstore_3_1;
+import dxc.junit.opcodes.lstore_3.jm.T_lstore_3_2;
+
+public class Test_lstore_3 extends DxTestCase {
+
+    /**
+     * @title value of local variable at <n> is pushed onto the operand stack.
+     */
+    public void testN1() {
+        assertEquals(1234567890123l, T_lstore_3_1.run());
+    }
+
+    /**
+     * @title each of the lstore_<n> instructions is the same as lstore with an index of <n>
+     */
+    public void testN2() {
+        assertTrue(T_lstore_3_2.run());
+    }
+
+    /**
+     * @constraint 4.8.1.22
+     * @title index must be no greater than the value
+     * of max_locals-1
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of argument - float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lstore_3.jm.T_lstore_3_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.j
new file mode 100644
index 0000000..d5cafea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3_1.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()J
+    .limit stack 4
+    .limit locals 5
+    
+    ldc2_w 1234567890123
+    lstore_3
+    ldc2_w 4
+    lload_3
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.java
new file mode 100644
index 0000000..a03805a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_1 {
+
+    public static long run() {
+        return 1234567890123l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.j
new file mode 100644
index 0000000..bd47d6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3_2.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()Z
+    .limit stack 4
+    .limit locals 5
+    
+    ldc2_w 1234567890123
+    lstore_3
+    lload_3
+
+    ldc2_w 1234567890123
+    lstore 3
+    lload_3
+    
+    lcmp
+    ifne Label0
+    iconst_3
+    ireturn
+
+Label0:
+    iconst_0
+    ireturn
+   
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.java
new file mode 100644
index 0000000..cbe2c13
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_2 {
+
+    public static boolean run() {
+        long i = 1234567890123l;
+        return i == i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.j
new file mode 100644
index 0000000..6ddc10b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3_3.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 0
+
+    lstore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.java
new file mode 100644
index 0000000..89e037a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_3 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.j
new file mode 100644
index 0000000..f8266ef
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3_4.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    dconst_1
+    lstore_3
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.java
new file mode 100644
index 0000000..493601a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_4 {
+    
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.j
new file mode 100644
index 0000000..4dd787e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3_5.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    iconst_3
+    lstore_3
+    return
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.java
new file mode 100644
index 0000000..70f5f71
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_5 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.j
new file mode 100644
index 0000000..3684396
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lstore_3_6.java
+.class public dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public static run()V
+    .limit stack 4
+    .limit locals 5
+
+    fconst_1
+    lstore_3
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.java
new file mode 100644
index 0000000..766386b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lstore_3/jm/T_lstore_3_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lstore_3.jm;
+
+public class T_lstore_3_6 {
+
+    public static void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/Test_lsub.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/Test_lsub.java
new file mode 100644
index 0000000..e298784
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/Test_lsub.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lsub;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lsub.jm.T_lsub_1;
+
+public class Test_lsub extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_lsub_1 t = new T_lsub_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lsub.jm.T_lsub_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.j
new file mode 100644
index 0000000..1afeb41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lsub_1.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.java
new file mode 100644
index 0000000..047b1bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.j
new file mode 100644
index 0000000..8872c53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lsub_2.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+;    lload_1
+    lload_3
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.java
new file mode 100644
index 0000000..c509295
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_2 {
+
+    public long run(long a, long b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.j
new file mode 100644
index 0000000..f1fa846
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lsub_3.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JD)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    dload_3
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.java
new file mode 100644
index 0000000..d86e773
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_3 {
+
+    public long run(long a, double b) {
+        return (long)(a-b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.j
new file mode 100644
index 0000000..1443e48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lsub_4.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.java
new file mode 100644
index 0000000..e3166d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_4 {
+
+    public long run(int a, long b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.j
new file mode 100644
index 0000000..8156f63
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lsub_5.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 3
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lsub
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.java
new file mode 100644
index 0000000..3e89d5c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_5 {
+
+    public long run(float a, long b) {
+        return (long)(a-b);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.j
new file mode 100644
index 0000000..0598c05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lsub_6.java
+.class public dxc/junit/opcodes/lsub/jm/T_lsub_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    aload_0
+    lsub
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.java
new file mode 100644
index 0000000..d0fd41b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lsub/jm/T_lsub_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lsub.jm;
+
+public class T_lsub_6 {
+
+    public long run(long a, long b) {
+        return a-b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/Test_lushr.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/Test_lushr.java
new file mode 100644
index 0000000..41f41ea
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/Test_lushr.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lushr;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lushr.jm.T_lushr_1;
+
+public class Test_lushr extends DxTestCase {
+
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, -1
+     */
+    public void testN4() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+
+    /**
+     * @title  Arguments = 0, -1
+     */
+    public void testB1() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title  Arguments = 1, 0
+     */
+    public void testB4() {
+        T_lushr_1 t = new T_lushr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lushr.jm.T_lushr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.j
new file mode 100644
index 0000000..4c92f16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lushr_1.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    lload_1
+    iload_3
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.java
new file mode 100644
index 0000000..eebd399
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.j
new file mode 100644
index 0000000..fde0760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lushr_2.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+;    lload_1
+    iload_3
+    lushr
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.java
new file mode 100644
index 0000000..2512ad1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_2 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.j
new file mode 100644
index 0000000..baeb03f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lushr_3.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DI)J
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+    iload_3
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.java
new file mode 100644
index 0000000..a349f21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_3 {
+
+    public long run(double a, int b) {
+        return (long)a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.j
new file mode 100644
index 0000000..0713473
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lushr_4.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)J
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    iload_2
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.java
new file mode 100644
index 0000000..f2c2dbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_4 {
+
+    public long run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.j
new file mode 100644
index 0000000..2d9f06e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lushr_5.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FI)J
+    .limit stack 3
+    .limit locals 3
+
+    fload_1
+    iload_2
+    lushr
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.java
new file mode 100644
index 0000000..0ac3afd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_5 {
+
+    public long run(float a, int b) {
+        return (long)a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.j
new file mode 100644
index 0000000..6c5158f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lushr_6.java
+.class public dxc/junit/opcodes/lushr/jm/T_lushr_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JI)J
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    iload_3
+    lushr
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.java
new file mode 100644
index 0000000..cc32717
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lushr/jm/T_lushr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lushr.jm;
+
+public class T_lushr_6 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/Test_lxor.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/Test_lxor.java
new file mode 100644
index 0000000..567c548
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/Test_lxor.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lxor;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.lxor.jm.T_lxor_1;
+
+public class Test_lxor extends DxTestCase {
+
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title  Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+
+    /**
+     * @title  Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title  Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_lxor_1 t = new T_lxor_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - float & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - reference & long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.lxor.jm.T_lxor_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.j
new file mode 100644
index 0000000..a6d08d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lxor_1.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+    
+    lload_1
+    lload_3
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.java
new file mode 100644
index 0000000..e7e1c94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.j
new file mode 100644
index 0000000..4510c47
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lxor_2.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+;    lload_3
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.java
new file mode 100644
index 0000000..2216760
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_2 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.j
new file mode 100644
index 0000000..b0ff453
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lxor_3.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(DJ)J
+    .limit stack 4
+    .limit locals 5
+
+    dload_1
+    lload_3
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.java
new file mode 100644
index 0000000..7dc6d0a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_3 {
+
+    public long run(double a, long b) {
+        return (long)a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.j
new file mode 100644
index 0000000..2c39d88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lxor_4.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(IJ)J
+    .limit stack 4
+    .limit locals 4
+
+    iload_1
+    lload_2
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.java
new file mode 100644
index 0000000..aeb756e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_4 {
+
+    public long run(int a, long b) {
+        return a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.j
new file mode 100644
index 0000000..72d4a35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lxor_5.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_5
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(FJ)J
+    .limit stack 4
+    .limit locals 4
+
+    fload_1
+    lload_2
+    lxor
+
+    lreturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.java
new file mode 100644
index 0000000..3310cb1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_5 {
+
+    public long run(float a, long b) {
+        return (long)a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.j b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.j
new file mode 100644
index 0000000..aaa389b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_lxor_6.java
+.class public dxc/junit/opcodes/lxor/jm/T_lxor_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(JJ)J
+    .limit stack 4
+    .limit locals 5
+
+    aload_0
+    lload_3
+    lxor
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.java b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.java
new file mode 100644
index 0000000..390a570
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/lxor/jm/T_lxor_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.lxor.jm;
+
+public class T_lxor_6 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/Test_monitorenter.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/Test_monitorenter.java
new file mode 100644
index 0000000..a47cc26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/Test_monitorenter.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorenter;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1;
+import dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2;
+import dxc.junit.opcodes.monitorenter.jm.T_monitorenter_4;
+
+public class Test_monitorenter extends DxTestCase {
+
+    /**
+     * @title normal test
+     * 
+     * @throws InterruptedException
+     */
+    public void testN1() throws InterruptedException {
+        //@uses dxc.junit.opcodes.monitorenter.TestRunnable
+        final T_monitorenter_1 t1 = new T_monitorenter_1();
+        Runnable r1 = new TestRunnable(t1);
+        Runnable r2 = new TestRunnable(t1);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertEquals(2, t1.counter);
+    }
+
+    /**
+     * @title  Tests behavior when monitor owned by current thread.
+     * 
+     * @throws InterruptedException
+     */
+    public void testN2() throws InterruptedException {
+        //@uses dxc.junit.opcodes.monitorenter.TestRunnable2
+        final T_monitorenter_2 t1 = new T_monitorenter_2();
+        Runnable r1 = new TestRunnable2(t1, 10);
+        Runnable r2 = new TestRunnable2(t1, 20);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertTrue(t1.result);
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_monitorenter_4 t = new T_monitorenter_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorenter.jm.T_monitorenter_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorenter.jm.T_monitorenter_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
+class TestRunnable implements Runnable {
+    private T_monitorenter_1 t1;
+    TestRunnable(T_monitorenter_1 t1) {
+        this.t1 = t1;
+    }
+    
+    public void run() {
+        try {
+            t1.run();
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
+class TestRunnable2 implements Runnable {
+    private T_monitorenter_2 t2;
+    private int val;
+    TestRunnable2(T_monitorenter_2 t2, int val) {
+        this.t2 = t2;
+        this.val = val;
+    }
+    
+    public void run() {
+        try {
+            t2.run(val);
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.j
new file mode 100644
index 0000000..0ea107d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.j
@@ -0,0 +1,83 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorenter_1.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1
+.super java/lang/Object
+
+.field public counter I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+
+    return
+.end method
+
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 3
+    .limit locals 3
+    
+Label1:
+    aload_0
+    dup
+    astore_1
+    monitorenter
+
+Label5:
+    aload_0
+    getfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+    istore_2
+
+Label3:
+    ldc2_w 500
+    invokestatic java/lang/Thread/sleep(J)V
+
+    aload_0
+    iinc 2 1
+    iload_2
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+
+Label4:
+    aload_1
+    monitorexit
+
+Label6:
+    goto Label0
+
+Label7:
+    aload_1
+    monitorexit
+
+Label9:
+    aload_0
+    iconst_m1
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_1.counter I
+    athrow
+
+Label0:
+    return
+
+.catch all from Label5 to Label6 using Label7
+.catch all from Label7 to Label9 using Label7
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.java
new file mode 100644
index 0000000..5632c81
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_1 {
+    public int counter = 0;
+    
+    public void run() throws InterruptedException  {
+        synchronized(this) {
+            int a = counter;
+            Thread.sleep(500);
+            counter = ++a;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.j
new file mode 100644
index 0000000..5927fed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.j
@@ -0,0 +1,118 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorenter_2.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2
+.super java/lang/Object
+
+.field private flg I
+.field public result Z
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.flg I
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+    return
+.end method
+
+
+
+.method public run(I)V
+    .throws java/lang/InterruptedException
+    .limit stack 3
+    .limit locals 4
+
+    aload_0
+    dup
+    astore_2
+    monitorenter
+
+Label13:
+    aload_0
+    dup
+    astore_3
+    monitorenter
+
+Label7:
+    aload_0
+    iload_1
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.flg I
+
+    aload_3
+    monitorexit
+
+Label8:
+    goto Label0
+
+Label9:
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+    aload_3
+    monitorexit
+
+Label11:
+    athrow
+
+Label0:
+    ldc2_w 500
+    invokestatic java/lang/Thread/sleep(J)V
+
+    aload_0
+    getfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.flg I
+    iload_1
+    if_icmpeq Label1
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+Label1:
+    aload_2
+    monitorexit
+
+Label14:
+    goto Label2
+
+Label15:
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.monitorenter.jm.T_monitorenter_2.result Z
+
+    aload_2
+    monitorexit
+
+Label17:
+    athrow
+
+Label2:
+    return
+
+.catch all from Label7 to Label8 using Label9
+.catch all from Label9 to Label11 using Label9
+.catch all from Label13 to Label14 using Label15
+.catch all from Label15 to Label17 using Label15
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.java
new file mode 100644
index 0000000..ef7387d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_2 {
+
+     private int flg = 0;
+     public boolean result = true;
+        
+     public void run(int v) throws InterruptedException  {
+         synchronized(this) {
+             synchronized(this) {
+                 flg = v;
+             }
+             Thread.sleep(500);
+             if(flg != v) {
+                 result = false;
+             }
+         }
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.j
new file mode 100644
index 0000000..8c08eeb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorenter_5.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 2
+    .limit locals 3
+
+    aconst_null
+    monitorenter
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.java
new file mode 100644
index 0000000..04b8e6b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_4 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.j
new file mode 100644
index 0000000..4850486
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorenter_5.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 2
+    .limit locals 3
+
+;    aload_0    
+    iconst_1
+    monitorenter
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.java
new file mode 100644
index 0000000..02ac602
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_5 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.j
new file mode 100644
index 0000000..625ec89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorenter_6.java
+.class public dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .throws java/lang/InterruptedException
+    .limit stack 2
+    .limit locals 3
+
+;    aload_0    
+    monitorenter
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.java
new file mode 100644
index 0000000..303a03d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorenter/jm/T_monitorenter_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorenter.jm;
+
+public class T_monitorenter_6 {
+    
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/Test_monitorexit.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/Test_monitorexit.java
new file mode 100644
index 0000000..b4924b6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/Test_monitorexit.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorexit;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.monitorexit.jm.T_monitorexit_2;
+import dxc.junit.opcodes.monitorexit.jm.T_monitorexit_3;
+import dxc.junit.opcodes.monitorexit.jm.T_monitorexit_4;
+
+public class Test_monitorexit extends DxTestCase {
+
+    /**
+     * @title  thread is not monitor owner
+     */
+    public void testE1() throws InterruptedException {
+        //@uses dxc.junit.opcodes.monitorexit.TestRunnable
+        final T_monitorexit_2 t = new T_monitorexit_2();
+        final Object o = new Object();
+
+        Runnable r = new TestRunnable(t, o);
+
+        synchronized (o) {
+            Thread th = new Thread(r);
+            th.start();
+            th.join();
+        }
+        if (t.result == false) {
+            fail("expected IllegalMonitorStateException");
+        }
+    }
+
+
+    /**
+     * @title  structural lock rules violation
+     */
+    public void testE2() {
+        T_monitorexit_3 t = new T_monitorexit_3();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_monitorexit_4 t = new T_monitorexit_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorexit.jm.T_monitorexit_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.monitorexit.jm.T_monitorexit_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
+
+class TestRunnable implements Runnable {
+    private T_monitorexit_2 t;
+    private Object o;
+
+    public TestRunnable(T_monitorexit_2 t, Object o) {
+        this.t = t;
+        this.o = o;
+    }
+
+    public void run() {
+        try {
+            t.run(o);
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+            t.result = true;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.j
new file mode 100644
index 0000000..a376e05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorexit_2.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2
+.super java/lang/Object
+
+.field public result Z
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.monitorexit.jm.T_monitorexit_2.result Z
+    
+    return
+.end method
+
+
+.method public run(Ljava/lang/Object;)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_1
+    monitorexit
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.java
new file mode 100644
index 0000000..de7086f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_2.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_2 {
+
+    public boolean result = false;
+    
+    public void run(Object o) {
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.j
new file mode 100644
index 0000000..8c4be70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorexit_3.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    aload_0    
+    monitorexit
+
+    aload_0    
+    monitorexit
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.java
new file mode 100644
index 0000000..99aefa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_3 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.j
new file mode 100644
index 0000000..9c110b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.j
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorexit_4.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    
+Label1:    
+    aconst_null
+    monitorexit
+Label2:
+    goto Label4
+
+Label3:
+    aload_0
+    monitorexit
+    athrow
+Label4:
+    return
+    
+.catch all from Label1 to Label2 using Label3    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.java
new file mode 100644
index 0000000..14bcbd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_4 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.j
new file mode 100644
index 0000000..d60a777
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorexit_5.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+;    aload_0
+    monitorexit
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.java
new file mode 100644
index 0000000..5210071
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_5 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.j b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.j
new file mode 100644
index 0000000..a56c030
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_monitorexit_6.java
+.class public dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    monitorenter
+    iconst_1
+    monitorexit
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.java b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.java
new file mode 100644
index 0000000..d7e9825
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/monitorexit/jm/T_monitorexit_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.monitorexit.jm;
+
+public class T_monitorexit_6 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/Test_multianewarray.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/Test_multianewarray.java
new file mode 100644
index 0000000..0d2d0fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/Test_multianewarray.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_1;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_2;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_7;
+import dxc.junit.opcodes.multianewarray.jm.T_multianewarray_9;
+
+public class Test_multianewarray extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_multianewarray_1 t = new T_multianewarray_1();
+        String[][][] res = t.run(2, 5, 4);
+
+        assertEquals(2, res.length);
+
+        // check default initialization
+        for (int i = 0; i < 2; i++) {
+            assertEquals(5, res[i].length);
+
+            for (int j = 0; j < 5; j++) {
+                assertEquals(4, res[i][j].length);
+
+                for (int k = 0; j < 4; j++) {
+                    assertNull(res[i][j][k]);
+                }
+            }
+        }
+    }
+
+    /**
+     * @title  if count is zero, no subsequent dimensions allocated
+     */
+    public void testN2() {
+        T_multianewarray_1 t = new T_multianewarray_1();
+        String[][][] res = t.run(2, 0, 4);
+
+        try {
+            String s = res[2][0][0];
+            fail("expected ArrayIndexOutOfBoundsException");
+            fail("dummy for s "+s);
+        } catch (ArrayIndexOutOfBoundsException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  multinewarray must only be used to create array with
+     * dimensions specified by dimensions operand
+     */
+    public void testN3() {
+        T_multianewarray_9 t = new T_multianewarray_9();
+        String[][][] res = t.run(2, 1, 4);
+
+        if (res.length != 2) fail("incorrect multiarray length");
+        if (res[0].length != 1) fail("incorrect array length");
+
+        try {
+            int i = res[0][0].length;
+            fail("expected NullPointerException");
+            fail("dummy for i "+i);
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE1() {
+        T_multianewarray_1 t = new T_multianewarray_1();
+        try {
+            t.run(2, -5, 3);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.multianewarray.jm.sub.TestStubs$TestStub
+        try {
+            T_multianewarray_2 t = new T_multianewarray_2();
+            t.run(2, 5, 3);
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+        T_multianewarray_7 t = new T_multianewarray_7();
+            t.run(2, 5, 3);
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.19
+     * @title dimension size must not be zero
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE5() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE6() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.multianewarray.jm.T_multianewarray_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.j
new file mode 100644
index 0000000..745bb41
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_1.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ljava/lang/String; 3
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.java
new file mode 100644
index 0000000..8acf7ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_1 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][d3];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.j
new file mode 100644
index 0000000..2fc8358
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_10.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+    aload_0
+    multianewarray [[Ljava/lang/String; 2
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.java
new file mode 100644
index 0000000..3ee7dc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_10 {
+    
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.j
new file mode 100644
index 0000000..6fe2d3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_2.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)V
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ldxc/junit/opcodes/multianewarray/jm/sub/TestStubs$TestStub; 3
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.java
new file mode 100644
index 0000000..fd248e2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_2 {
+
+    public void run(int d1, int d2, int d3) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.cfh
new file mode 100644
index 0000000..58462bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 57, h: 0002: utf8{"dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  m  u  l  t  i  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  3  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 33 
+    // parsed:, offset 72, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 91, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 104, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 113, len 3, h: 0006: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_3}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 116, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 122, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 127, len 26, h: 0009: utf8{"T_multianewarray_3.java"}
+    // .  .  .  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  3  .  j  a  v  a  
+       01 00 17 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 153, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 160, len 24, h: 000b: utf8{"[[[Ljava/lang/String;"}
+    // .  .  .  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 15 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 184, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 190, len 29, h: 000d: utf8{"(III)[[[Ljava/lang/String;"}
+    // .  .  .  (  I  I  I  )  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 1a 28 49 49 49 29 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 219, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 222, len 3, h: 000f: type{java.lang.String[][][]}
+    // .  .  .  
+       07 00 0b 
+// parsed:, offset 225, len 0, h: end constant_pool
+// parsed:, offset 225, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 227, len 2, h: this_class: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_3}
+// .  .  
+   00 06 
+// parsed:, offset 229, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 231, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 233, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 235, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 237, len:75,desc: ()V
+// parsed:, offset 237, len 0, h:  methods[0]: 
+    // parsed:, offset 237, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 239, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 241, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 243, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 245, len 0, h:  attributes[0]: 
+        // parsed:, offset 245, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 247, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 251, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 253, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 255, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 264, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 266, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 268, len 0, h: end attributes[0] 
+// parsed:, offset 268, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 268, len:44,desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 268, len 0, h:  methods[1]: 
+    // parsed:, offset 268, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 270, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 272, len 2, h: descriptor: (III)[[[Ljava/lang/String;
+    // .  .  
+       00 0d 
+    // parsed:, offset 274, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 276, len 0, h:  attributes[0]: 
+        // parsed:, offset 276, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 278, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 282, len 2, h: max_stack: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 284, len 2, h: max_locals: 0004
+        // .  .  
+           00 04 
+        // parsed:, offset 286, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 1, h: 0001: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 2, len 1, h: 0002: iload_3 // 03
+        // .  
+           1d 
+        // parsed:, offset 3, len 4, h: 0003: multianewarray type{java.lang.String[][][]}, 03
+        // .  .  .  .  
+//@mod           c5 00 0f 03 
+           c5 01 0f 03 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 298, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 300, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 302, len 0, h: end attributes[0] 
+// parsed:, offset 302, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 302, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 304, len 0, h:  attributes[0]: 
+    // parsed:, offset 304, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 306, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 310, len 2, h: source: utf8{"T_multianewarray_3.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 312, len 0, h: end attributes[0] 
+// parsed:, offset 312, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.j
new file mode 100644
index 0000000..7ca4a03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_3.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ljava/lang/String; 3
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.java
new file mode 100644
index 0000000..468ff6e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_3 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][d3];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.j
new file mode 100644
index 0000000..3583a5a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_4.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    multianewarray [[Ljava/lang/String; 2
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.java
new file mode 100644
index 0000000..24e7c45
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_4 {
+
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.j
new file mode 100644
index 0000000..825fd4a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_5.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    fconst_1
+    multianewarray [[Ljava/lang/String; 2
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.java
new file mode 100644
index 0000000..c213317
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_5 {
+
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.j
new file mode 100644
index 0000000..ef716e4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_6.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 3
+    iload_1
+    iload_2
+    multianewarray [[Ljava/lang/String; 0
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.java
new file mode 100644
index 0000000..ce6033c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_6 {
+
+    public String[][] run(int d1, int d2) {
+        return new String[d1][d2];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.j
new file mode 100644
index 0000000..bce3003
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_7.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)V
+    .limit stack 3
+    .limit locals 4
+    iload_1
+    iload_2
+    iload_3
+    ; class not found exception
+    multianewarray [[[Ldxc/junit/opcodes/multianewarray/jm/Foobar1; 3
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.java
new file mode 100644
index 0000000..27939ad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_7 {
+
+    public void run(int d1, int d2, int d3) {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.cfh
new file mode 100644
index 0000000..9228061
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.cfh
@@ -0,0 +1,206 @@
+//@class:dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 67, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 74, len 24, h: 0008: utf8{"[[[Ljava/lang/String;"}
+    // .  .  .  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 15 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 98, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 104, len 5, h: 000a: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 109, len 26, h: 000b: utf8{"T_multianewarray_8.java"}
+    // .  .  .  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  8  .  j  a  v  a  
+       01 00 17 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 135, len 3, h: 000c: type{java.lang.String[][][]}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 138, len 57, h: 000d: utf8{"dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  m  u  l  t  i  a  n  e  w  a  r  r  a  y  /  j  m  /  T  _  m  u  l  t  i  a  n  e  w  a  r  r  a  y  _  8  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 6d 75 6c 74 69 61 6e 65 77 61 72 72 61 79 5f 38 
+    // parsed:, offset 195, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 198, len 29, h: 000f: utf8{"(III)[[[Ljava/lang/String;"}
+    // .  .  .  (  I  I  I  )  [  [  [  L  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  ;  
+       01 00 1a 28 49 49 49 29 5b 5b 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 
+    // parsed:, offset 227, len 3, h: 0010: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_8}
+    // .  .  .  
+       07 00 0d 
+// parsed:, offset 230, len 0, h: end constant_pool
+// parsed:, offset 230, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 232, len 2, h: this_class: type{dxc.junit.opcodes.multianewarray.jm.T_multianewarray_8}
+// .  .  
+   00 10 
+// parsed:, offset 234, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 236, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 238, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 240, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 242, len:78,desc: ()V
+// parsed:, offset 242, len 0, h:  methods[0]: 
+    // parsed:, offset 242, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 244, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 246, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 248, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 250, len 0, h:  attributes[0]: 
+        // parsed:, offset 250, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 252, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 256, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 258, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 260, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 269, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 271, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 273, len 0, h: end attributes[0] 
+// parsed:, offset 273, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 273, len:47,desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 273, len 0, h:  methods[1]: 
+    // parsed:, offset 273, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 275, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 277, len 2, h: descriptor: (III)[[[Ljava/lang/String;
+    // .  .  
+       00 0f 
+    // parsed:, offset 279, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 281, len 0, h:  attributes[0]: 
+        // parsed:, offset 281, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 283, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 287, len 2, h: max_stack: 0003
+        // .  .  
+           00 03 
+        // parsed:, offset 289, len 2, h: max_locals: 0004
+        // .  .  
+           00 04 
+        // parsed:, offset 291, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0a 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 4, len 1, h: 0004: iload_2 // 02
+        // .  
+           1c 
+        // parsed:, offset 5, len 1, h: 0005: iload_3 // 03
+        // .  
+           1d 
+        // parsed:, offset 6, len 4, h: 0006: multianewarray type{java.lang.String[][][]}, 03
+        // .  .  .  .  
+//@mod           c5 00 0c 03 
+           c5 00 0a 03 
+        // parsed:, offset 10, len 1, h: 000a: areturn
+        // .  
+           b0 
+        // parsed:, offset 306, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 308, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 310, len 0, h: end attributes[0] 
+// parsed:, offset 310, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (III)[[[Ljava/lang/String;
+// parsed:, offset 310, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 312, len 0, h:  attributes[0]: 
+    // parsed:, offset 312, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 314, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 318, len 2, h: source: utf8{"T_multianewarray_8.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 320, len 0, h: end attributes[0] 
+// parsed:, offset 320, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.j
new file mode 100644
index 0000000..5d315c2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_8.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 3
+    .limit locals 4
+    
+    ldc 3.14
+    pop
+    
+    iload_1
+    iload_2
+    iload_3
+    multianewarray [[[Ljava/lang/String; 3
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.java
new file mode 100644
index 0000000..7b4aa01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_8 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][d3];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.j b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.j
new file mode 100644
index 0000000..b814c67
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_multianewarray_9.java
+.class public dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9
+.super java/lang/Object
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(III)[[[Ljava/lang/String;
+    .limit stack 2
+    .limit locals 4
+
+    iload_1
+    iload_2
+    multianewarray [[[Ljava/lang/String; 2
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.java
new file mode 100644
index 0000000..0df794d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/T_multianewarray_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm;
+
+public class T_multianewarray_9 {
+
+    public String[][][] run(int d1, int d2, int d3) {
+        return new String[d1][d2][];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/sub/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/sub/TestStubs.java
new file mode 100644
index 0000000..ee091bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/multianewarray/jm/sub/TestStubs.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.multianewarray.jm.sub;
+
+public class TestStubs {
+
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testE2
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/Test_newarray.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/Test_newarray.java
new file mode 100644
index 0000000..4126bba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/Test_newarray.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.newarray;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.newarray.jm.T_newarray_1;
+import dxc.junit.opcodes.newarray.jm.T_newarray_2;
+
+public class Test_newarray extends DxTestCase {
+
+    /**
+     * @title  Array of ints
+     */
+    public void testN1() {
+        T_newarray_1 t = new T_newarray_1();
+        int[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertEquals(0, r[i]);
+        }
+
+    }
+
+    /**
+     * @title  Array of floats
+     */
+    public void testN2() {
+        T_newarray_2 t = new T_newarray_2();
+        float[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertEquals(0f, r[i]);
+        }
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE1() {
+        T_newarray_2 t = new T_newarray_2();
+        try {
+            t.run(-1);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Array size = 0
+     */
+    public void testB1() {
+        T_newarray_1 t = new T_newarray_1();
+        int[] r = t.run(0);
+        assertNotNull(r);
+        assertEquals(0, r.length);
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.20
+     * @title atype must take one of the following
+     * values
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.newarray.jm.T_newarray_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.j
new file mode 100644
index 0000000..afe0883
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_newarray_1.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+    iload_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.java
new file mode 100644
index 0000000..0d5d439
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_1 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.j
new file mode 100644
index 0000000..a04589d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_newarray_2.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[F
+    .limit locals 2
+    .limit stack 2
+    iload_1
+    newarray float
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.java
new file mode 100644
index 0000000..419f2d5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_2 {
+
+    public float[] run(int sz) {
+        return new float[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.j
new file mode 100644
index 0000000..51c1004
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_newarray_3.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+;    iload_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.java
new file mode 100644
index 0000000..9de24fc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_3 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.j
new file mode 100644
index 0000000..9f56669
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_newarray_4.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+;    iload_1
+    fconst_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.java
new file mode 100644
index 0000000..1fcb3b8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_4 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.cfh
new file mode 100644
index 0000000..b59839a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/newarray/jm/T_newarray_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0d 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 45, h: 0005: utf8{"dxc/junit/opcodes/newarray/jm/T_newarray_5"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  n  e  w  a  r  r  a  y  /  j  m  /  T  _  n  e  w  a  r  r  a  y  _  5  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6e 65 77 61 72 72 61 79 2f 6a 6d 2f 54 5f 6e 65 77 61 72 72 61 79 5f 35 
+    // parsed:, offset 101, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 107, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 112, len 3, h: 0008: type{dxc.junit.opcodes.newarray.jm.T_newarray_5}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 115, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 122, len 20, h: 000a: utf8{"T_newarray_5.java"}
+    // .  .  .  T  _  n  e  w  a  r  r  a  y  _  5  .  j  a  v  a  
+       01 00 11 54 5f 6e 65 77 61 72 72 61 79 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 142, len 8, h: 000b: utf8{"(I)[I"}
+    // .  .  .  (  I  )  [  I  
+       01 00 05 28 49 29 5b 49 
+    // parsed:, offset 150, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 3, h: 000d: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 159, len 0, h: end constant_pool
+// parsed:, offset 159, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 161, len 2, h: this_class: type{dxc.junit.opcodes.newarray.jm.T_newarray_5}
+// .  .  
+   00 08 
+// parsed:, offset 163, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0d 
+// parsed:, offset 165, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 167, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 169, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 171, len:71,desc: ()V
+// parsed:, offset 171, len 0, h:  methods[0]: 
+    // parsed:, offset 171, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 173, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 175, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 177, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 179, len 0, h:  attributes[0]: 
+        // parsed:, offset 179, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 181, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 185, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 187, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 189, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 198, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 200, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 202, len 0, h: end attributes[0] 
+// parsed:, offset 202, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 202, len:40,desc: (I)[I
+// parsed:, offset 202, len 0, h:  methods[1]: 
+    // parsed:, offset 202, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 204, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 206, len 2, h: descriptor: (I)[I
+    // .  .  
+       00 0b 
+    // parsed:, offset 208, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 210, len 0, h:  attributes[0]: 
+        // parsed:, offset 210, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 212, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 216, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 218, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 220, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 2, h: 0001: newarray int
+        // .  .  
+//@mod     bc 0a    
+           bc 03 
+        // parsed:, offset 3, len 1, h: 0003: areturn
+        // .  
+           b0 
+        // parsed:, offset 228, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 230, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 232, len 0, h: end attributes[0] 
+// parsed:, offset 232, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)[I
+// parsed:, offset 232, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 234, len 0, h:  attributes[0]: 
+    // parsed:, offset 234, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 236, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 240, len 2, h: source: utf8{"T_newarray_5.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 242, len 0, h: end attributes[0] 
+// parsed:, offset 242, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.j
new file mode 100644
index 0000000..06737b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_newarray_5.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit locals 2
+    .limit stack 2
+    iload_1
+    newarray int
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.java
new file mode 100644
index 0000000..7ad3257
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_5 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.j b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.j
new file mode 100644
index 0000000..db58795
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_newarray_6.java
+.class public dxc/junit/opcodes/newarray/jm/T_newarray_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)[I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    newarray int
+    areturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.java b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.java
new file mode 100644
index 0000000..6729fa4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/newarray/jm/T_newarray_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.newarray.jm;
+
+public class T_newarray_6 {
+    
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/nop/Test_nop.java b/tools/dx-tests/src/dxc/junit/opcodes/nop/Test_nop.java
new file mode 100644
index 0000000..78e019b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/nop/Test_nop.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.nop;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.opcodes.nop.jm.T_nop_1;
+
+public class Test_nop extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_nop_1 t = new T_nop_1();
+        // how do we test nop - e.g. push some data onto the stack, and
+        // test if nothing has changed
+        assertTrue(t.run());
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.j b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.j
new file mode 100644
index 0000000..d4ddbed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_nop_1.java
+.class public dxc/junit/opcodes/nop/jm/T_nop_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 4
+    ldc2_w 12345678
+    nop
+    nop
+    nop
+    nop
+    nop
+    dup2
+    nop
+    nop
+    nop
+    lcmp
+    ifne Label0
+    iconst_1
+    ireturn
+Label0:
+    iconst_0    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.java b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.java
new file mode 100644
index 0000000..be36869
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/nop/jm/T_nop_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.nop.jm;
+
+public class T_nop_1 {
+
+    public boolean run() {
+      return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/Test_opc_goto.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/Test_opc_goto.java
new file mode 100644
index 0000000..b4a9ccc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/Test_opc_goto.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_goto;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_goto.jm.T_opc_goto_1;
+import dxc.junit.opcodes.opc_goto.jm.T_opc_goto_5;
+
+public class Test_opc_goto extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_opc_goto_1 t = new T_opc_goto_1();
+        assertEquals(0, t.run(20));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN2() {
+        T_opc_goto_1 t = new T_opc_goto_1();
+        assertEquals(-20, t.run(-20));
+    }
+
+    /**
+     * @title  negative offset
+     */
+    public void testN3() {
+        T_opc_goto_5 t = new T_opc_goto_5();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target is inside instruction
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_goto.jm.T_opc_goto_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_goto.jm.T_opc_goto_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.7
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_goto.jm.T_opc_goto_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.j
new file mode 100644
index 0000000..17477a9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_goto_1.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    goto Label0
+
+    Label1:
+    iinc 1 -1
+
+    Label0:
+    iload_1
+    ifgt Label1
+
+    iload_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.java
new file mode 100644
index 0000000..9e50e31
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.cfh
new file mode 100644
index 0000000..82dbe4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.cfh
@@ -0,0 +1,193 @@
+//@class:dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_2}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 70, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 77, len 3, h: 0009: string{"a"}
+    // .  .  .  
+       08 00 0c 
+    // parsed:, offset 80, len 45, h: 000a: utf8{"dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  g  o  t  o  /  j  m  /  T  _  o  p  c  _  g  o  t  o  _  2  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 67 6f 74 6f 2f 6a 6d 2f 54 5f 6f 70 63 5f 67 6f 74 6f 5f 32 
+    // parsed:, offset 125, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 131, len 4, h: 000c: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 135, len 20, h: 000d: utf8{"T_opc_goto_2.java"}
+    // .  .  .  T  _  o  p  c  _  g  o  t  o  _  2  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 67 6f 74 6f 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 155, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 158, len 0, h: end constant_pool
+// parsed:, offset 158, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 160, len 2, h: this_class: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_2}
+// .  .  
+   00 07 
+// parsed:, offset 162, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 164, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 166, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 170, len:74,desc: ()V
+// parsed:, offset 170, len 0, h:  methods[0]: 
+    // parsed:, offset 170, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 174, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 176, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 178, len 0, h:  attributes[0]: 
+        // parsed:, offset 178, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 180, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 184, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 186, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 197, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 199, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 201, len 0, h: end attributes[0] 
+// parsed:, offset 201, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 201, len:43,desc: ()V
+// parsed:, offset 201, len 0, h:  methods[1]: 
+    // parsed:, offset 201, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 205, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 207, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 209, len 0, h:  attributes[0]: 
+        // parsed:, offset 209, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 211, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 215, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 3, h: 0000: goto 0004
+        // .  .  .  
+//@mod:    a7 00 04 
+// we jump to the parameter of a byte code (was: ldc, now: string "a"), so this 
+// must be rejected by the verifier            
+           a7 00 05
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 4, len 2, h: 0004: ldc string{"a"}
+        // .  .  
+           12 09 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 230, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 232, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 234, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 236, len 0, h:  attributes[0]: 
+    // parsed:, offset 236, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 238, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 242, len 2, h: source: utf8{"T_opc_goto_2.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 244, len 0, h: end attributes[0] 
+// parsed:, offset 244, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.j
new file mode 100644
index 0000000..9a155df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_goto_2.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.java
new file mode 100644
index 0000000..344523d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_2 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.cfh
new file mode 100644
index 0000000..89cfde8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 3, h: 0004: string{"a"}
+    // .  .  .  
+       08 00 0d 
+    // parsed:, offset 50, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 59, len 20, h: 0006: utf8{"T_opc_goto_3.java"}
+    // .  .  .  T  _  o  p  c  _  g  o  t  o  _  3  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 67 6f 74 6f 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 79, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 85, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0c 
+    // parsed:, offset 90, len 3, h: 0009: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_3}
+    // .  .  .  
+       07 00 0b 
+    // parsed:, offset 93, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 100, len 45, h: 000b: utf8{"dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  g  o  t  o  /  j  m  /  T  _  o  p  c  _  g  o  t  o  _  3  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 67 6f 74 6f 2f 6a 6d 2f 54 5f 6f 70 63 5f 67 6f 74 6f 5f 33 
+    // parsed:, offset 145, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 151, len 4, h: 000d: utf8{"a"}
+    // .  .  .  a  
+       01 00 01 61 
+    // parsed:, offset 155, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 158, len 0, h: end constant_pool
+// parsed:, offset 158, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 160, len 2, h: this_class: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_3}
+// .  .  
+   00 09 
+// parsed:, offset 162, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 164, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 166, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 170, len:74,desc: ()V
+// parsed:, offset 170, len 0, h:  methods[0]: 
+    // parsed:, offset 170, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 172, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 174, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 176, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 178, len 0, h:  attributes[0]: 
+        // parsed:, offset 178, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 180, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 184, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 186, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 197, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 199, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 201, len 0, h: end attributes[0] 
+// parsed:, offset 201, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 201, len:43,desc: ()V
+// parsed:, offset 201, len 0, h:  methods[1]: 
+    // parsed:, offset 201, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 205, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 207, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 209, len 0, h:  attributes[0]: 
+        // parsed:, offset 209, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 211, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 215, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 3, h: 0000: goto 0004
+        // .  .  .  
+//@mod           a7 00 04 
+           a7 00 ff 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 4, len 2, h: 0004: ldc string{"a"}
+        // .  .  
+           12 04 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 230, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 232, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 234, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 236, len 0, h:  attributes[0]: 
+    // parsed:, offset 236, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 238, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 242, len 2, h: source: utf8{"T_opc_goto_3.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 244, len 0, h: end attributes[0] 
+// parsed:, offset 244, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.j
new file mode 100644
index 0000000..926612c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_goto_3.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto Label0
+    return
+Label0:    
+    ldc "a"
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.java
new file mode 100644
index 0000000..243af4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_3 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.cfh
new file mode 100644
index 0000000..1b60dd5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 3, h: 0007: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_4}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 70, len 45, h: 0008: utf8{"dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  g  o  t  o  /  j  m  /  T  _  o  p  c  _  g  o  t  o  _  4  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 67 6f 74 6f 2f 6a 6d 2f 54 5f 6f 70 63 5f 67 6f 74 6f 5f 34 
+    // parsed:, offset 115, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 122, len 20, h: 000a: utf8{"T_opc_goto_4.java"}
+    // .  .  .  T  _  o  p  c  _  g  o  t  o  _  4  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 67 6f 74 6f 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 142, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 148, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 151, len 0, h: end constant_pool
+// parsed:, offset 151, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 153, len 2, h: this_class: type{dxc.junit.opcodes.opc_goto.jm.T_opc_goto_4}
+// .  .  
+   00 07 
+// parsed:, offset 155, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 157, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 159, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 161, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 163, len:75,desc: ()V
+// parsed:, offset 163, len 0, h:  methods[0]: 
+    // parsed:, offset 163, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 165, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 167, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 169, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 171, len 0, h:  attributes[0]: 
+        // parsed:, offset 171, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 173, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 177, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 179, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 181, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 190, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 192, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 194, len 0, h: end attributes[0] 
+// parsed:, offset 194, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 194, len:44,desc: ()V
+// parsed:, offset 194, len 0, h:  methods[1]: 
+    // parsed:, offset 194, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 196, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 198, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 200, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 202, len 0, h:  attributes[0]: 
+        // parsed:, offset 202, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 204, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 208, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 210, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 212, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: goto 0003
+        // .  .  .  
+//@mod           a7 00 03 
+           a7 00 04 
+        // parsed:, offset 3, len 4, h: 0003: wide aload 0000
+        // .  .  .  .  
+           c4 19 00 00 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 224, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 226, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 228, len 0, h: end attributes[0] 
+// parsed:, offset 228, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 228, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 230, len 0, h:  attributes[0]: 
+    // parsed:, offset 230, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 232, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 236, len 2, h: source: utf8{"T_opc_goto_4.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 238, len 0, h: end attributes[0] 
+// parsed:, offset 238, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.j
new file mode 100644
index 0000000..9fda78a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_goto_4.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    goto Label0
+Label0:    
+    aload_w 0
+    return
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.java
new file mode 100644
index 0000000..1b6e4ab
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_4 {
+
+    public void run() {
+        String a = "a";
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.j
new file mode 100644
index 0000000..12e5804
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_goto_5.java
+.class public dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    goto Label1
+Label0:
+    nop
+    nop
+    nop
+    iconst_1
+    ireturn
+Label1:    
+    goto Label0
+    iconst_0
+    ireturn
+.end method
+
+
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.java
new file mode 100644
index 0000000..61d7c4d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_goto/jm/T_opc_goto_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_goto.jm;
+
+public class T_opc_goto_5 {
+
+    public boolean run() {
+        return true;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/TestStubs.java
new file mode 100644
index 0000000..03fb771
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // testE1
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/Test_opc_instanceof.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/Test_opc_instanceof.java
new file mode 100644
index 0000000..b5278df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/Test_opc_instanceof.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_1;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_2;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_3;
+import dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_7;
+
+public class Test_opc_instanceof extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_opc_instanceof_1 t = new T_opc_instanceof_1();
+        assertTrue(t.run(""));
+    }
+
+    /**
+     * @title check null value
+     */
+    public void testN2() {
+        T_opc_instanceof_1 t = new T_opc_instanceof_1();
+        assertFalse(t.run(null));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN3() {
+        T_opc_instanceof_1 t = new T_opc_instanceof_1();
+        assertFalse(t.run(this));
+    }
+
+    /**
+     * @title normal test
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SubClass
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SuperClass
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SuperInterface
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.SuperInterface2
+        T_opc_instanceof_2 t = new T_opc_instanceof_2();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     */
+    public void testE1() {
+        // @uses dxc.junit.opcodes.opc_instanceof.jm.TestStubs$TestStub
+        T_opc_instanceof_3 t = new T_opc_instanceof_3();
+        try {
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE2() {
+        T_opc_instanceof_7 t = new T_opc_instanceof_7();
+        try {
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+    
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE3() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE4() {
+        try {
+            Class
+                    .forName("dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.j
new file mode 100644
index 0000000..07c0fd9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_1.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.java
new file mode 100644
index 0000000..c9a44fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_1 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.j
new file mode 100644
index 0000000..f5a5675
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.j
@@ -0,0 +1,117 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_2.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+; (SubClass instanceof SuperClass)    
+    new        dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SubClass.<init>()V
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperClass
+    ifne Label1
+    iconst_1
+    goto LabelExit
+
+Label1:        
+; !(SuperClass instanceof SubClass)    
+    new dxc/junit/opcodes/opc_instanceof/jm/SuperClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SuperClass.<init>()V
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    ifeq Label2
+    iconst_2
+    goto LabelExit
+    
+Label2:        
+; (SubClass instanceof SuperInterface)    
+    new dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SubClass.<init>()V    
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperInterface
+    ifne Label3
+    iconst_3
+    goto LabelExit    
+    
+Label3:        
+; !(SubClass instanceof SuperInterface2)    
+    new dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_instanceof/jm/SubClass.<init>()V    
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperInterface2
+    ifeq Label4
+    iconst_4
+    goto LabelExit        
+    
+Label4:
+; !(SubClass[] instanceof SuperInterface)    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SuperInterface
+    ifeq Label6
+    sipush 5
+    goto LabelExit        
+    
+Label6:        
+; (SubClass[] instanceof Object)    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof java/lang/Object
+    ifne Label7
+    sipush 7
+    goto LabelExit        
+
+Label7:        
+; !(SubClass[] instanceof SubClass)    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    ifeq Label8
+    sipush 8
+    goto LabelExit    
+    
+Label8:        
+; (SubClass[] instanceof SuperClass[])    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SubClass
+    instanceof [Ldxc/junit/opcodes/opc_instanceof/jm/SuperClass;
+    ifne Label9
+    sipush 9
+    goto LabelExit
+    
+Label9:        
+; !(SuperClass[] instanceof SubClass[])    
+    iconst_1
+    anewarray dxc/junit/opcodes/opc_instanceof/jm/SuperClass
+    instanceof [Ldxc/junit/opcodes/opc_instanceof/jm/SubClass;
+    ifeq Label0
+    sipush 10
+    goto LabelExit    
+        
+Label0:    
+    iconst_0
+LabelExit:
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.java
new file mode 100644
index 0000000..fa3a477
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.j
new file mode 100644
index 0000000..cd0e33a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_3.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    instanceof [[[Ldxc/junit/opcodes/opc_instanceof/TestStubs$TestStub;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.java
new file mode 100644
index 0000000..919d541
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.cfh
new file mode 100644
index 0000000..6282aac
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.cfh
@@ -0,0 +1,191 @@
+//@class:dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0010
+// .  .  
+   00 10 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 57, h: 0003: utf8{"dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  i  n  s  t  a  n  c  e  o  f  /  j  m  /  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  4  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 2f 6a 6d 2f 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 34 
+    // parsed:, offset 91, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 104, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 128, len 19, h: 0006: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 147, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 156, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 162, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0c 
+    // parsed:, offset 167, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 174, len 3, h: 000b: type{java.lang.String}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 177, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 183, len 26, h: 000d: utf8{"T_opc_instanceof_4.java"}
+    // .  .  .  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  4  .  j  a  v  a  
+       01 00 17 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 209, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 212, len 3, h: 000f: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_4}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 215, len 0, h: end constant_pool
+// parsed:, offset 215, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 217, len 2, h: this_class: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_4}
+// .  .  
+   00 0f 
+// parsed:, offset 219, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 221, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 223, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 225, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 227, len:72,desc: ()V
+// parsed:, offset 227, len 0, h:  methods[0]: 
+    // parsed:, offset 227, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 231, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 233, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 235, len 0, h:  attributes[0]: 
+        // parsed:, offset 235, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 237, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 241, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 243, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 245, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 254, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 256, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 258, len:41,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 258, len 0, h:  methods[1]: 
+    // parsed:, offset 258, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 260, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 262, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 264, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 266, len 0, h:  attributes[0]: 
+        // parsed:, offset 266, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 268, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 272, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 274, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 276, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 1, len 3, h: 0001: instanceof type{java.lang.String}
+        // .  .  .  
+//@mod           c1 00 0b 
+           c1 01 0b 
+        // parsed:, offset 4, len 1, h: 0004: ireturn
+        // .  
+           ac 
+        // parsed:, offset 285, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 287, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 289, len 0, h: end attributes[0] 
+// parsed:, offset 289, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 289, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 291, len 0, h:  attributes[0]: 
+    // parsed:, offset 291, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 293, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 297, len 2, h: source: utf8{"T_opc_instanceof_4.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 299, len 0, h: end attributes[0] 
+// parsed:, offset 299, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.j
new file mode 100644
index 0000000..ecef8ec
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_4.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.java
new file mode 100644
index 0000000..decdb1c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_4 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.j
new file mode 100644
index 0000000..9765c16
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_5.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.java
new file mode 100644
index 0000000..29b53cd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_5 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.j
new file mode 100644
index 0000000..fcba05c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_6.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+;    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.java
new file mode 100644
index 0000000..67ad4b9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_6 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.j
new file mode 100644
index 0000000..7010432
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_7.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    .limit locals 4
+    aload_0
+    ; next: class not found error
+    instanceof [[[Ldxc/junit/opcodes/opc_instanceof/foobar1;
+    pop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.java
new file mode 100644
index 0000000..8842de6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.cfh
new file mode 100644
index 0000000..a680546
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0011
+// .  .  
+   00 11 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 10 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 3, h: 0003: type{java.lang.String}
+    // .  .  .  
+       07 00 0c 
+    // parsed:, offset 37, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 50, len 24, h: 0005: utf8{"(Ljava/lang/Object;)Z"}
+    // .  .  .  (  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  )  Z  
+       01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 29 5a 
+    // parsed:, offset 74, len 26, h: 0006: utf8{"T_opc_instanceof_8.java"}
+    // .  .  .  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  8  .  j  a  v  a  
+       01 00 17 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 38 2e 6a 61 76 61 
+    // parsed:, offset 100, len 9, h: 0007: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 109, len 6, h: 0008: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 115, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 07 00 0e 
+    // parsed:, offset 120, len 57, h: 000a: utf8{"dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8"}
+    // .  .  6  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  i  n  s  t  a  n  c  e  o  f  /  j  m  /  T  _  o  p  c  _  i  n  s  t  a  n  c  e  o  f  _  8  
+       01 00 36 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 2f 6a 6d 2f 54 5f 6f 70 63 5f 69 6e 73 74 61 6e 63 65 6f 66 5f 38 
+    // parsed:, offset 177, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 184, len 19, h: 000c: utf8{"java/lang/String"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  S  t  r  i  n  g  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 
+    // parsed:, offset 203, len 3, h: 000d: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_8}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 206, len 6, h: 000e: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 212, len 5, h: 000f: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 217, len 3, h: 0010: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 220, len 0, h: end constant_pool
+// parsed:, offset 220, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 222, len 2, h: this_class: type{dxc.junit.opcodes.opc_instanceof.jm.T_opc_instanceof_8}
+// .  .  
+   00 0d 
+// parsed:, offset 224, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 10 
+// parsed:, offset 226, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 228, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 230, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 232, len:75,desc: ()V
+// parsed:, offset 232, len 0, h:  methods[0]: 
+    // parsed:, offset 232, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 234, len 2, h: name: <init>
+    // .  .  
+       00 07 
+    // parsed:, offset 236, len 2, h: descriptor: ()V
+    // .  .  
+       00 0e 
+    // parsed:, offset 238, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 240, len 0, h:  attributes[0]: 
+        // parsed:, offset 240, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 242, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 246, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 248, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 259, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 261, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 263, len 0, h: end attributes[0] 
+// parsed:, offset 263, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 263, len:44,desc: (Ljava/lang/Object;)Z
+// parsed:, offset 263, len 0, h:  methods[1]: 
+    // parsed:, offset 263, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 265, len 2, h: name: run
+    // .  .  
+       00 08 
+    // parsed:, offset 267, len 2, h: descriptor: (Ljava/lang/Object;)Z
+    // .  .  
+       00 05 
+    // parsed:, offset 269, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 271, len 0, h:  attributes[0]: 
+        // parsed:, offset 271, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 273, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 277, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 279, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 281, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0f 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 1, h: 0003: aload_1 // 01
+        // +  
+           2b 
+        // parsed:, offset 4, len 3, h: 0004: instanceof type{java.lang.String}
+        // .  .  .  
+//@mod           c1 00 03 
+           c1 00 0f 
+        // parsed:, offset 7, len 1, h: 0007: ireturn
+        // .  
+           ac 
+        // parsed:, offset 293, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 295, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 297, len 0, h: end attributes[0] 
+// parsed:, offset 297, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (Ljava/lang/Object;)Z
+// parsed:, offset 297, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 299, len 0, h:  attributes[0]: 
+    // parsed:, offset 299, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 301, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 305, len 2, h: source: utf8{"T_opc_instanceof_8.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 307, len 0, h: end attributes[0] 
+// parsed:, offset 307, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.j
new file mode 100644
index 0000000..4dd3200
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_instanceof_8.java
+.class public dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+    .limit stack 1
+    .limit locals 2
+    
+    ldc 3.14
+    pop
+    
+    aload_1
+    instanceof java/lang/String
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.java
new file mode 100644
index 0000000..8a4990d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/T_opc_instanceof_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class T_opc_instanceof_8 {
+
+    public boolean run(Object o) {
+        return (o instanceof String);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/TestStubs.java
new file mode 100644
index 0000000..cf54729
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_instanceof/jm/TestStubs.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_instanceof.jm;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // testE1
+    }
+}
+
+interface SuperInterface{
+    
+}
+
+interface SuperInterface2{
+    
+}
+
+class SuperClass implements SuperInterface{
+    
+}
+
+class SubClass extends SuperClass{
+
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/Test_opc_new.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/Test_opc_new.java
new file mode 100644
index 0000000..14b6c64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/Test_opc_new.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_1;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_3;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_4;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_5;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_8;
+import dxc.junit.opcodes.opc_new.jm.T_opc_new_9;
+
+public class Test_opc_new extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_opc_new_1 t = new T_opc_new_1();
+        String s = t.run();
+        assertNotNull(s);
+        assertEquals(0, s.compareTo("abc"));
+    }
+
+    /**
+     * @title expected Error (exception during class loading)
+     */
+    public void testE1() {
+        try {
+            T_opc_new_3.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected IllegalAccessError
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.opc_new.jm.TestStubs$TestStub
+        try {
+            T_opc_new_4 t = new T_opc_new_4();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_opc_new_5 t = new T_opc_new_5();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.18 
+     * @title attempt to instantiate interface
+     */
+    public void testE4() {
+        // @uses dxc.junit.opcodes.opc_new.jm.TestInterface
+        try {
+            T_opc_new_8 t = new T_opc_new_8();
+            t.run();
+            fail("expected InstantiationError");
+        } catch (InstantiationError ie) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.18 
+     * @title attempt to instantiate abstract
+     * class
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.opc_new.jm.TestAbstractClass
+        T_opc_new_9 t = new T_opc_new_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.18
+     * @title attempt to create array using new
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title  Attempt to access uninitialized class (before <init> is
+     * called)
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.16
+     * @title constant pool type
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_new.jm.T_opc_new_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.j
new file mode 100644
index 0000000..63e9ddc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_1.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 3
+    .limit locals 1
+
+    new java/lang/String
+    dup
+    ldc "abc"
+    invokespecial java/lang/String/<init>(Ljava/lang/String;)V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.java
new file mode 100644
index 0000000..9dffdbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_1 {
+
+    public String run() {
+        return new String("abc");
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.cfh
new file mode 100644
index 0000000..acc5a5d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.cfh
@@ -0,0 +1,197 @@
+//@class:dxc/junit/opcodes/opc_new/jm/T_opc_new_10
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000f
+// .  .  
+   00 0f 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 08 
+    // parsed:, offset 15, len 44, h: 0002: utf8{"dxc/junit/opcodes/opc_new/jm/T_opc_new_10"}
+    // .  .  )  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  n  e  w  /  j  m  /  T  _  o  p  c  _  n  e  w  _  1  0  
+       01 00 29 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 6e 65 77 2f 6a 6d 2f 54 5f 6f 70 63 5f 6e 65 77 5f 31 30 
+    // parsed:, offset 59, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 78, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 91, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 100, len 23, h: 0006: utf8{"()Ljava/lang/Object;"}
+    // .  .  .  (  )  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  
+       01 00 14 28 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 
+    // parsed:, offset 123, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 129, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 134, len 20, h: 0009: utf8{"T_opc_new_10.java"}
+    // .  .  .  T  _  o  p  c  _  n  e  w  _  1  0  .  j  a  v  a  
+       01 00 11 54 5f 6f 70 63 5f 6e 65 77 5f 31 30 2e 6a 61 76 61 
+    // parsed:, offset 154, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 161, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 167, len 5, h: 000c: float{0x4048f5c3 / 3.14}
+    // .  @  H  .  .  
+       04 40 48 f5 c3 
+    // parsed:, offset 172, len 3, h: 000d: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_10}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 175, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_10}
+// .  .  
+   00 0d 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 190, len:78,desc: ()V
+// parsed:, offset 190, len 0, h:  methods[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 194, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 196, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 198, len 0, h:  attributes[0]: 
+        // parsed:, offset 198, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 200, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 204, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 206, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 208, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 217, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 219, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 221, len:47,desc: ()Ljava/lang/Object;
+// parsed:, offset 221, len 0, h:  methods[1]: 
+    // parsed:, offset 221, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 223, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 225, len 2, h: descriptor: ()Ljava/lang/Object;
+    // .  .  
+       00 06 
+    // parsed:, offset 227, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 229, len 0, h:  attributes[0]: 
+        // parsed:, offset 229, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 231, len 4, h: length: 00000017
+        // .  .  .  .  
+           00 00 00 17 
+        // parsed:, offset 235, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 237, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 239, len 4, h: code_length: 0000000b
+        // .  .  .  .  
+           00 00 00 0b 
+        // parsed:, offset 0, len 2, h: 0000: ldc #4048f5c3 // 3.14
+        // .  .  
+           12 0c 
+        // parsed:, offset 2, len 1, h: 0002: pop
+        // W  
+           57 
+        // parsed:, offset 3, len 3, h: 0003: new type{java.lang.Object}
+        // .  .  .  
+//@mod           bb 00 0e 
+           bb 00 0c 
+        // parsed:, offset 6, len 1, h: 0006: dup
+        // Y  
+           59 
+        // parsed:, offset 7, len 3, h: 0007: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 10, len 1, h: 000a: areturn
+        // .  
+           b0 
+        // parsed:, offset 254, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 256, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Ljava/lang/Object;
+// parsed:, offset 258, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 260, len 0, h:  attributes[0]: 
+    // parsed:, offset 260, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 262, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 266, len 2, h: source: utf8{"T_opc_new_10.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 268, len 0, h: end attributes[0] 
+// parsed:, offset 268, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.j
new file mode 100644
index 0000000..c55935f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_10.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_10
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    ldc 3.14
+    pop
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.java
new file mode 100644
index 0000000..7b549bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_10 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.j
new file mode 100644
index 0000000..4dd2001
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_2.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_2
+.super java/lang/Object
+
+.field  i I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    aload_0
+    bipush 123
+    putfield dxc.junit.opcodes.opc_new.jm.T_opc_new_2.i I
+
+    return
+.end method
+
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/T_opc_new_2
+    dup
+;    invokespecial dxc/junit/opcodes/opc_new/jm/T_opc_new_2/<init>()V
+    astore_0
+
+    aload_0
+    getfield dxc.junit.opcodes.opc_new.jm.T_opc_new_2.i I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.java
new file mode 100644
index 0000000..4fe58d0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_2.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_2 {
+    
+    int i = 123;
+
+    public static int run() {
+        T_opc_new_2 t = new T_opc_new_2();
+        return t.i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.j
new file mode 100644
index 0000000..b7d35f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.j
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_3.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_3
+.super java/lang/Object
+
+.field static i I
+
+.method static <clinit>()V
+    .limit stack 2
+    .limit locals 0
+
+    bipush 123
+    iconst_0
+    idiv
+    putstatic dxc.junit.opcodes.opc_new.jm.T_opc_new_3.i I
+
+    return
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public static run()I
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/T_opc_new_3
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/T_opc_new_3/<init>()V
+    astore_0
+
+    getstatic dxc.junit.opcodes.opc_new.jm.T_opc_new_3.i I
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.java
new file mode 100644
index 0000000..9a75f14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_3.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_3 {
+
+    static int i = 123 / 0;
+
+    public static int run() {
+        T_opc_new_3 t = new T_opc_new_3();
+        return t.i;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.j
new file mode 100644
index 0000000..e596e9e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_4.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/TestStubs$TestStub
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/TestStubs$TestStub/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.java
new file mode 100644
index 0000000..2a340fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_4 {
+
+     public Object run() {
+            return null;
+     }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.j
new file mode 100644
index 0000000..8ddb620
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_5.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/Foobar
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/Foobar/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.java
new file mode 100644
index 0000000..0892739
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_5 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.cfh
new file mode 100644
index 0000000..10917fa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.cfh
@@ -0,0 +1,188 @@
+//@class:dxc/junit/opcodes/opc_new/jm/T_opc_new_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 23, h: 0007: utf8{"()Ljava/lang/Object;"}
+    // .  .  .  (  )  L  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  ;  
+       01 00 14 28 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 3b 
+    // parsed:, offset 90, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 97, len 43, h: 0009: utf8{"dxc/junit/opcodes/opc_new/jm/T_opc_new_6"}
+    // .  .  (  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  o  p  c  _  n  e  w  /  j  m  /  T  _  o  p  c  _  n  e  w  _  6  
+       01 00 28 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 6f 70 63 5f 6e 65 77 2f 6a 6d 2f 54 5f 6f 70 63 5f 6e 65 77 5f 36 
+    // parsed:, offset 140, len 3, h: 000a: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_6}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 143, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 149, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 152, len 19, h: 000d: utf8{"T_opc_new_6.java"}
+    // .  .  .  T  _  o  p  c  _  n  e  w  _  6  .  j  a  v  a  
+       01 00 10 54 5f 6f 70 63 5f 6e 65 77 5f 36 2e 6a 61 76 61 
+// parsed:, offset 171, len 0, h: end constant_pool
+// parsed:, offset 171, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 173, len 2, h: this_class: type{dxc.junit.opcodes.opc_new.jm.T_opc_new_6}
+// .  .  
+   00 0a 
+// parsed:, offset 175, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 177, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 179, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 181, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 183, len:75,desc: ()V
+// parsed:, offset 183, len 0, h:  methods[0]: 
+    // parsed:, offset 183, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 185, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 187, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 189, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 191, len 0, h:  attributes[0]: 
+        // parsed:, offset 191, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 193, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 197, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 199, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 201, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 210, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 212, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 214, len 0, h: end attributes[0] 
+// parsed:, offset 214, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 214, len:44,desc: ()Ljava/lang/Object;
+// parsed:, offset 214, len 0, h:  methods[1]: 
+    // parsed:, offset 214, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 216, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 218, len 2, h: descriptor: ()Ljava/lang/Object;
+    // .  .  
+       00 07 
+    // parsed:, offset 220, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 222, len 0, h:  attributes[0]: 
+        // parsed:, offset 222, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 224, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 228, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 230, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 232, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: new type{java.lang.Object}
+        // .  .  .  
+//@mod           bb 00 0c 
+           bb 01 0c 
+        // parsed:, offset 3, len 1, h: 0003: dup
+        // Y  
+           59 
+        // parsed:, offset 4, len 3, h: 0004: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 7, len 1, h: 0007: areturn
+        // .  
+           b0 
+        // parsed:, offset 244, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 246, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 248, len 0, h: end attributes[0] 
+// parsed:, offset 248, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()Ljava/lang/Object;
+// parsed:, offset 248, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 250, len 0, h:  attributes[0]: 
+    // parsed:, offset 250, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 252, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 256, len 2, h: source: utf8{"T_opc_new_6.java"}
+    // .  .  
+       00 0d 
+// parsed:, offset 258, len 0, h: end attributes[0] 
+// parsed:, offset 258, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.j
new file mode 100644
index 0000000..a6c2e14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_6.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.java
new file mode 100644
index 0000000..3ff3df7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_6 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.j
new file mode 100644
index 0000000..482b25e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_7.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new [Ljava/lang/Object;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.java
new file mode 100644
index 0000000..37256b4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_7 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.j
new file mode 100644
index 0000000..8ca522d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_8.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/TestInterface
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/TestInterface/<init>()V
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.java
new file mode 100644
index 0000000..dfe9621
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_8 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.j
new file mode 100644
index 0000000..688c678
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_new_9.java
+.class public dxc/junit/opcodes/opc_new/jm/T_opc_new_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/opcodes/opc_new/jm/TestAbstractClass
+    dup
+    invokespecial dxc/junit/opcodes/opc_new/jm/TestAbstractClass/<init>()V
+
+    aload_0
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.java
new file mode 100644
index 0000000..8999e7f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/T_opc_new_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+public class T_opc_new_9 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/TestStubs.java
new file mode 100644
index 0000000..7d8214a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_new/jm/TestStubs.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_new.jm;
+
+
+interface TestInterface {
+    public abstract void test();
+}
+
+abstract class TestAbstractClass{
+    
+}
+
+public class TestStubs {
+    private static @SuppressWarnings("unused") class TestStub {
+        private TestStub() {
+            
+        }
+        // testE3
+    }
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/Test_opc_return.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/Test_opc_return.java
new file mode 100644
index 0000000..98b4c94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/Test_opc_return.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_return;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_1;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_2;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_3;
+import dxc.junit.opcodes.opc_return.jm.T_opc_return_4;
+
+public class Test_opc_return extends DxTestCase {
+
+    /**
+     * @title  check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_opc_return_1 t = new T_opc_return_1();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title  check that monitor is released by return
+     */
+    public void testN2() {
+        assertTrue(T_opc_return_2.execute());
+    }
+
+
+    /**
+     * @title  Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_opc_return_3 t = new T_opc_return_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @title  Lock structural rule 1 is violated
+     */
+    public void testE2() {
+        T_opc_return_4 t = new T_opc_return_4();
+        try {
+            t.run();
+            // the JVM spec says that it is optional to implement the structural
+            // lock rules, see JVM spec 8.13 and monitorenter/exit opcodes.
+            System.out.print("dvmvfe:");
+            //fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_return.jm.T_opc_return_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_return.jm.T_opc_return_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.j
new file mode 100644
index 0000000..fe94d2e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.j
@@ -0,0 +1,82 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_return_1.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit locals 6
+    .limit stack 6
+    
+    iconst_1
+    istore_1
+    iconst_2
+    istore_2
+    iconst_3
+    istore 3
+    
+    iconst_4
+    
+    invokestatic dxc/junit/opcodes/opc_return/jm/T_opc_return_1/test()V
+    
+    iconst_4
+    if_icmpne Label0
+    
+    iload_1
+    iconst_1
+    if_icmpne Label0
+    
+    iload_2
+    iconst_2
+    if_icmpne Label0
+    
+    iload_3
+    iconst_3
+    if_icmpne Label0    
+    
+    ldc 123456
+    ireturn
+
+Label1:
+    pop
+Label0:
+    iconst_0
+    ireturn
+
+.end method
+
+.method private static test()V
+    .limit locals 4
+    .limit stack 4
+    
+    ldc 0xaaa
+    istore_1
+    ldc 0xbbbb
+    istore_2
+    ldc 0xcccc
+    istore_3
+    
+    ldc 0xdddd
+    
+    ldc 0xcafe
+    return
+    
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.java
new file mode 100644
index 0000000..b2170ff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_1.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_1 {
+
+    public int run() {
+        return 123456;
+    }
+    
+    private static void test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.j
new file mode 100644
index 0000000..b6f383b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.j
@@ -0,0 +1,159 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_return_2.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_2
+.super java/lang/Object
+.implements java/lang/Runnable
+
+.field  value I
+.field  failed Z
+
+.method public <init>()V
+    .limit stack 3
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.failed Z
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+   
+    iconst_0
+    istore_1
+
+Label4:
+    iload_1
+    sipush 1000
+    if_icmpge Label3
+
+    aload_0
+    invokespecial dxc/junit/opcodes/opc_return/jm/T_opc_return_2/test()V
+
+    iinc 1 1
+
+    goto Label4
+
+
+Label3:
+    return
+
+.end method
+
+
+
+.method private synchronized test()V
+    .limit stack 3
+    .limit locals 2
+    
+.line 16
+    aload_0
+    dup
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+    dup
+    istore_1
+
+    iconst_1
+    iadd
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+
+    iinc 1 1
+
+    invokestatic java/lang/Thread/yield()V
+
+    iload_1
+    aload_0
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+    if_icmpeq Label0
+
+    aload_0
+    iconst_1
+    putfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.failed Z
+
+Label0:
+    return
+.end method
+
+
+
+.method public static execute()Z
+    .limit stack 3
+    .limit locals 4
+
+    new dxc/junit/opcodes/opc_return/jm/T_opc_return_2
+    dup
+    invokespecial dxc/junit/opcodes/opc_return/jm/T_opc_return_2/<init>()V
+    astore_0
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_1
+
+    new java/lang/Thread
+    dup
+    aload_0
+    invokespecial java/lang/Thread/<init>(Ljava/lang/Runnable;)V
+    astore_2
+
+    aload_1
+    invokevirtual java/lang/Thread/start()V
+
+    aload_2
+    invokevirtual java/lang/Thread/start()V
+
+Label12:
+    ldc2_w 5000
+    invokestatic java/lang/Thread/sleep(J)V
+
+Label13:
+    goto Label0
+
+Label14:            ; exception handler
+    astore_3
+    goto Label3
+
+Label0:
+    aload_0
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.value I
+    sipush 2000
+    if_icmpne Label3
+
+    aload_0
+    getfield dxc.junit.opcodes.opc_return.jm.T_opc_return_2.failed Z
+    ifne Label3
+
+    iconst_1
+    ireturn
+
+Label3:
+    iconst_0
+    ireturn
+
+.catch java/lang/InterruptedException from Label12 to Label13 using Label14
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.java
new file mode 100644
index 0000000..b70986f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_2.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_2 implements Runnable {
+    public final static int CNT = 1000;
+    int value = 0;
+    boolean failed = false;
+    
+    public void run() {
+        for(int i = 0; i < CNT; i++) {
+            test();
+        }
+    }
+    
+    private synchronized void test()    {
+        value++;
+        int c = value;
+        Thread.yield();
+        if(c != value)
+            failed = true;
+    }
+    
+    public static boolean execute() {
+        T_opc_return_2 test = new T_opc_return_2();
+        Thread t1 = new Thread(test);
+        Thread t2 = new Thread(test);
+        
+        t1.start();
+        t2.start();
+        
+        try
+        {
+            Thread.sleep(5000);
+        }
+        catch(InterruptedException ie) {
+            return false;
+        }
+        
+        if(test.value != CNT * 2)
+            return false;
+        return !test.failed;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.j
new file mode 100644
index 0000000..33b99cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_return_3.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method private synchronized test()V
+    .limit stack 1
+    aload_0
+    monitorexit
+    return
+.end method
+
+
+
+.method public run()Z
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial dxc/junit/opcodes/opc_return/jm/T_opc_return_3/test()V
+
+    iconst_1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.java
new file mode 100644
index 0000000..1e1ee36
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_3 {
+    
+    private synchronized void test() {
+        return;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.j
new file mode 100644
index 0000000..80c1778
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_return_4.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    monitorenter
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.java
new file mode 100644
index 0000000..89dddd5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_4 {
+    
+    public void run() {
+        return;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.j
new file mode 100644
index 0000000..aa2d8bc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_return_5.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.java
new file mode 100644
index 0000000..4025b84
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_5 {
+
+    public void run() {
+        return;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.j b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.j
new file mode 100644
index 0000000..f286394
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_opc_return_6.java
+.class public dxc/junit/opcodes/opc_return/jm/T_opc_return_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Ljava/lang/String;
+    .limit stack 1
+    .limit locals 1
+
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.java b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.java
new file mode 100644
index 0000000..27def5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/opc_return/jm/T_opc_return_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.opc_return.jm;
+
+public class T_opc_return_6 {
+    
+    public void run() {
+        return;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/Test_pop.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/Test_pop.java
new file mode 100644
index 0000000..893b425
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/Test_pop.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.pop.jm.T_pop_1;
+import dxc.junit.opcodes.pop.jm.T_pop_2;
+
+public class Test_pop extends DxTestCase {
+
+    /**
+     * @title  type of argument - int
+     */
+    public void testN1() {
+        T_pop_1 t = new T_pop_1();
+        assertEquals(1234, t.run());
+    }
+
+    /**
+     * @title  type of argument - float
+     */
+    public void testN2() {
+        T_pop_2 t = new T_pop_2();
+        assertEquals(1234f, t.run());
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop.jm.T_pop_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop.jm.T_pop_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.j
new file mode 100644
index 0000000..730d4a6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop_1.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 2
+    
+    sipush 1234
+    sipush 5678
+    pop
+    
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.java
new file mode 100644
index 0000000..d1f799e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_1 {
+
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.j
new file mode 100644
index 0000000..19977d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop_2.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()F
+    .limit stack 2
+    .limit locals 2
+    ldc 1234.0
+    ldc 5678.0
+    pop
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.java
new file mode 100644
index 0000000..b14351a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_2 {
+
+    public float run() {
+        return 1234f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.j
new file mode 100644
index 0000000..ce81ca5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop_3.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 2
+    .limit locals 3
+    sipush 1234
+;    sipush 1234    
+    pop
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.java
new file mode 100644
index 0000000..46c4574
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_3 {
+
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.j b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.j
new file mode 100644
index 0000000..3f9f52c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop_4.java
+.class public dxc/junit/opcodes/pop/jm/T_pop_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 3
+    .limit locals 3
+
+    sipush 1234
+    lconst_1
+
+    pop
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.java b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.java
new file mode 100644
index 0000000..5c2bd53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop/jm/T_pop_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop.jm;
+
+public class T_pop_4 {
+
+    public int run() {
+        return 1234;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/Test_pop2.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/Test_pop2.java
new file mode 100644
index 0000000..01af289
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/Test_pop2.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.pop2.jm.T_pop2_1;
+import dxc.junit.opcodes.pop2.jm.T_pop2_2;
+
+public class Test_pop2 extends DxTestCase {
+
+    /**
+     * @title  type of argument - long
+     */
+    public void testN1() {
+        T_pop2_1 t = new T_pop2_1();
+        assertEquals(1234l, t.run());
+    }
+
+    /**
+     * @title  type of argument - double
+     */
+    public void testN2() {
+        T_pop2_2 t = new T_pop2_2();
+        assertEquals(1234d, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop2.jm.T_pop2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.pop2.jm.T_pop2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.j
new file mode 100644
index 0000000..ce2c92a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop2_1.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 4
+    .limit locals 2
+    
+    ldc2_w 1234
+    ldc2_w 5678
+    pop2
+    
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.java
new file mode 100644
index 0000000..5d21090
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_1 {
+
+    public long run() {
+        return 1234l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.j
new file mode 100644
index 0000000..d184609
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop2_2.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()D
+    .limit stack 4
+    .limit locals 2
+    ldc2_w 1234.0
+    ldc2_w 5678.0
+    pop2
+    dreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.java
new file mode 100644
index 0000000..329658a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_2 {
+
+    public double run() {
+        return 1234d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.j
new file mode 100644
index 0000000..82b7a69
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop2_3.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 2
+    .limit locals 3
+    ldc2_w 1234
+;    ldc2_w 1234    
+    pop2
+    lreturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.java
new file mode 100644
index 0000000..1b5fefc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_3 {
+
+    public long run() {
+        return 1234l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.j b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.j
new file mode 100644
index 0000000..5b49788
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_pop2_4.java
+.class public dxc/junit/opcodes/pop2/jm/T_pop2_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()J
+    .limit stack 3
+    .limit locals 3
+
+    ldc2_w 1234
+    iconst_1
+
+    pop2
+
+    lreturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.java b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.java
new file mode 100644
index 0000000..9b3c66e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/pop2/jm/T_pop2_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.pop2.jm;
+
+public class T_pop2_4 {
+
+    public long run() {
+        return 1234l;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/TPutfield.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/TPutfield.java
new file mode 100644
index 0000000..e417405
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/TPutfield.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield;
+
+class TPutfield {
+    // used by testE2
+    @SuppressWarnings("unused")
+    private int TestStubField = 0;
+
+    // used by testE7
+    protected int TestStubFieldP = 0;
+
+    // used by testE5
+    public final int TestStubFieldFinal = 0;
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/Test_putfield.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/Test_putfield.java
new file mode 100644
index 0000000..dd9b11a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/Test_putfield.java
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.putfield.jm.T_putfield_1;
+import dxc.junit.opcodes.putfield.jm.T_putfield_10;
+import dxc.junit.opcodes.putfield.jm.T_putfield_11;
+import dxc.junit.opcodes.putfield.jm.T_putfield_12;
+import dxc.junit.opcodes.putfield.jm.T_putfield_13;
+import dxc.junit.opcodes.putfield.jm.T_putfield_14;
+import dxc.junit.opcodes.putfield.jm.T_putfield_15;
+import dxc.junit.opcodes.putfield.jm.T_putfield_16;
+import dxc.junit.opcodes.putfield.jm.T_putfield_18;
+import dxc.junit.opcodes.putfield.jm.T_putfield_2;
+import dxc.junit.opcodes.putfield.jm.T_putfield_7;
+import dxc.junit.opcodes.putfield.jm.T_putfield_8;
+import dxc.junit.opcodes.putfield.jm.T_putfield_9;
+
+public class Test_putfield extends DxTestCase {
+
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_putfield_1 t = new T_putfield_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_putfield_2 t = new T_putfield_2();
+        assertEquals(0d, t.st_d1);
+        t.run();
+        assertEquals(1000000d, t.st_d1);
+    }
+
+    /**
+     * @title  modification of final field
+     */
+    public void testN3() {
+        T_putfield_12 t = new T_putfield_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title  modification of protected field from subclass
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.putfield.jm.T_putfield_1
+        T_putfield_14 t = new T_putfield_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(1000000, t.getProtectedField());
+    }
+
+    /**
+     * @title  assignment compatible object references
+     */
+    public void testN5() {
+        // @uses dxc.junit.opcodes.putfield.jm.TChild
+        // @uses dxc.junit.opcodes.putfield.jm.TSuper
+        T_putfield_18 t = new T_putfield_18();
+        assertEquals(0, t.run().compareTo("xyz"));
+    }
+
+    /**
+     * @title  assignment compatible values
+     */
+    public void testN6() {
+        T_putfield_16 t = new T_putfield_16();
+        assertNull(t.o);
+        t.run();
+        assertEquals("", (String) t.o);
+    }
+
+    /**
+     * @title  attempt to set static field
+     */
+    public void testE1() {
+        try {
+            T_putfield_7 t = new T_putfield_7();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  modification of non-accessible private field
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.putfield.TPutfield
+        try {
+            T_putfield_8 t = new T_putfield_8();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_putfield_9 t = new T_putfield_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+        T_putfield_10 t = new T_putfield_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Modification of final field in other class
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.putfield.TPutfield
+        try {
+            T_putfield_11 t = new T_putfield_11();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+
+    //  FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  modification of superclass' private field from subclass
+     * FIXME: is this a JVM bug?
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.putfield.jm.T_putfield_1
+        try {
+            T_putfield_15 t = new T_putfield_15();
+            assertEquals(0, t.getPvtField());
+            t.run();
+            assertEquals(10101, t.getPvtField());
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  modification of non-accessible protected field
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.putfield.TPutfield
+        try {
+            T_putfield_13 t = new T_putfield_13();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - float instead of
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible references
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible values
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.16
+     * @title type of argument - assignment
+     * incompatible object references
+     */
+    public void testVFE6() {
+        // @uses dxc.junit.opcodes.putfield.jm.TChild
+        // @uses dxc.junit.opcodes.putfield.jm.TSuper
+        try {
+            Class.forName("dxc.junit.opcodes.putfield.jm.T_putfield_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.j
new file mode 100644
index 0000000..05a16e5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_1.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_1
+.super java/lang/Object
+
+.field public st_i1 I
+.field protected st_p1 I
+.field private st_pvt1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_i1 I
+    return
+.end method
+
+.method public getPvtField()I
+   aload_0    
+   getfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_pvt1 I
+   ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.java
new file mode 100644
index 0000000..23ae850
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_1 {
+    public int st_i1;
+    protected int st_p1;
+    private int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.j
new file mode 100644
index 0000000..858ee70
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_10.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_10.st_i1N I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.java
new file mode 100644
index 0000000..361e4f8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_10 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.j
new file mode 100644
index 0000000..f11374f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_11.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/putfield/TPutfield
+    dup
+    invokespecial dxc/junit/opcodes/putfield/TPutfield/<init>()V
+
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.TPutfield.TestStubFieldFinal I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.java
new file mode 100644
index 0000000..e24a160
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+
+public class T_putfield_11 {
+    public void run() {
+        
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.j
new file mode 100644
index 0000000..7650f55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_12.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_12
+.super java/lang/Object
+
+.field public final st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_12.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.java
new file mode 100644
index 0000000..c40a5e8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_12 {
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.j
new file mode 100644
index 0000000..0269325
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_13.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    
+    new dxc/junit/opcodes/putfield/TPutfield
+    dup
+    invokespecial dxc/junit/opcodes/putfield/TPutfield/<init>()V
+    
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.TPutfield.TestStubFieldP I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.java
new file mode 100644
index 0000000..3c2708b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_13 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.j
new file mode 100644
index 0000000..4a7ef88
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_14.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_14
+.super dxc/junit/opcodes/putfield/jm/T_putfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putfield/jm/T_putfield_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_p1 I
+    return
+.end method
+
+.method public getProtectedField()I
+    .limit stack 2
+    aload_0
+    getfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_p1 I
+    ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.java
new file mode 100644
index 0000000..8ba1e76
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_14 extends T_putfield_1{
+    
+    public void run() {
+        st_p1 = 1000000;
+    }
+    
+    public int getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.j
new file mode 100644
index 0000000..ee2c082
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_15.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_15
+.super dxc/junit/opcodes/putfield/jm/T_putfield_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putfield/jm/T_putfield_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 10101
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_1.st_pvt1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.java
new file mode 100644
index 0000000..fabb97a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_15 extends T_putfield_1{
+    
+    public void run() {
+        throw new UnsupportedOperationException();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.j
new file mode 100644
index 0000000..d62bb32
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_16.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_16
+.super java/lang/Object
+
+.field public o Ljava/lang/Object;
+
+
+.method public <init>()V
+    .limit stack 2
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    aconst_null
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_16.o Ljava/lang/Object;
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 4
+    .limit locals 2
+
+    aload_0
+    new java/lang/String
+    dup
+    ldc ""
+    invokespecial java/lang/String/<init>(Ljava/lang/String;)V
+
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_16.o Ljava/lang/Object;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.java
new file mode 100644
index 0000000..3ea025e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_16.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_16 {
+
+    public Object o = null;
+    
+    public void run() {
+        String s = new String("");
+        o = s;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.cfh
new file mode 100644
index 0000000..b32c3df
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.cfh
@@ -0,0 +1,216 @@
+//@class:dxc/junit/opcodes/putfield/jm/T_putfield_17
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 0a 
+    // parsed:, offset 15, len 5, h: 0002: field{dxc.junit.opcodes.putfield.jm.T_putfield_17.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0c 00 10 
+    // parsed:, offset 20, len 46, h: 0003: utf8{"dxc/junit/opcodes/putfield/jm/T_putfield_17"}
+    // .  .  +  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  f  i  e  l  d  /  j  m  /  T  _  p  u  t  f  i  e  l  d  _  1  7  
+       01 00 2b 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 70 75 74 66 69 65 6c 64 5f 31 37 
+    // parsed:, offset 66, len 19, h: 0004: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 85, len 21, h: 0005: utf8{"T_putfield_17.java"}
+    // .  .  .  T  _  p  u  t  f  i  e  l  d  _  1  7  .  j  a  v  a  
+       01 00 12 54 5f 70 75 74 66 69 65 6c 64 5f 31 37 2e 6a 61 76 61 
+    // parsed:, offset 106, len 5, h: 0006: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 111, len 13, h: 0007: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 124, len 9, h: 0008: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 133, len 6, h: 0009: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 139, len 5, h: 000a: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 08 00 0d 
+    // parsed:, offset 144, len 7, h: 000b: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 151, len 3, h: 000c: type{dxc.junit.opcodes.putfield.jm.T_putfield_17}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 154, len 6, h: 000d: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 160, len 8, h: 000e: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 168, len 4, h: 000f: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 172, len 5, h: 0010: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0e 00 0f 
+    // parsed:, offset 177, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 04 
+// parsed:, offset 180, len 0, h: end constant_pool
+// parsed:, offset 180, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 182, len 2, h: this_class: type{dxc.junit.opcodes.putfield.jm.T_putfield_17}
+// .  .  
+   00 0c 
+// parsed:, offset 184, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 186, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 188, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 190, len:84,desc: I
+// parsed:, offset 190, len 0, h:  fields[0]: 
+    // parsed:, offset 190, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 192, len 2, h: name: st_i1
+    // .  .  
+       00 0e 
+    // parsed:, offset 194, len 2, h: descriptor: I
+    // .  .  
+       00 0f 
+    // parsed:, offset 196, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 198, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 198, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 200, len:74,desc: ()V
+// parsed:, offset 200, len 0, h:  methods[0]: 
+    // parsed:, offset 200, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 202, len 2, h: name: <init>
+    // .  .  
+       00 08 
+    // parsed:, offset 204, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 206, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 208, len 0, h:  attributes[0]: 
+        // parsed:, offset 208, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 210, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 214, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 216, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 218, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 227, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 229, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 231, len 0, h: end attributes[0] 
+// parsed:, offset 231, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 231, len:43,desc: ()V
+// parsed:, offset 231, len 0, h:  methods[1]: 
+    // parsed:, offset 231, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 233, len 2, h: name: run
+    // .  .  
+       00 09 
+    // parsed:, offset 235, len 2, h: descriptor: ()V
+    // .  .  
+       00 0d 
+    // parsed:, offset 237, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 239, len 0, h:  attributes[0]: 
+        // parsed:, offset 239, len 2, h: name: Code
+        // .  .  
+           00 0b 
+        // parsed:, offset 241, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 245, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 247, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 249, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 2, h: 0001: ldc #+000f4240
+        // .  .  
+           12 06 
+        // parsed:, offset 3, len 3, h: 0003: putfield field{dxc.junit.opcodes.putfield.jm.T_putfield_17.st_i1:I}
+        // .  .  .  
+//@mod           b5 00 02 
+           b5 00 06 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 260, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 262, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 264, len 0, h: end attributes[0] 
+// parsed:, offset 264, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 264, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 266, len 0, h:  attributes[0]: 
+    // parsed:, offset 266, len 2, h: name: SourceFile
+    // .  .  
+       00 07 
+    // parsed:, offset 268, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 272, len 2, h: source: utf8{"T_putfield_17.java"}
+    // .  .  
+       00 05 
+// parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.j
new file mode 100644
index 0000000..03b2c62
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_17.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_17
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_17.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.java
new file mode 100644
index 0000000..be58b94
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_17.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_17 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.j
new file mode 100644
index 0000000..602550d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_18.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_18
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()Ljava/lang/String;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/putfield/jm/TChild
+    dup
+    invokespecial dxc/junit/opcodes/putfield/jm/TChild/<init>()V
+    astore_1
+
+    aload_1
+    ldc "xyz"
+    putfield dxc.junit.opcodes.putfield.jm.TSuper.s Ljava/lang/String;
+
+    aload_1
+    getfield dxc.junit.opcodes.putfield.jm.TChild.s Ljava/lang/String;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.java
new file mode 100644
index 0000000..617bac2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_18.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_18 {
+
+    public String run() {
+        TChild c = new TChild();
+        c.s = "xyz";
+        return c.s;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.j
new file mode 100644
index 0000000..3f61b8c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.j
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_19.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_19
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()Ljava/lang/Object;
+    .limit stack 2
+    .limit locals 2
+
+    new dxc/junit/opcodes/putfield/jm/TSuper
+    dup
+    invokespecial dxc/junit/opcodes/putfield/jm/TSuper/<init>()V
+    astore_1
+
+    aload_1
+    getfield dxc.junit.opcodes.putfield.jm.TChild.o Ljava/lang/Object;
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.java
new file mode 100644
index 0000000..fd9d29e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_19.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_19 {
+
+    public Object run() {
+        TChild c = new TChild();
+        return c.o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.j
new file mode 100644
index 0000000..8414dfd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_2.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_2
+.super java/lang/Object
+
+.field public st_d1 D
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 3
+    aload_0
+    ldc2_w 1000000.0
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_2.st_d1 D
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.java
new file mode 100644
index 0000000..bd039eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_2 {
+
+    public double st_d1;
+    
+    public void run() {
+        st_d1 = 1000000d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.j
new file mode 100644
index 0000000..7aaf9b5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_20.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_20
+.super java/lang/Object
+
+.field public v I
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    ldc 3.14
+    
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_20.v I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.java
new file mode 100644
index 0000000..ebe55eb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_20.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_20 {
+
+    public int v;
+    
+    public void run() {
+        v = (int)3.14;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.cfh
new file mode 100644
index 0000000..887ad58
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.cfh
@@ -0,0 +1,216 @@
+//@class:dxc/junit/opcodes/putfield/jm/T_putfield_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0e 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 74, len 5, h: 0008: field{dxc.junit.opcodes.putfield.jm.T_putfield_3.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0f 00 0d 
+    // parsed:, offset 79, len 5, h: 0009: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 84, len 20, h: 000a: utf8{"T_putfield_3.java"}
+    // .  .  .  T  _  p  u  t  f  i  e  l  d  _  3  .  j  a  v  a  
+       01 00 11 54 5f 70 75 74 66 69 65 6c 64 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 104, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 110, len 8, h: 000c: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 118, len 5, h: 000d: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0c 00 10 
+    // parsed:, offset 123, len 3, h: 000e: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 126, len 3, h: 000f: type{dxc.junit.opcodes.putfield.jm.T_putfield_3}
+    // .  .  .  
+       07 00 11 
+    // parsed:, offset 129, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 133, len 45, h: 0011: utf8{"dxc/junit/opcodes/putfield/jm/T_putfield_3"}
+    // .  .  *  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  f  i  e  l  d  /  j  m  /  T  _  p  u  t  f  i  e  l  d  _  3  
+       01 00 2a 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 66 69 65 6c 64 2f 6a 6d 2f 54 5f 70 75 74 66 69 65 6c 64 5f 33 
+// parsed:, offset 178, len 0, h: end constant_pool
+// parsed:, offset 178, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 180, len 2, h: this_class: type{dxc.junit.opcodes.putfield.jm.T_putfield_3}
+// .  .  
+   00 0f 
+// parsed:, offset 182, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0e 
+// parsed:, offset 184, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 186, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 188, len:84,desc: I
+// parsed:, offset 188, len 0, h:  fields[0]: 
+    // parsed:, offset 188, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 2, h: name: st_i1
+    // .  .  
+       00 0c 
+    // parsed:, offset 192, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 194, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 196, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 196, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 198, len:74,desc: ()V
+// parsed:, offset 198, len 0, h:  methods[0]: 
+    // parsed:, offset 198, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 200, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 202, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 204, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 206, len 0, h:  attributes[0]: 
+        // parsed:, offset 206, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 208, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 212, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 214, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 216, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 225, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 227, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 229, len 0, h: end attributes[0] 
+// parsed:, offset 229, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 229, len:43,desc: ()V
+// parsed:, offset 229, len 0, h:  methods[1]: 
+    // parsed:, offset 229, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 231, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 233, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 235, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 237, len 0, h:  attributes[0]: 
+        // parsed:, offset 237, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 239, len 4, h: length: 00000013
+        // .  .  .  .  
+           00 00 00 13 
+        // parsed:, offset 243, len 2, h: max_stack: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 245, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 247, len 4, h: code_length: 00000007
+        // .  .  .  .  
+           00 00 00 07 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 2, h: 0001: ldc #+000f4240
+        // .  .  
+           12 09 
+        // parsed:, offset 3, len 3, h: 0003: putfield field{dxc.junit.opcodes.putfield.jm.T_putfield_3.st_i1:I}
+        // .  .  .  
+//@mod:           b5 00 08 
+           b5 01 08 
+        // parsed:, offset 6, len 1, h: 0006: return
+        // .  
+           b1 
+        // parsed:, offset 258, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 260, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 262, len 0, h: end attributes[0] 
+// parsed:, offset 262, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 262, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 264, len 0, h:  attributes[0]: 
+    // parsed:, offset 264, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 266, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 270, len 2, h: source: utf8{"T_putfield_3.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 272, len 0, h: end attributes[0] 
+// parsed:, offset 272, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.j
new file mode 100644
index 0000000..10d3f53
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_3.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_3
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_3.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.java
new file mode 100644
index 0000000..6c7216e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_3 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.j
new file mode 100644
index 0000000..5a4195a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_4.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_4
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+;    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_4.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.java
new file mode 100644
index 0000000..142d193
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_4 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.j
new file mode 100644
index 0000000..6ccc8c0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_5.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_5
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+;    ldc 1000000
+    fconst_1
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_5.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.java
new file mode 100644
index 0000000..9be3923
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_5 {
+
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.j
new file mode 100644
index 0000000..916a084
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_6.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_6
+.super java/lang/Object
+
+.field public s Ljava/lang/String;
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_6.s Ljava/lang/String;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.java
new file mode 100644
index 0000000..63855a0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_6.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_6 {
+
+    public String s;
+    
+    public void run() {
+        Object o = new Object();
+        s = (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.j
new file mode 100644
index 0000000..a3088a5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_7.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_7
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aload_0
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_7.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.java
new file mode 100644
index 0000000..54bd49f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_7 {
+    public int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.j
new file mode 100644
index 0000000..07e9b12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_8.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    
+    new dxc/junit/opcodes/putfield/TPutfield
+    dup
+    invokespecial dxc/junit/opcodes/putfield/TPutfield/<init>()V
+    
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.TPutfield.TestStubField I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.java
new file mode 100644
index 0000000..4860faf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_8 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.j b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.j
new file mode 100644
index 0000000..79bd8114
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putfield_9.java
+.class public dxc/junit/opcodes/putfield/jm/T_putfield_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    aconst_null
+    ldc 1000000
+    putfield dxc.junit.opcodes.putfield.jm.T_putfield_9.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.java
new file mode 100644
index 0000000..33b7c7a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/T_putfield_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+public class T_putfield_9 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/TestStubs.java
new file mode 100644
index 0000000..de2dcc6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putfield/jm/TestStubs.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putfield.jm;
+
+
+
+class TSuper {
+    public String s = "abc";
+}
+
+class TChild extends TSuper {
+    public Object o = null;    
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/TestStubs.java
new file mode 100644
index 0000000..64a481a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic;
+
+public class TestStubs {
+    // used by testE2
+    static int TestStubField = 0;
+
+    // used by testE5
+    public static final int TestStubFieldFinal = 0;
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/Test_putstatic.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/Test_putstatic.java
new file mode 100644
index 0000000..9d438d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/Test_putstatic.java
@@ -0,0 +1,286 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_1;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_10;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_11;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_12;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_13;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_14;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_15;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_16;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_2;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_7;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_8;
+import dxc.junit.opcodes.putstatic.jm.T_putstatic_9;
+
+public class Test_putstatic extends DxTestCase {
+
+    /**
+     * @title  type - int
+     */
+    public void testN1() {
+        T_putstatic_1 t = new T_putstatic_1();
+        assertEquals(0, T_putstatic_1.st_i1);
+        t.run();
+        assertEquals(1000000, T_putstatic_1.st_i1);
+    }
+
+    /**
+     * @title  type - double
+     */
+    public void testN2() {
+        T_putstatic_2 t = new T_putstatic_2();
+        assertEquals(0d, T_putstatic_2.st_d1);
+        t.run();
+        assertEquals(1000000d, T_putstatic_2.st_d1);
+    }
+
+    /**
+     * @title  modification of final field
+     */
+    public void testN3() {
+        T_putstatic_12 t = new T_putstatic_12();
+        assertEquals(0, T_putstatic_12.st_i1);
+        t.run();
+        assertEquals(1000000, T_putstatic_12.st_i1);
+    }
+
+    /**
+     * @title  modification of protected field from subclass
+     */
+    public void testN4() {
+        // @uses dxc.junit.opcodes.putstatic.jm.T_putstatic_1
+        T_putstatic_14 t = new T_putstatic_14();
+        assertEquals(0, T_putstatic_14.getProtectedField());
+        t.run();
+        assertEquals(1000000, T_putstatic_14.getProtectedField());
+    }
+
+    /**
+     * @title  assignment compatible references
+     */
+    public void testN5() {
+        T_putstatic_16 t = new T_putstatic_16();
+        assertNull(T_putstatic_16.o);
+        t.run();
+        assertEquals("", (String) T_putstatic_16.o);
+    }
+
+    /**
+     * @title  attempt to set non-static field
+     */
+    public void testE1() {
+        try {
+            T_putstatic_7 t = new T_putstatic_7();
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  modification of non-accessible field
+     */
+    public void testE2() {
+        // @uses dxc.junit.opcodes.putstatic.TestStubs
+        try {
+            T_putstatic_8 t = new T_putstatic_8();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoClassDefFoundError
+     */
+    public void testE3() {
+        try {
+            T_putstatic_9 t = new T_putstatic_9();
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title expected NoSuchFieldError
+     */
+    public void testE4() {
+        try {
+            T_putstatic_10 t = new T_putstatic_10();
+            t.run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  Modification of final field in other class
+     */
+    public void testE5() {
+        // @uses dxc.junit.opcodes.putstatic.TestStubs
+        try {
+            T_putstatic_11 t = new T_putstatic_11();
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @title  initialization of referenced class throws exception
+     */
+    public void testE6() {
+        // @uses dxc.junit.opcodes.putstatic.jm.StubInitError
+        T_putstatic_13 t = new T_putstatic_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    //  FIXME: "fail" commented out temporarily - check
+    /**
+     * @title  modification of superclass' private field from subclass
+     * FIXME: is this a bug in JVM?
+     */
+    public void testE7() {
+        // @uses dxc.junit.opcodes.putstatic.jm.T_putstatic_1
+        try {
+            assertEquals(0, T_putstatic_15.getPvtField());
+            T_putstatic_15 t = new T_putstatic_15();
+            t.run();
+            assertEquals(12321, T_putstatic_15.getPvtField());
+            //fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+            // expected
+        } catch (VerifyError vfe) { 
+            // ok for dalvikvm; 
+            System.out.print("dvmvfe:"); 
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - float instead of
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible references
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.17
+     * @title type of argument - assignment
+     * incompatible values
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.1.12
+     * @title constant pool type
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.putstatic.jm.T_putstatic_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.j
new file mode 100644
index 0000000..b1a57ba
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_1.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_1
+.super java/lang/Object
+
+.field public static st_i1 I
+.field protected static st_p1 I
+.field private static st_pvt1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_i1 I
+    return
+.end method
+
+.method public static getPvtField()I
+   getstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_pvt1 I
+   ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.java
new file mode 100644
index 0000000..4876ea0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_1 {
+    public static int st_i1;
+    protected static int st_p1;
+    private static int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public static int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.j
new file mode 100644
index 0000000..6ffd777
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_10.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_10.st_i1N I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.java
new file mode 100644
index 0000000..c1a6d75
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_10 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.j
new file mode 100644
index 0000000..c60bb18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_11.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_11
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.TestStubs.TestStubFieldFinal I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.java
new file mode 100644
index 0000000..6231867
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_11 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.j
new file mode 100644
index 0000000..044864b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_12.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_12
+.super java/lang/Object
+
+.field public final static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_12.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.java
new file mode 100644
index 0000000..1261528
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_12 {
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.j
new file mode 100644
index 0000000..5216b3f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_13.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_13
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()I
+    .limit stack 1
+    .limit locals 1
+
+    getstatic dxc.junit.opcodes.putstatic.jm.StubInitError.value I
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.java
new file mode 100644
index 0000000..16afdc1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_13 {
+    
+    public int run() {
+        return StubInitError.value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.j
new file mode 100644
index 0000000..c781c03
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_14.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_14
+.super dxc/junit/opcodes/putstatic/jm/T_putstatic_1
+
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putstatic/jm/T_putstatic_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_p1 I
+    return
+.end method
+
+.method public static getProtectedField()I
+   getstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_p1 I
+   ireturn
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.java
new file mode 100644
index 0000000..80296f9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_14 extends T_putstatic_1{
+    
+    public void run() {
+        T_putstatic_1.st_p1 = 1000000;
+    }
+    
+    public static int getProtectedField(){
+        return T_putstatic_1.st_p1;
+    }
+    
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.j
new file mode 100644
index 0000000..44e8785
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_15.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_15
+.super dxc/junit/opcodes/putstatic/jm/T_putstatic_1
+
+.method public <init>()V
+    aload_0
+    invokespecial dxc/junit/opcodes/putstatic/jm/T_putstatic_1/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 12321
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_1.st_pvt1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.java
new file mode 100644
index 0000000..b2f4dae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_15 extends T_putstatic_1{
+    
+    public void run() {
+        //
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.j
new file mode 100644
index 0000000..6b1d154
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_16.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_16
+.super java/lang/Object
+
+.field public static o Ljava/lang/Object;
+
+.method static <clinit>()V
+    .limit stack 1
+    .limit locals 0
+
+    aconst_null
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_16.o Ljava/lang/Object;
+
+    return
+.end method
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 3
+    .limit locals 2
+
+    new java/lang/String
+    dup
+    ldc ""
+    invokespecial java/lang/String/<init>(Ljava/lang/String;)V
+
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_16.o Ljava/lang/Object;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.java
new file mode 100644
index 0000000..b0d5d14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_16.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_16 {
+
+    public static Object o = null;
+    
+    public void run() {
+        String s = new String("");
+        o = s;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.cfh
new file mode 100644
index 0000000..e5e2de3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.cfh
@@ -0,0 +1,213 @@
+//@class:dxc/junit/opcodes/putstatic/jm/T_putstatic_17
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 11 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 5, h: 0003: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 39, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 52, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 61, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 67, len 22, h: 0007: utf8{"T_putstatic_17.java"}
+    // .  .  .  T  _  p  u  t  s  t  a  t  i  c  _  1  7  .  j  a  v  a  
+       01 00 13 54 5f 70 75 74 73 74 61 74 69 63 5f 31 37 2e 6a 61 76 61 
+    // parsed:, offset 89, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 94, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 101, len 48, h: 000a: utf8{"dxc/junit/opcodes/putstatic/jm/T_putstatic_17"}
+    // .  .  -  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  s  t  a  t  i  c  /  j  m  /  T  _  p  u  t  s  t  a  t  i  c  _  1  7  
+       01 00 2d 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 70 75 74 73 74 61 74 69 63 5f 31 37 
+    // parsed:, offset 149, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 155, len 8, h: 000c: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 163, len 4, h: 000d: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 167, len 3, h: 000e: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_17}
+    // .  .  .  
+       07 00 0a 
+    // parsed:, offset 170, len 5, h: 000f: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0c 00 0d 
+    // parsed:, offset 175, len 5, h: 0010: field{dxc.junit.opcodes.putstatic.jm.T_putstatic_17.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0e 00 0f 
+    // parsed:, offset 180, len 3, h: 0011: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 183, len 0, h: end constant_pool
+// parsed:, offset 183, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 185, len 2, h: this_class: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_17}
+// .  .  
+   00 0e 
+// parsed:, offset 187, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 11 
+// parsed:, offset 189, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 191, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 193, len:83,desc: I
+// parsed:, offset 193, len 0, h:  fields[0]: 
+    // parsed:, offset 193, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 195, len 2, h: name: st_i1
+    // .  .  
+       00 0c 
+    // parsed:, offset 197, len 2, h: descriptor: I
+    // .  .  
+       00 0d 
+    // parsed:, offset 199, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 201, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 201, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 203, len:73,desc: ()V
+// parsed:, offset 203, len 0, h:  methods[0]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 207, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 213, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 217, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 221, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 230, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 232, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 234, len 0, h: end attributes[0] 
+// parsed:, offset 234, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 234, len:42,desc: ()V
+// parsed:, offset 234, len 0, h:  methods[1]: 
+    // parsed:, offset 234, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 236, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 238, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 240, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 242, len 0, h:  attributes[0]: 
+        // parsed:, offset 242, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 244, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 248, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 252, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+000f4240
+        // .  .  
+           12 03 
+        // parsed:, offset 2, len 3, h: 0002: putstatic field{dxc.junit.opcodes.putstatic.jm.T_putstatic_17.st_i1:I}
+        // .  .  .  
+//@mod           b3 00 10 
+           b3 00 03 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 262, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 264, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 266, len 0, h: end attributes[0] 
+// parsed:, offset 266, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 266, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 268, len 0, h:  attributes[0]: 
+    // parsed:, offset 268, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 270, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 274, len 2, h: source: utf8{"T_putstatic_17.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 276, len 0, h: end attributes[0] 
+// parsed:, offset 276, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.j
new file mode 100644
index 0000000..18b3e14
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_17.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_17
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_17.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.java
new file mode 100644
index 0000000..28056a7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_17.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_17 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.j
new file mode 100644
index 0000000..83d518a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_18.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_18
+.super java/lang/Object
+
+.field public static v I
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    ldc 3.14
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_18.v I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.java
new file mode 100644
index 0000000..5293bcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_18.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_18 {
+
+    public static int v;
+    
+    public void run() {
+        v = (int)3.14f;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.j
new file mode 100644
index 0000000..2b2ca2c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_2.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_2
+.super java/lang/Object
+
+.field public static st_d1 D
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit stack 2
+    ldc2_w 1000000.0
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_2.st_d1 D
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.java
new file mode 100644
index 0000000..eb40d35
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_2 {
+
+    public static double st_d1;
+    
+    public void run() {
+        st_d1 = 1000000d;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.cfh b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.cfh
new file mode 100644
index 0000000..e200a7c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.cfh
@@ -0,0 +1,213 @@
+//@class:dxc/junit/opcodes/putstatic/jm/T_putstatic_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 0012
+// .  .  
+   00 12 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0f 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 21, h: 0005: utf8{"T_putstatic_3.java"}
+    // .  .  .  T  _  p  u  t  s  t  a  t  i  c  _  3  .  j  a  v  a  
+       01 00 12 54 5f 70 75 74 73 74 61 74 69 63 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 77, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 83, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0c 
+    // parsed:, offset 88, len 47, h: 0008: utf8{"dxc/junit/opcodes/putstatic/jm/T_putstatic_3"}
+    // .  .  ,  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  p  u  t  s  t  a  t  i  c  /  j  m  /  T  _  p  u  t  s  t  a  t  i  c  _  3  
+       01 00 2c 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 70 75 74 73 74 61 74 69 63 2f 6a 6d 2f 54 5f 70 75 74 73 74 61 74 69 63 5f 33 
+    // parsed:, offset 135, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 142, len 5, h: 000a: int{0x000f4240 / 1000000}
+    // .  .  .  B  @  
+       03 00 0f 42 40 
+    // parsed:, offset 147, len 3, h: 000b: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_3}
+    // .  .  .  
+       07 00 08 
+    // parsed:, offset 150, len 6, h: 000c: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 156, len 8, h: 000d: utf8{"st_i1"}
+    // .  .  .  s  t  _  i  1  
+       01 00 05 73 74 5f 69 31 
+    // parsed:, offset 164, len 5, h: 000e: nat{st_i1:I}
+    // .  .  .  .  .  
+       0c 00 0d 00 10 
+    // parsed:, offset 169, len 3, h: 000f: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 172, len 4, h: 0010: utf8{"I"}
+    // .  .  .  I  
+       01 00 01 49 
+    // parsed:, offset 176, len 5, h: 0011: field{dxc.junit.opcodes.putstatic.jm.T_putstatic_3.st_i1:I}
+    // .  .  .  .  .  
+       09 00 0b 00 0e 
+// parsed:, offset 181, len 0, h: end constant_pool
+// parsed:, offset 181, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 183, len 2, h: this_class: type{dxc.junit.opcodes.putstatic.jm.T_putstatic_3}
+// .  .  
+   00 0b 
+// parsed:, offset 185, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0f 
+// parsed:, offset 187, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 189, len 2, h: fields_count: 0001
+// .  .  
+   00 01 
+// ========== start-ParseMember:st_i1, offset 191, len:83,desc: I
+// parsed:, offset 191, len 0, h:  fields[0]: 
+    // parsed:, offset 191, len 2, h: access_flags: public|static
+    // .  .  
+       00 09 
+    // parsed:, offset 193, len 2, h: name: st_i1
+    // .  .  
+       00 0d 
+    // parsed:, offset 195, len 2, h: descriptor: I
+    // .  .  
+       00 10 
+    // parsed:, offset 197, len 2, h: attributes_count: 0000
+    // .  .  
+       00 00 
+// parsed:, offset 199, len 0, h: end fields[0] 
+// ========== end-ParseMember:st_i1, desc: I
+// parsed:, offset 199, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 201, len:73,desc: ()V
+// parsed:, offset 201, len 0, h:  methods[0]: 
+    // parsed:, offset 201, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 203, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 205, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 207, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 209, len 0, h:  attributes[0]: 
+        // parsed:, offset 209, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 211, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 215, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 217, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 228, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 230, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 232, len 0, h: end attributes[0] 
+// parsed:, offset 232, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 232, len:42,desc: ()V
+// parsed:, offset 232, len 0, h:  methods[1]: 
+    // parsed:, offset 232, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 234, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 236, len 2, h: descriptor: ()V
+    // .  .  
+       00 0c 
+    // parsed:, offset 238, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 240, len 0, h:  attributes[0]: 
+        // parsed:, offset 240, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 242, len 4, h: length: 00000012
+        // .  .  .  .  
+           00 00 00 12 
+        // parsed:, offset 246, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 248, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 250, len 4, h: code_length: 00000006
+        // .  .  .  .  
+           00 00 00 06 
+        // parsed:, offset 0, len 2, h: 0000: ldc #+000f4240
+        // .  .  
+           12 0a 
+        // parsed:, offset 2, len 3, h: 0002: putstatic field{dxc.junit.opcodes.putstatic.jm.T_putstatic_3.st_i1:I}
+        // .  .  .  
+//@mod           b3 00 11 
+           b3 01 11 
+        // parsed:, offset 5, len 1, h: 0005: return
+        // .  
+           b1 
+        // parsed:, offset 260, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 262, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 264, len 0, h: end attributes[0] 
+// parsed:, offset 264, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 264, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 266, len 0, h:  attributes[0]: 
+    // parsed:, offset 266, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 268, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 272, len 2, h: source: utf8{"T_putstatic_3.java"}
+    // .  .  
+       00 05 
+// parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.j
new file mode 100644
index 0000000..b72a7b0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_3.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_3
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_3.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.java
new file mode 100644
index 0000000..1ec204e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_3 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.j
new file mode 100644
index 0000000..24fa5aa
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_4.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_4
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+;    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_4.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.java
new file mode 100644
index 0000000..f3c016a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_4 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.j
new file mode 100644
index 0000000..f8cb68d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_5.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_5
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+;    ldc 1000000
+    fconst_1
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_5.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.java
new file mode 100644
index 0000000..de12995
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_5 {
+
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.j
new file mode 100644
index 0000000..baef85a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_6.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_6
+.super java/lang/Object
+
+.field public static s Ljava/lang/String;
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 2
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_6.s Ljava/lang/String;
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.java
new file mode 100644
index 0000000..1a625d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_6.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_6 {
+
+    public static String s;
+    
+    public void run() {
+        Object o = new Object();
+        s = (String)o;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.j
new file mode 100644
index 0000000..806105a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_7.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_7
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_7.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.java
new file mode 100644
index 0000000..9fec90d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_7 {
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.j
new file mode 100644
index 0000000..acab0d1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.j
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_8.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.TestStub.TestStubField I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.java
new file mode 100644
index 0000000..c78048a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_8 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.j b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.j
new file mode 100644
index 0000000..2a82450
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.j
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_putstatic_9.java
+.class public dxc/junit/opcodes/putstatic/jm/T_putstatic_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    ldc 1000000
+    putstatic dxc.junit.opcodes.putstatic.jm.T_putstatic_91.st_i1 I
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.java
new file mode 100644
index 0000000..9defac3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/T_putstatic_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+public class T_putstatic_9 {
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/TestStubs.java b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/TestStubs.java
new file mode 100644
index 0000000..9cc2aa6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/putstatic/jm/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.putstatic.jm;
+
+
+class StubInitError{
+    public static int value = 5 / 0;
+}
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/Test_ret.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/Test_ret.java
new file mode 100644
index 0000000..a8b43ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/Test_ret.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.ret.jm.T_ret_1;
+import dxc.junit.opcodes.ret.jm.T_ret_1_w;
+
+public class Test_ret extends DxTestCase {
+
+    /**
+     * NORMAL RET VERSION
+     */
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_ret_1 t = new T_ret_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index operand
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title variable referenced by index shall
+     * contain returnAddress
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.24
+     * @title each returnAddress can be returned only
+     * once
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.22
+     * @title single ret instruction
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * WIDE RET VERSION
+     */
+
+    /**
+     * @title 
+     */
+    public void testN2() {
+        T_ret_1_w t = new T_ret_1_w();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @constraint 4.8.1.21
+     * @title index operand
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_2_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title variable referenced by index shall
+     * contain returnAddress
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_3_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.24
+     * @title each returnAddress can be returned only
+     * once
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_4_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.22
+     * @title single ret instruction
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.ret.jm.T_ret_5_w");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.j
new file mode 100644
index 0000000..f73f634
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.j
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_1.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_1
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.ret.jm.T_ret_1.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore_1
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1.i1 I
+    ret 1
+; test that ret returns immediately
+    aload_0
+    sipush 2000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1.i1 I
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.java
new file mode 100644
index 0000000..e0ee60c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_1 {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.j
new file mode 100644
index 0000000..fd91e23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.j
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_1_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_1_w
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 300
+    
+    jsr_w SetField
+
+    aload_0
+    getfield dxc.junit.opcodes.ret.jm.T_ret_1_w.i1 I
+    sipush 1000
+    if_icmpne Label0
+    
+    iconst_1
+    ireturn
+    
+Label0:
+    iconst_0    
+    ireturn
+
+SetField:
+    astore 270
+    aload_0
+    sipush 1000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1_w.i1 I
+    ret_w 270
+; test that ret returns immediately
+    aload_0
+    sipush 2000
+    putfield dxc.junit.opcodes.ret.jm.T_ret_1_w.i1 I
+    ret_w 270
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.java
new file mode 100644
index 0000000..80d159a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_1_w.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_1_w {
+
+    public int i1;
+    
+    private void setfield() {
+        i1 = 1000;
+    }
+    
+    public boolean run() {
+       setfield();
+       if(i1 == 1000)
+           return true;
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.j
new file mode 100644
index 0000000..5850796
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_2.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 2
+    
+    jsr SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore_1
+    ret 10
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.java
new file mode 100644
index 0000000..48719f3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_2 {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.j
new file mode 100644
index 0000000..c6ecab8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_2_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_2_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 300
+    
+    jsr_w SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore 269
+    ret_w 300
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.java
new file mode 100644
index 0000000..a10ec49
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_2_w.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_2_w {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.j
new file mode 100644
index 0000000..1016b02
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_3.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore_2
+    aload_0
+    astore_1
+    ret 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.java
new file mode 100644
index 0000000..106f930
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_3 {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.j
new file mode 100644
index 0000000..dba7682
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_3_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_3_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit stack 2
+    .limit locals 3
+    
+    jsr_w SetField
+
+    iconst_0
+    ireturn
+    
+SetField:
+    astore_2
+    aload_0
+    astore_1
+    ret_w 1
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.java
new file mode 100644
index 0000000..5c20726
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_3_w.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_3_w {
+
+    private void setfield() {
+    }
+    
+    public boolean run() {
+       setfield();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.j
new file mode 100644
index 0000000..8c72c1a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_4.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit locals 5
+    .limit stack 5
+
+    goto Label1
+    
+Label3:
+    astore_1    
+    ret 1
+    
+Label2:
+    astore_1
+    jsr Label3
+    ret 1    
+    
+Label1:    
+    jsr Label2
+    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.java
new file mode 100644
index 0000000..96f1924
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_4 {
+
+    private void f2() {
+    }
+    
+    private void f1() {
+        f2();
+    }
+    
+    public boolean run() {
+       f1();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.j
new file mode 100644
index 0000000..3cddbb8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_4_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_4_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()Z
+    .limit locals 5
+    .limit stack 5
+
+    goto Label1
+    
+Label3:
+    astore_1    
+    ret_w 1
+    
+Label2:
+    astore_1
+    jsr_w Label3
+    ret_w 1    
+    
+Label1:    
+    jsr_w Label2
+    
+    iconst_0
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.java
new file mode 100644
index 0000000..d27e9d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_4_w.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_4_w {
+
+    private void f2() {
+    }
+    
+    private void f1() {
+        f2();
+    }
+    
+    public boolean run() {
+       f1();
+       return false;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.j
new file mode 100644
index 0000000..d0eb53b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_5.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit locals 5
+    .limit stack 5
+
+    iconst_1
+    istore_2
+
+    jsr Label3
+
+    return
+    
+Label3:
+    astore_1    
+    
+    iload_2
+    iconst_0
+    if_icmpeq Label1
+    ret 1
+Label1:
+    ret 1    
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.java
new file mode 100644
index 0000000..60d0014
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_5 {
+
+    private void setfield() {
+    }
+    
+    public void run() {
+       setfield();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.j b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.j
new file mode 100644
index 0000000..b049cae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_ret_5_w.java
+.class public dxc/junit/opcodes/ret/jm/T_ret_5_w
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()V
+    .limit locals 5
+    .limit stack 5
+
+    iconst_1
+    istore_2
+
+    jsr_w Label3
+
+    return
+    
+Label3:
+    astore_1    
+    
+    iload_2
+    iconst_0
+    if_icmpeq Label1
+    ret_w 1
+Label1:
+    ret_w 1    
+    
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.java b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.java
new file mode 100644
index 0000000..dfc10c6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/ret/jm/T_ret_5_w.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.ret.jm;
+
+public class T_ret_5_w {
+
+    private void setfield() {
+    }
+    
+    public void run() {
+       setfield();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/Test_saload.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/Test_saload.java
new file mode 100644
index 0000000..435a117
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/Test_saload.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.saload.jm.T_saload_1;
+
+public class Test_saload extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes 
+     */
+    public void testN1() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        arr[1] = 10000;
+        assertEquals(10000, t.run(arr, 1));
+    }
+
+    /**
+     * @title normal test. trying different indexes
+     */
+    public void testN2() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        arr[0] = 10000;
+        assertEquals(10000, t.run(arr, 0));
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_saload_1 t = new T_saload_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_saload_1 t = new T_saload_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - Object, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - int[], int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.saload.jm.T_saload_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.j
new file mode 100644
index 0000000..180c180
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_1.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.java
new file mode 100644
index 0000000..dd3083c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_1 {
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.j
new file mode 100644
index 0000000..f38e43a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_2.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+;    iload_2
+
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.java
new file mode 100644
index 0000000..bef1b9b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_2 {
+
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.j
new file mode 100644
index 0000000..aab2008
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_3.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.java
new file mode 100644
index 0000000..4d2571c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_3 {
+
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.j
new file mode 100644
index 0000000..75cbfbf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_4.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SD)S
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.java
new file mode 100644
index 0000000..c482474
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_4 {
+
+    public short run(short[] arr, double idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.j
new file mode 100644
index 0000000..f528968
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_5.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SJ)S
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    lload_2
+    saload
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.java
new file mode 100644
index 0000000..4f95b0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_5 {
+
+    public short run(short[] arr, long idx) {
+        return arr[(int)idx];
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.j
new file mode 100644
index 0000000..9682e21
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_6.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;[SI)S
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+
+    saload
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.java
new file mode 100644
index 0000000..1c1cf0d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_6 {
+
+    public short run(Object a, short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.j
new file mode 100644
index 0000000..fac34c8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_7.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([D[SI)S
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    saload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.java
new file mode 100644
index 0000000..5036d22
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_7 {
+
+    public short run(double[] a, short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.j
new file mode 100644
index 0000000..f5d15da
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_8.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run([I[SI)S
+    .limit stack 2
+    .limit locals 4
+    aload_1
+    iload_3
+    saload
+
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.java
new file mode 100644
index 0000000..77bc620
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_8 {
+
+    public short run(int[] a, short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.j b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.j
new file mode 100644
index 0000000..af1e40d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_saload_9.java
+.class public dxc/junit/opcodes/saload/jm/T_saload_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SI)S
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+    aload_0
+    saload
+    ireturn
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.java b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.java
new file mode 100644
index 0000000..05b3f3e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/saload/jm/T_saload_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.saload.jm;
+
+public class T_saload_9 {
+    
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/Test_sastore.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/Test_sastore.java
new file mode 100644
index 0000000..f4127c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/Test_sastore.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.sastore.jm.T_sastore_1;
+
+public class Test_sastore extends DxTestCase {
+
+    /**
+     * @title normal test. trying different indexes 
+     */
+    public void testN1() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        t.run(arr, 1, (short) 10000);
+        assertEquals(10000, arr[1]);
+    }
+
+    /**
+     * @title normal test. trying different indexes 
+     */
+    public void testN2() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        t.run(arr, 0, (short) 10000);
+        assertEquals(10000, arr[0]);
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_sastore_1 t = new T_sastore_1();
+        try {
+            t.run(null, 2, (short) 10000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE3() {
+        T_sastore_1 t = new T_sastore_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, double,
+     * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double[], int,
+     * int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - array, reference,
+     * int
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.sastore.jm.T_sastore_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.j
new file mode 100644
index 0000000..239c519
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_1.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.java
new file mode 100644
index 0000000..d55f755
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_1 {
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.j
new file mode 100644
index 0000000..d72eb80
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_2.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    ;iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.java
new file mode 100644
index 0000000..5072930
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_2 {
+
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.j
new file mode 100644
index 0000000..19c93e3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_3.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    ;aload_1
+    iload_2
+    iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.java
new file mode 100644
index 0000000..9417fff
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_3 {
+
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.j
new file mode 100644
index 0000000..2fd5a51
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_4.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SDI)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    dload_2
+;    d2i
+    iload 4
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.java
new file mode 100644
index 0000000..20e5619
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_4 {
+
+    public void run(short[] arr, double idx, short value) {
+        arr[(int)idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.j
new file mode 100644
index 0000000..1c26fe8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_5.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run([SIJ)V
+    .limit stack 4
+    .limit locals 5
+
+    aload_1
+    iload_2
+    lload 3
+;   l2i
+;    i2s    
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.java
new file mode 100644
index 0000000..c235f95
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_5 {
+
+    public void run(short[] arr, int idx, long value) {
+        arr[idx] = (short)value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.j
new file mode 100644
index 0000000..e7ba17c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_6.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(Ljava/lang/Object;IS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    iload_2
+    iload_3
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.java
new file mode 100644
index 0000000..074ad48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_6 {
+
+    public void run(Object a, short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.j
new file mode 100644
index 0000000..b2a3f8a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_7.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([D[SIS)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.java
new file mode 100644
index 0000000..88d61cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_7 {
+
+    public void run(double a[], short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.j
new file mode 100644
index 0000000..c6df01d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_8.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([J[SIS)V
+    .limit stack 3
+    .limit locals 5
+    
+    aload_1
+    iload_3
+    iload 4
+    sastore
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.java
new file mode 100644
index 0000000..bce0b50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_8 {
+
+    public void run(long a[], short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.j b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.j
new file mode 100644
index 0000000..a0a551f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sastore_9.java
+.class public dxc/junit/opcodes/sastore/jm/T_sastore_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run([SIS)V
+    .limit stack 3
+    .limit locals 4
+
+    aload_1
+    aload_0
+    iload_3
+    sastore
+    return
+
+.end method
\ No newline at end of file
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.java b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.java
new file mode 100644
index 0000000..444da12
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sastore/jm/T_sastore_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sastore.jm;
+
+public class T_sastore_9 {
+    
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/Test_sipush.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/Test_sipush.java
new file mode 100644
index 0000000..2f414c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/Test_sipush.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sipush;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.sipush.jm.T_sipush_1;
+import dxc.junit.opcodes.sipush.jm.T_sipush_2;
+import dxc.junit.opcodes.sipush.jm.T_sipush_3;
+
+public class Test_sipush extends DxTestCase {
+
+    /**
+     * @title sipush -13570
+     */
+    public void testN1() {
+        T_sipush_1 t = new T_sipush_1();
+        assertEquals(-13570, t.run());
+    }
+
+    /**
+     * @title sipush 0
+     */
+    public void testB1() {
+        T_sipush_2 t = new T_sipush_2();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title sipush - 1
+     */
+    public void testB2() {
+        T_sipush_3 t = new T_sipush_3();
+        assertEquals(-1, t.run());
+    }
+
+    /**
+     * @constraint 4.8.2.5
+     * @title stack size
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.sipush.jm.T_sipush_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.j
new file mode 100644
index 0000000..93b611e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.j
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sipush_1.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()S
+    sipush -13570
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.java
new file mode 100644
index 0000000..32f714e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_1 {
+
+    public short run() {
+        return (short)0xcafe;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.j
new file mode 100644
index 0000000..590d92f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.j
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sipush_2.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()S
+    .limit stack 1
+    .limit locals 1
+
+    sipush 0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.java
new file mode 100644
index 0000000..adab916
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_2 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.j
new file mode 100644
index 0000000..415c159
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.j
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sipush_3.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run()S
+    .limit stack 1
+    .limit locals 1
+
+    sipush -1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.java
new file mode 100644
index 0000000..81ff83b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_3 {
+
+    public short run() {
+        return -1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.j b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.j
new file mode 100644
index 0000000..f852a9a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_sipush_4.java
+.class public dxc/junit/opcodes/sipush/jm/T_sipush_4
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()S
+    .limit stack 1
+;    .limit locals 1
+
+    sipush 1
+    sipush 1
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.java b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.java
new file mode 100644
index 0000000..e3e540c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/sipush/jm/T_sipush_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.sipush.jm;
+
+public class T_sipush_4 {
+
+    public short run() {
+        return 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/Test_swap.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/Test_swap.java
new file mode 100644
index 0000000..b7d8208
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/Test_swap.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.swap.jm.T_swap_1;
+import dxc.junit.opcodes.swap.jm.T_swap_6;
+import dxc.junit.opcodes.swap.jm.T_swap_7;
+import dxc.junit.opcodes.swap.jm.T_swap_8;
+
+public class Test_swap extends DxTestCase {
+
+    /**
+     * @title  Integers
+     */
+    public void testN1() {
+        T_swap_1 t = new T_swap_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title  Floats
+     */
+    public void testN2() {
+        T_swap_6 t = new T_swap_6();
+        assertEquals(8f, t.run(15f, 8f));
+    }
+
+    /**
+     * @title  References
+     */
+    public void testN3() {
+        T_swap_7 t = new T_swap_7();
+        int tmp[] = new int[1];
+        assertEquals(tmp, t.run(this, tmp));
+    }
+
+    /**
+     * @title  Reference & int
+     */
+    public void testN4() {
+        T_swap_8 t = new T_swap_8();
+        assertEquals(this, t.run(0xff, this));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title types of arguments - long & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.swap.jm.T_swap_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.j
new file mode 100644
index 0000000..42cb0cc
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.j
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_1.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_2
+    iload_1
+    swap
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.java
new file mode 100644
index 0000000..a662235
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_1 {
+
+    public int run(int a, int b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.j
new file mode 100644
index 0000000..77dca55
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_2.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run(II)I
+    .limit stack 2
+    .limit locals 3
+    iload_1
+;    iload_2
+    swap
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.java
new file mode 100644
index 0000000..f9ee17f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_2 {
+
+    public int run(int a, int b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.j
new file mode 100644
index 0000000..3ea9627
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_3.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(DI)I
+    .limit stack 3
+    .limit locals 4
+
+    dload_1
+;    d2i
+    iload_3
+    swap
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.java
new file mode 100644
index 0000000..34278c5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_3 {
+
+    public int run(double a, int b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.j
new file mode 100644
index 0000000..641c256
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_4.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(IJ)I
+    .limit stack 3
+    .limit locals 4
+
+    iload_1
+    lload_2
+    swap
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.java
new file mode 100644
index 0000000..ffd75d6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_4 {
+
+    public int run(int a, long b) {
+        return (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.j
new file mode 100644
index 0000000..53d03af
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_5.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(JJ)I
+    .limit stack 4
+    .limit locals 5
+
+    lload_1
+    lload_3
+    swap
+
+    iconst_0
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.java
new file mode 100644
index 0000000..d684944
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_5 {
+
+    public int run(int a, long b) {
+        return (int)b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.j
new file mode 100644
index 0000000..4b33952
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_6.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(FF)F
+    .limit stack 4
+    .limit locals 5
+
+    fload_2
+    fload_1
+    
+    swap
+
+    freturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.java
new file mode 100644
index 0000000..c52c8d3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_6 {
+
+    public float run(float a, float b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.j
new file mode 100644
index 0000000..615a782
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_7.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+    .limit stack 4
+    .limit locals 5
+
+    aload_2
+    aload_1
+    
+    swap
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.java
new file mode 100644
index 0000000..789077e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_7 {
+
+    public Object run(Object a, Object b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.j b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.j
new file mode 100644
index 0000000..81a647b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.j
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_swap_8.java
+.class public dxc/junit/opcodes/swap/jm/T_swap_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run(ILjava/lang/Object;)Ljava/lang/Object;
+    .limit stack 4
+    .limit locals 5
+
+    aload_2
+    iload_1
+    
+    swap
+
+    areturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.java b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.java
new file mode 100644
index 0000000..d4608bb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/swap/jm/T_swap_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.swap.jm;
+
+public class T_swap_8 {
+
+    public Object run(int a, Object b) {
+        return b;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/Test_tableswitch.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/Test_tableswitch.java
new file mode 100644
index 0000000..459fb72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/Test_tableswitch.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.opcodes.tableswitch.jm.T_tableswitch_1;
+
+public class Test_tableswitch extends DxTestCase {
+
+    /**
+     * @title normal test
+     */
+    public void testN1() {
+        T_tableswitch_1 t = new T_tableswitch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(4));
+        assertEquals(20, t.run(2));
+        assertEquals(-1, t.run(5));
+
+        assertEquals(-1, t.run(6));
+        assertEquals(20, t.run(3));
+        assertEquals(-1, t.run(7));
+    }
+
+    /**
+     * @title check Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_tableswitch_1 t = new T_tableswitch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title check Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_tableswitch_1 t = new T_tableswitch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title branch target shall be inside the
+     * method
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title branch target shall not be "inside" wide
+     * instruction
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title low value shall be less than high
+     * value
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title non-zero padding
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.1
+     * @title type of argument - reference
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.8
+     * @title number of entries in jump table
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dxc.junit.opcodes.tableswitch.jm.T_tableswitch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.j
new file mode 100644
index 0000000..e21d5c3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_1.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    tableswitch -1 3
+            Label0
+            Label3
+            Label3
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.java
new file mode 100644
index 0000000..6feb6d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.j
new file mode 100644
index 0000000..4fbe7d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.j
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_2.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+;    iload_1
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.java
new file mode 100644
index 0000000..dd07d01
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_2 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.j
new file mode 100644
index 0000000..14f6827
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.j
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_3.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    fconst_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.java
new file mode 100644
index 0000000..fe2cfed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_3.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_3 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.cfh
new file mode 100644
index 0000000..f70e16c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 51, h: 0006: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  4  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 34 
+    // parsed:, offset 113, len 23, h: 0007: utf8{"T_tableswitch_4.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  4  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 136, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 141, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 148, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 154, len 3, h: 000b: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_4}
+    // .  .  .  
+       07 00 06 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_4}
+// .  .  
+   00 0b 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:102,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:71,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 220, len 4, h: length: 0000002f
+        // .  .  .  /  
+           00 00 00 2f 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000023
+        // .  .  .  #  
+           00 00 00 23 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 27, h: 0001: tableswitch   +00000001: 001c   +00000002: 001e   +00000003: 001e   default: 0021
+        // .  .  .  .  .  .     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 ff 
+        // parsed:, offset 28, len 1, h: 001c: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 29, len 1, h: 001d: ireturn
+        // .  
+           ac 
+        // parsed:, offset 30, len 2, h: 001e: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 32, len 1, h: 0020: ireturn
+        // .  
+           ac 
+        // parsed:, offset 33, len 1, h: 0021: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 34, len 1, h: 0022: ireturn
+        // .  
+           ac 
+        // parsed:, offset 267, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 269, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 271, len 0, h: end attributes[0] 
+// parsed:, offset 271, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 271, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 273, len 0, h:  attributes[0]: 
+    // parsed:, offset 273, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 275, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 279, len 2, h: source: utf8{"T_tableswitch_4.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 281, len 0, h: end attributes[0] 
+// parsed:, offset 281, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.j
new file mode 100644
index 0000000..b527e24
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_4.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.java
new file mode 100644
index 0000000..ab0d8e1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_4.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_4 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.cfh
new file mode 100644
index 0000000..9d8b286
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 51, h: 0005: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  5  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 35 
+    // parsed:, offset 107, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 113, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 118, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 125, len 23, h: 0009: utf8{"T_tableswitch_5.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  5  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 35 2e 6a 61 76 61 
+    // parsed:, offset 148, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 154, len 3, h: 000b: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_5}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_5}
+// .  .  
+   00 0b 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:105,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:74,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 220, len 4, h: length: 00000032
+        // .  .  .  2  
+           00 00 00 32 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000026
+        // .  .  .  &  
+           00 00 00 26 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 27, h: 0001: tableswitch   +00000001: 001c   +00000002: 001e   +00000003: 001e   default: 0021
+        // .  .  .  .  .  .     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+           aa 00 00 00 00 00 21 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+        // parsed:, offset 28, len 1, h: 001c: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 29, len 1, h: 001d: ireturn
+        // .  
+           ac 
+        // parsed:, offset 30, len 2, h: 001e: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 32, len 1, h: 0020: ireturn
+        // .  
+           ac 
+        // parsed:, offset 33, len 4, h: 0021: wide iload 0001
+        // .  .  .  .  
+           c4 15 00 01 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_tableswitch_5.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.j
new file mode 100644
index 0000000..e085f06
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_5.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iload_w 1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.java
new file mode 100644
index 0000000..3702524
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_5.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_5 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.cfh
new file mode 100644
index 0000000..51a3fad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.cfh
@@ -0,0 +1,194 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 51, h: 0005: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  6  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 36 
+    // parsed:, offset 107, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 113, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 09 
+    // parsed:, offset 118, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 125, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 131, len 3, h: 000a: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_6}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 134, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 137, len 23, h: 000c: utf8{"T_tableswitch_6.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  6  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 36 2e 6a 61 76 61 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_6}
+// .  .  
+   00 0a 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:91,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:60,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 220, len 4, h: length: 00000024
+        // .  .  .  $  
+           00 00 00 24 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000018
+        // .  .  .  .  
+           00 00 00 18 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 19, h: 0001: tableswitch   +00000001: 0014   default: 0016
+        // .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 15 00 00 00 01 00 00 00 01 00 00 00 13 
+                 aa 00 00 00 00 00 15 00 00 00 01 00 00 00 00 00 00 00 13 
+        // parsed:, offset 20, len 1, h: 0014: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 21, len 1, h: 0015: ireturn
+        // .  
+           ac 
+        // parsed:, offset 22, len 1, h: 0016: iconst_m1 // #-01
+        // .  
+           02 
+        // parsed:, offset 23, len 1, h: 0017: ireturn
+        // .  
+           ac 
+        // parsed:, offset 256, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 258, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 260, len 0, h: end attributes[0] 
+// parsed:, offset 260, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 260, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 262, len 0, h:  attributes[0]: 
+    // parsed:, offset 262, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 264, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 268, len 2, h: source: utf8{"T_tableswitch_6.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 270, len 0, h: end attributes[0] 
+// parsed:, offset 270, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.j
new file mode 100644
index 0000000..b290972
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_6.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 1
+            Label0
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label3:
+    iconst_m1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.java
new file mode 100644
index 0000000..038bd4f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_6.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_6 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.cfh
new file mode 100644
index 0000000..74cf765
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.cfh
@@ -0,0 +1,200 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000e
+// .  .  
+   00 0e 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 51, h: 0004: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  7  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 37 
+    // parsed:, offset 98, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 107, len 23, h: 0006: utf8{"T_tableswitch_7.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  7  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 37 2e 6a 61 76 61 
+    // parsed:, offset 130, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 136, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 141, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 148, len 3, h: 000a: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_7}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 151, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 160, len 7, h: 000d: utf8{"(I)I"}
+    // .  .  .  (  I  )  I  
+       01 00 04 28 49 29 49 
+// parsed:, offset 167, len 0, h: end constant_pool
+// parsed:, offset 167, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 169, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_7}
+// .  .  
+   00 0a 
+// parsed:, offset 171, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 173, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 175, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 177, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 179, len:105,desc: ()V
+// parsed:, offset 179, len 0, h:  methods[0]: 
+    // parsed:, offset 179, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 181, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 183, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 185, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 187, len 0, h:  attributes[0]: 
+        // parsed:, offset 187, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 189, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 193, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 195, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 197, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 206, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 208, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 210, len 0, h: end attributes[0] 
+// parsed:, offset 210, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 210, len:74,desc: (I)I
+// parsed:, offset 210, len 0, h:  methods[1]: 
+    // parsed:, offset 210, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 212, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 214, len 2, h: descriptor: (I)I
+    // .  .  
+       00 0d 
+    // parsed:, offset 216, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 218, len 0, h:  attributes[0]: 
+        // parsed:, offset 218, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 220, len 4, h: length: 00000032
+        // .  .  .  2  
+           00 00 00 32 
+        // parsed:, offset 224, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 226, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 228, len 4, h: code_length: 00000026
+        // .  .  .  &  
+           00 00 00 26 
+        // parsed:, offset 0, len 1, h: 0000: iload_1 // 01
+        // .  
+           1b 
+        // parsed:, offset 1, len 27, h: 0001: tableswitch   +00000001: 001c   +00000002: 001e   +00000003: 001e   default: 0021
+        // .  .  .  .  .  .     .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+           aa 00 01 00 00 00 20 00 00 00 01 00 00 00 03 00 00 00 1b 00 00 00 1d 00 00 00 1d 
+        // parsed:, offset 28, len 1, h: 001c: iconst_2 // #+02
+        // .  
+           05 
+        // parsed:, offset 29, len 1, h: 001d: ireturn
+        // .  
+           ac 
+        // parsed:, offset 30, len 2, h: 001e: bipush #+14
+        // .  .  
+           10 14 
+        // parsed:, offset 32, len 1, h: 0020: ireturn
+        // .  
+           ac 
+        // parsed:, offset 33, len 4, h: 0021: wide iload 0001
+        // .  .  .  .  
+           c4 15 00 01 
+        // parsed:, offset 37, len 1, h: 0025: ireturn
+        // .  
+           ac 
+        // parsed:, offset 270, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 272, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 274, len 0, h: end attributes[0] 
+// parsed:, offset 274, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: (I)I
+// parsed:, offset 274, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 276, len 0, h:  attributes[0]: 
+    // parsed:, offset 276, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 278, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 282, len 2, h: source: utf8{"T_tableswitch_7.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 284, len 0, h: end attributes[0] 
+// parsed:, offset 284, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.j
new file mode 100644
index 0000000..e944ce0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.j
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_7.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+    iload_1
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+    iconst_2
+    ireturn
+
+    Label1:
+    bipush 20
+    ireturn
+
+    Label3:
+    iload_w 1
+    ireturn
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.java
new file mode 100644
index 0000000..e36101b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.j
new file mode 100644
index 0000000..d9d3f2a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_8.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+.method public run(I)I
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    
+    tableswitch 1 3
+            Label0
+            Label1
+            Label1
+            default: Label3
+
+    Label0:
+.line 8
+    iconst_2
+    ireturn
+
+    Label1:
+.line 11
+    bipush 20
+    ireturn
+
+    Label3:
+.line 13
+    iconst_m1
+
+    Label5:
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.java
new file mode 100644
index 0000000..205fec9
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_8 {
+    
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.cfh b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.cfh
new file mode 100644
index 0000000..ded5708
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 51, h: 0003: utf8{"dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9"}
+    // .  .  0  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  t  a  b  l  e  s  w  i  t  c  h  /  j  m  /  T  _  t  a  b  l  e  s  w  i  t  c  h  _  9  
+       01 00 30 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 74 61 62 6c 65 73 77 69 74 63 68 2f 6a 6d 2f 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 39 
+    // parsed:, offset 85, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 98, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 107, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 113, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 118, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 125, len 3, h: 0009: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_9}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 128, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 134, len 23, h: 000b: utf8{"T_tableswitch_9.java"}
+    // .  .  .  T  _  t  a  b  l  e  s  w  i  t  c  h  _  9  .  j  a  v  a  
+       01 00 14 54 5f 74 61 62 6c 65 73 77 69 74 63 68 5f 39 2e 6a 61 76 61 
+    // parsed:, offset 157, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 160, len 0, h: end constant_pool
+// parsed:, offset 160, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 162, len 2, h: this_class: type{dxc.junit.opcodes.tableswitch.jm.T_tableswitch_9}
+// .  .  
+   00 09 
+// parsed:, offset 164, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 166, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 168, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 170, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 172, len:89,desc: ()V
+// parsed:, offset 172, len 0, h:  methods[0]: 
+    // parsed:, offset 172, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 174, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 176, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 178, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 180, len 0, h:  attributes[0]: 
+        // parsed:, offset 180, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 182, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 186, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 188, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 190, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 199, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 201, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 203, len 0, h: end attributes[0] 
+// parsed:, offset 203, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 203, len:58,desc: ()V
+// parsed:, offset 203, len 0, h:  methods[1]: 
+    // parsed:, offset 203, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 205, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 207, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 209, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 211, len 0, h:  attributes[0]: 
+        // parsed:, offset 211, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 213, len 4, h: length: 00000022
+        // .  .  .  "  
+           00 00 00 22 
+        // parsed:, offset 217, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 219, len 2, h: max_locals: 0002
+        // .  .  
+           00 02 
+        // parsed:, offset 221, len 4, h: code_length: 00000016
+        // .  .  .  .  
+           00 00 00 16 
+        // parsed:, offset 0, len 1, h: 0000: iconst_1 // #+01
+        // .  
+           04 
+        // parsed:, offset 1, len 19, h: 0001: tableswitch   +00000001: 0014   default: 0015
+        // .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  
+//@mod           aa 00 00 00 00 00 14 00 00 00 01 00 00 00 01 00 00 00 13 
+           aa 00 00 00 00 00 14 00 00 00 01 00 00 00 02 00 00 00 13 
+        // parsed:, offset 20, len 1, h: 0014: return
+        // .  
+           b1 
+        // parsed:, offset 21, len 1, h: 0015: return
+        // .  
+           b1 
+        // parsed:, offset 247, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 249, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 251, len 0, h: end attributes[0] 
+// parsed:, offset 251, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 251, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 253, len 0, h:  attributes[0]: 
+    // parsed:, offset 253, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 255, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 259, len 2, h: source: utf8{"T_tableswitch_9.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 261, len 0, h: end attributes[0] 
+// parsed:, offset 261, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.j b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.j
new file mode 100644
index 0000000..155aae4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.j
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_tableswitch_9.java
+.class public dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 2
+
+    iconst_1
+    tableswitch 1 1
+            Label0
+            default: Label1
+
+Label0:
+    return
+
+Label1:
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.java b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.java
new file mode 100644
index 0000000..39f83b1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/tableswitch/jm/T_tableswitch_9.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.tableswitch.jm;
+
+public class T_tableswitch_9 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        }
+        return 0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/Test_wide.java b/tools/dx-tests/src/dxc/junit/opcodes/wide/Test_wide.java
new file mode 100644
index 0000000..c27db48
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/Test_wide.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.wide;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+
+public class Test_wide extends DxTestCase {
+
+    /**
+     * Wide instruction is tested as part of wide version of particular
+     * instructions so here we just test if wide instruction can't be applied to
+     * wrong bytecode.
+     */
+
+    /**
+     * @constraint 4.8.1.5 (?)
+     * @title Wide instruction shall be applied only on defined
+     * instructions 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.wide.jm.T_wide_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.5 
+     * @title bytecode modified with wide instruction must not be
+     *          reachable directly
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.wide.jm.T_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.cfh b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.cfh
new file mode 100644
index 0000000..0906ca2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/wide/jm/T_wide_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 37, h: 0003: utf8{"dxc/junit/opcodes/wide/jm/T_wide_1"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  w  i  d  e  /  j  m  /  T  _  w  i  d  e  _  1  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 77 69 64 65 2f 6a 6d 2f 54 5f 77 69 64 65 5f 31 
+    // parsed:, offset 71, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 84, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 93, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 99, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 09 
+    // parsed:, offset 104, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 111, len 6, h: 0009: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 117, len 3, h: 000a: type{dxc.junit.opcodes.wide.jm.T_wide_1}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 120, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 123, len 16, h: 000c: utf8{"T_wide_1.java"}
+    // .  .  .  T  _  w  i  d  e  _  1  .  j  a  v  a  
+       01 00 0d 54 5f 77 69 64 65 5f 31 2e 6a 61 76 61 
+// parsed:, offset 139, len 0, h: end constant_pool
+// parsed:, offset 139, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 141, len 2, h: this_class: type{dxc.junit.opcodes.wide.jm.T_wide_1}
+// .  .  
+   00 0a 
+// parsed:, offset 143, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 145, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 147, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 149, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 151, len:70,desc: ()V
+// parsed:, offset 151, len 0, h:  methods[0]: 
+    // parsed:, offset 151, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 153, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 155, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 157, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 159, len 0, h:  attributes[0]: 
+        // parsed:, offset 159, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 161, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 165, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 167, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 169, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 178, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 180, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 182, len 0, h: end attributes[0] 
+// parsed:, offset 182, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 182, len:39,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[1]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 09 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 192, len 4, h: length: 0000000f
+        // .  .  .  .  
+           00 00 00 0f 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000003
+        // .  .  .  .  
+           00 00 00 03 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+//@mod           00
+           c4 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+           00 
+        // parsed:, offset 2, len 1, h: 0002: return
+        // .  
+           b1 
+        // parsed:, offset 207, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 209, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 211, len 0, h: end attributes[0] 
+// parsed:, offset 211, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 211, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 213, len 0, h:  attributes[0]: 
+    // parsed:, offset 213, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 215, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 219, len 2, h: source: utf8{"T_wide_1.java"}
+    // .  .  
+       00 0c 
+// parsed:, offset 221, len 0, h: end attributes[0] 
+// parsed:, offset 221, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.j b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.j
new file mode 100644
index 0000000..7269f72
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_wide_1.java
+.class public dxc/junit/opcodes/wide/jm/T_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+
+    nop
+    nop
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.java b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.java
new file mode 100644
index 0000000..a5f3ee0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.wide.jm;
+
+public class T_wide_1 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.cfh b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.cfh
new file mode 100644
index 0000000..c6717db
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.cfh
@@ -0,0 +1,182 @@
+//@class:dxc/junit/opcodes/wide/jm/T_wide_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 37, h: 0001: utf8{"dxc/junit/opcodes/wide/jm/T_wide_2"}
+    // .  .  "  d  x  c  /  j  u  n  i  t  /  o  p  c  o  d  e  s  /  w  i  d  e  /  j  m  /  T  _  w  i  d  e  _  2  
+       01 00 22 64 78 63 2f 6a 75 6e 69 74 2f 6f 70 63 6f 64 65 73 2f 77 69 64 65 2f 6a 6d 2f 54 5f 77 69 64 65 5f 32 
+    // parsed:, offset 47, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 52, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 71, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 84, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 93, len 16, h: 0006: utf8{"T_wide_2.java"}
+    // .  .  .  T  _  w  i  d  e  _  2  .  j  a  v  a  
+       01 00 0d 54 5f 77 69 64 65 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 109, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 115, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0a 
+    // parsed:, offset 120, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 127, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 133, len 3, h: 000b: type{dxc.junit.opcodes.wide.jm.T_wide_2}
+    // .  .  .  
+       07 00 01 
+    // parsed:, offset 136, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 139, len 0, h: end constant_pool
+// parsed:, offset 139, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 141, len 2, h: this_class: type{dxc.junit.opcodes.wide.jm.T_wide_2}
+// .  .  
+   00 0b 
+// parsed:, offset 143, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 145, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 147, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 149, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 151, len:75,desc: ()V
+// parsed:, offset 151, len 0, h:  methods[0]: 
+    // parsed:, offset 151, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 153, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 155, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 157, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 159, len 0, h:  attributes[0]: 
+        // parsed:, offset 159, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 161, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 165, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 167, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 169, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 178, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 180, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 182, len 0, h: end attributes[0] 
+// parsed:, offset 182, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 182, len:44,desc: ()V
+// parsed:, offset 182, len 0, h:  methods[1]: 
+    // parsed:, offset 182, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 184, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 186, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 188, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 190, len 0, h:  attributes[0]: 
+        // parsed:, offset 190, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 192, len 4, h: length: 00000014
+        // .  .  .  .  
+           00 00 00 14 
+        // parsed:, offset 196, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 198, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 200, len 4, h: code_length: 00000008
+        // .  .  .  .  
+           00 00 00 08 
+        // parsed:, offset 0, len 3, h: 0000: goto 0003
+        // .  .  .  
+//@mod           a7 00 03 
+           a7 00 04 
+        // parsed:, offset 3, len 4, h: 0003: wide aload 0000
+        // .  .  .  .  
+           c4 19 00 00 
+        // parsed:, offset 7, len 1, h: 0007: return
+        // .  
+           b1 
+        // parsed:, offset 212, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 214, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 216, len 0, h: end attributes[0] 
+// parsed:, offset 216, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 216, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 218, len 0, h:  attributes[0]: 
+    // parsed:, offset 218, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 220, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 224, len 2, h: source: utf8{"T_wide_2.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 226, len 0, h: end attributes[0] 
+// parsed:, offset 226, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.j b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.j
new file mode 100644
index 0000000..176ece0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.j
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_wide_2.java
+.class public dxc/junit/opcodes/wide/jm/T_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+
+    .limit stack 1
+    
+    goto Label0
+
+Label0:
+    aload_w 0
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.java b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.java
new file mode 100644
index 0000000..50d5d46
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/opcodes/wide/jm/T_wide_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.opcodes.wide.jm;
+
+public class T_wide_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/AllTests.java b/tools/dx-tests/src/dxc/junit/verify/AllTests.java
new file mode 100644
index 0000000..790c0d8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/AllTests.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for java vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dxc.junit.verify.t481_1.Test_t481_1.class);
+        suite.addTestSuite(dxc.junit.verify.t481_2.Test_t481_2.class);
+        suite.addTestSuite(dxc.junit.verify.t481_3.Test_t481_3.class);
+        suite.addTestSuite(dxc.junit.verify.t481_4.Test_t481_4.class);
+        suite.addTestSuite(dxc.junit.verify.t481_6.Test_t481_6.class);
+
+        suite.addTestSuite(dxc.junit.verify.t482_2.Test_t482_2.class);
+        suite.addTestSuite(dxc.junit.verify.t482_3.Test_t482_3.class);
+        suite.addTestSuite(dxc.junit.verify.t482_4.Test_t482_4.class);
+        suite.addTestSuite(dxc.junit.verify.t482_8.Test_t482_8.class);
+        suite.addTestSuite(dxc.junit.verify.t482_9.Test_t482_9.class);
+        suite.addTestSuite(dxc.junit.verify.t482_10.Test_t482_10.class);
+        suite.addTestSuite(dxc.junit.verify.t482_11.Test_t482_11.class);
+        suite.addTestSuite(dxc.junit.verify.t482_14.Test_t482_14.class);
+        suite.addTestSuite(dxc.junit.verify.t482_20.Test_t482_20.class);
+
+        return suite;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/Test_t481_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_1/Test_t481_1.java
new file mode 100644
index 0000000..cf26b1f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/Test_t481_1.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_1;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_1 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.1
+     * @title code_length must not be zero
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_1.jm.T_t481_1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.cfh
new file mode 100644
index 0000000..4785bad
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.cfh
@@ -0,0 +1,176 @@
+//@class:dxc/junit/verify/t481_1/jm/T_t481_1_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 18, h: 0006: utf8{"T_t481_1_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  1  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 31 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 80, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 85, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 92, len 40, h: 0009: utf8{"dxc/junit/verify/t481_1/jm/T_t481_1_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  1  /  j  m  /  T  _  t  4  8  1  _  1  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 31 2f 6a 6d 2f 54 5f 74 34 38 31 5f 31 5f 31 
+    // parsed:, offset 132, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 138, len 3, h: 000b: type{dxc.junit.verify.t481_1.jm.T_t481_1_1}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_1.jm.T_t481_1_1}
+// .  .  
+   00 0b 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:68,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:37,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 0000000d
+        // .  .  .  .  
+           00 00 00 0d 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000001
+        // .  .  .  .  
+//@mod           00 00 00 01 
+           00 00 00 00 
+        // parsed:, offset 0, len 1, h: 0000: return
+        // .  
+           b1 
+        // parsed:, offset 210, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 212, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 214, len 0, h: end attributes[0] 
+// parsed:, offset 214, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 214, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 216, len 0, h:  attributes[0]: 
+    // parsed:, offset 216, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 218, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 222, len 2, h: source: utf8{"T_t481_1_1.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 224, len 0, h: end attributes[0] 
+// parsed:, offset 224, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.j
new file mode 100644
index 0000000..fc6fad0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_1_1.java
+.class public dxc/junit/verify/t481_1/jm/T_t481_1_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.java
new file mode 100644
index 0000000..3da0228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_1/jm/T_t481_1_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_1.jm;
+
+public class T_t481_1_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/Test_t481_2.java b/tools/dx-tests/src/dxc/junit/verify/t481_2/Test_t481_2.java
new file mode 100644
index 0000000..4cabc23
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/Test_t481_2.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_2 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.2
+     * @title code_length must be less than 65536
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_2.jm.T_t481_2_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.cfh
new file mode 100644
index 0000000..049d556
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.cfh
@@ -0,0 +1,176 @@
+//@class:dxc/junit/verify/t481_2/jm/T_t481_2_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 09 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 40, h: 0004: utf8{"dxc/junit/verify/t481_2/jm/T_t481_2_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  2  /  j  m  /  T  _  t  4  8  1  _  2  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 32 2f 6a 6d 2f 54 5f 74 34 38 31 5f 32 5f 31 
+    // parsed:, offset 87, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 96, len 18, h: 0006: utf8{"T_t481_2_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  2  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 32 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 114, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 120, len 3, h: 0008: type{dxc.junit.verify.t481_2.jm.T_t481_2_1}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 123, len 5, h: 0009: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 128, len 7, h: 000a: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_2.jm.T_t481_2_1}
+// .  .  
+   00 08 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:68,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:37,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 0a 
+        // parsed:, offset 197, len 4, h: length: 0000000d
+        // .  .  .  .  
+           00 00 00 0d 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000001
+        // .  .  .  .  
+//@mod           00 00 00 01 
+           00 01 00 00 
+        // parsed:, offset 0, len 1, h: 0000: return
+        // .  
+           b1 
+        // parsed:, offset 210, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 212, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 214, len 0, h: end attributes[0] 
+// parsed:, offset 214, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 214, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 216, len 0, h:  attributes[0]: 
+    // parsed:, offset 216, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 218, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 222, len 2, h: source: utf8{"T_t481_2_1.java"}
+    // .  .  
+       00 06 
+// parsed:, offset 224, len 0, h: end attributes[0] 
+// parsed:, offset 224, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.j
new file mode 100644
index 0000000..e167ae6
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_2_1.java
+.class public dxc/junit/verify/t481_2/jm/T_t481_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.java
new file mode 100644
index 0000000..712596d
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_2/jm/T_t481_2_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_2.jm;
+
+public class T_t481_2_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/Test_t481_3.java b/tools/dx-tests/src/dxc/junit/verify/t481_3/Test_t481_3.java
new file mode 100644
index 0000000..2180f89
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/Test_t481_3.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_3 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.3
+     * @title First opcode instruction shall be at offset 0. The idea of
+     * the test is to put invalid opcode at offset 0.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_3.jm.T_t481_3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.cfh
new file mode 100644
index 0000000..9fdc97c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_3/jm/T_t481_3_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0b 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 08 
+    // parsed:, offset 67, len 7, h: 0007: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 74, len 6, h: 0008: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 80, len 18, h: 0009: utf8{"T_t481_3_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  3  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 33 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 98, len 40, h: 000a: utf8{"dxc/junit/verify/t481_3/jm/T_t481_3_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  3  /  j  m  /  T  _  t  4  8  1  _  3  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 33 2f 6a 6d 2f 54 5f 74 34 38 31 5f 33 5f 31 
+    // parsed:, offset 138, len 3, h: 000b: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+    // parsed:, offset 141, len 3, h: 000c: type{dxc.junit.verify.t481_3.jm.T_t481_3_1}
+    // .  .  .  
+       07 00 0a 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_3.jm.T_t481_3_1}
+// .  .  
+   00 0c 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0b 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 08 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 08 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 07 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+//@mod           00 
+           ff 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+           00 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_3_1.java"}
+    // .  .  
+       00 09 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.j
new file mode 100644
index 0000000..fd5258f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_3_1.java
+.class public dxc/junit/verify/t481_3/jm/T_t481_3_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.java
new file mode 100644
index 0000000..4cd3dcf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_3/jm/T_t481_3_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_3.jm;
+
+public class T_t481_3_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/Test_t481_4.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/Test_t481_4.java
new file mode 100644
index 0000000..d333420
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/Test_t481_4.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_4;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_4 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.4
+     * @title opcode 254 (0xfe) may not appear in code array
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.4
+     * @title opcode 255 (0xff) may not appear in code array
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.4
+     * @title opcode 202 (0xca) may not appear in code array
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.1.4
+     * @title undocumented opcode 240 (F0) may not appear in code array
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.verify.t481_4.jm.T_t481_4_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.cfh
new file mode 100644
index 0000000..6f6a4d2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 40, h: 0005: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 31 
+    // parsed:, offset 96, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 102, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0a 
+    // parsed:, offset 107, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 114, len 3, h: 0009: type{dxc.junit.verify.t481_4.jm.T_t481_4_1}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 117, len 6, h: 000a: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 123, len 18, h: 000b: utf8{"T_t481_4_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_1}
+// .  .  
+   00 09 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0a 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           fe
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_1.java"}
+    // .  .  
+       00 0b 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.j
new file mode 100644
index 0000000..f652640
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_4_1.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.java
new file mode 100644
index 0000000..8caaaca
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.cfh
new file mode 100644
index 0000000..13dee05
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_2
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 18, h: 0001: utf8{"T_t481_4_2.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  2  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 32 2e 6a 61 76 61 
+    // parsed:, offset 28, len 5, h: 0002: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 33, len 19, h: 0003: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 52, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 65, len 40, h: 0005: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_2"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  2  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 32 
+    // parsed:, offset 105, len 9, h: 0006: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 114, len 6, h: 0007: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 120, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 06 00 0b 
+    // parsed:, offset 125, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 3, h: 000a: type{dxc.junit.verify.t481_4.jm.T_t481_4_2}
+    // .  .  .  
+       07 00 05 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 03 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_2}
+// .  .  
+   00 0a 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 06 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 02 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 07 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           ff 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_2.java"}
+    // .  .  
+       00 01 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.j
new file mode 100644
index 0000000..1b5b83b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_4_2.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_2
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.java
new file mode 100644
index 0000000..bbc58a4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_2.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_2{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.cfh
new file mode 100644
index 0000000..c195228
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_3
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 08 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 40, h: 0004: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_3"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  3  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 33 
+    // parsed:, offset 87, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 96, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 102, len 18, h: 0007: utf8{"T_t481_4_3.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  3  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 33 2e 6a 61 76 61 
+    // parsed:, offset 120, len 5, h: 0008: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 125, len 7, h: 0009: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 132, len 3, h: 000a: type{dxc.junit.verify.t481_4.jm.T_t481_4_3}
+    // .  .  .  
+       07 00 04 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_3}
+// .  .  
+   00 0a 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 09 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           ca 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_3.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.j
new file mode 100644
index 0000000..06cb586
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_4_3.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_3
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.java
new file mode 100644
index 0000000..bd9df26
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_3.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_3{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.cfh
new file mode 100644
index 0000000..6b94100
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_4/jm/T_t481_4_4
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 07 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 40, h: 0003: utf8{"dxc/junit/verify/t481_4/jm/T_t481_4_4"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  4  /  j  m  /  T  _  t  4  8  1  _  4  _  4  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 34 2f 6a 6d 2f 54 5f 74 34 38 31 5f 34 5f 34 
+    // parsed:, offset 74, len 13, h: 0004: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 87, len 9, h: 0005: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 96, len 6, h: 0006: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 102, len 5, h: 0007: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 05 00 0b 
+    // parsed:, offset 107, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 114, len 3, h: 0009: type{dxc.junit.verify.t481_4.jm.T_t481_4_4}
+    // .  .  .  
+       07 00 03 
+    // parsed:, offset 117, len 18, h: 000a: utf8{"T_t481_4_4.java"}
+    // .  .  .  T  _  t  4  8  1  _  4  _  4  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 34 5f 34 2e 6a 61 76 61 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_4.jm.T_t481_4_4}
+// .  .  
+   00 09 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 05 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 06 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+//@mod           00 
+           f0 
+        // parsed:, offset 2, len 1, h: 0002: nop
+        // .  
+           00 
+        // parsed:, offset 3, len 1, h: 0003: return
+        // .  
+           b1 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 04 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_4_4.java"}
+    // .  .  
+       00 0a 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.j b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.j
new file mode 100644
index 0000000..07e8168
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_4_4.java
+.class public dxc/junit/verify/t481_4/jm/T_t481_4_4
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    nop
+    
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.java b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.java
new file mode 100644
index 0000000..17fed6f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_4/jm/T_t481_4_4.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_4.jm;
+
+public class T_t481_4_4{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/Test_t481_6.java b/tools/dx-tests/src/dxc/junit/verify/t481_6/Test_t481_6.java
new file mode 100644
index 0000000..7dec5bd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/Test_t481_6.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_6;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t481_6 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.1.6
+     * @title Last opcode instruction shall be at offset code_length -1.
+     * The idea of the test is to put invalid opcode at offset code_length -1.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t481_6.jm.T_t481_6_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.cfh b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.cfh
new file mode 100644
index 0000000..188b796
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.cfh
@@ -0,0 +1,185 @@
+//@class:dxc/junit/verify/t481_6/jm/T_t481_6_1
+// parsed:, offset 0, len 0, h: begin classfile
+// parsed:, offset 0, len 4, h: magic: cafebabe
+// .  .  .  .  
+   ca fe ba be 
+// parsed:, offset 4, len 2, h: minor_version: 0003
+// .  .  
+   00 03 
+// parsed:, offset 6, len 2, h: major_version: 002d
+// .  -  
+   00 2d 
+// parsed:, offset 8, len 2, h: constant_pool_count: 000d
+// .  .  
+   00 0d 
+// parsed:, offset 10, len 0, h:  constant_pool:
+    // parsed:, offset 10, len 5, h: 0001: method{java.lang.Object.<init>:()V}
+    // .  .  .  .  .  
+       0a 00 0c 00 06 
+    // parsed:, offset 15, len 19, h: 0002: utf8{"java/lang/Object"}
+    // .  .  .  j  a  v  a  /  l  a  n  g  /  O  b  j  e  c  t  
+       01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 
+    // parsed:, offset 34, len 13, h: 0003: utf8{"SourceFile"}
+    // .  .  .  S  o  u  r  c  e  F  i  l  e  
+       01 00 0a 53 6f 75 72 63 65 46 69 6c 65 
+    // parsed:, offset 47, len 9, h: 0004: utf8{"<init>"}
+    // .  .  .  <  i  n  i  t  >  
+       01 00 06 3c 69 6e 69 74 3e 
+    // parsed:, offset 56, len 6, h: 0005: utf8{"run"}
+    // .  .  .  r  u  n  
+       01 00 03 72 75 6e 
+    // parsed:, offset 62, len 5, h: 0006: nat{<init>:()V}
+    // .  .  .  .  .  
+       0c 00 04 00 0b 
+    // parsed:, offset 67, len 18, h: 0007: utf8{"T_t481_6_1.java"}
+    // .  .  .  T  _  t  4  8  1  _  6  _  1  .  j  a  v  a  
+       01 00 0f 54 5f 74 34 38 31 5f 36 5f 31 2e 6a 61 76 61 
+    // parsed:, offset 85, len 7, h: 0008: utf8{"Code"}
+    // .  .  .  C  o  d  e  
+       01 00 04 43 6f 64 65 
+    // parsed:, offset 92, len 40, h: 0009: utf8{"dxc/junit/verify/t481_6/jm/T_t481_6_1"}
+    // .  .  %  d  x  c  /  j  u  n  i  t  /  v  e  r  i  f  y  /  t  4  8  1  _  6  /  j  m  /  T  _  t  4  8  1  _  6  _  1  
+       01 00 25 64 78 63 2f 6a 75 6e 69 74 2f 76 65 72 69 66 79 2f 74 34 38 31 5f 36 2f 6a 6d 2f 54 5f 74 34 38 31 5f 36 5f 31 
+    // parsed:, offset 132, len 3, h: 000a: type{dxc.junit.verify.t481_6.jm.T_t481_6_1}
+    // .  .  .  
+       07 00 09 
+    // parsed:, offset 135, len 6, h: 000b: utf8{"()V"}
+    // .  .  .  (  )  V  
+       01 00 03 28 29 56 
+    // parsed:, offset 141, len 3, h: 000c: type{java.lang.Object}
+    // .  .  .  
+       07 00 02 
+// parsed:, offset 144, len 0, h: end constant_pool
+// parsed:, offset 144, len 2, h: access_flags: public|super
+// .  !  
+   00 21 
+// parsed:, offset 146, len 2, h: this_class: type{dxc.junit.verify.t481_6.jm.T_t481_6_1}
+// .  .  
+   00 0a 
+// parsed:, offset 148, len 2, h: super_class: type{java.lang.Object}
+// .  .  
+   00 0c 
+// parsed:, offset 150, len 2, h: interfaces_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 152, len 2, h: fields_count: 0000
+// .  .  
+   00 00 
+// parsed:, offset 154, len 2, h: methods_count: 0002
+// .  .  
+   00 02 
+// ========== start-ParseMember:<init>, offset 156, len:71,desc: ()V
+// parsed:, offset 156, len 0, h:  methods[0]: 
+    // parsed:, offset 156, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 158, len 2, h: name: <init>
+    // .  .  
+       00 04 
+    // parsed:, offset 160, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 162, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 164, len 0, h:  attributes[0]: 
+        // parsed:, offset 164, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 166, len 4, h: length: 00000011
+        // .  .  .  .  
+           00 00 00 11 
+        // parsed:, offset 170, len 2, h: max_stack: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 172, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 174, len 4, h: code_length: 00000005
+        // .  .  .  .  
+           00 00 00 05 
+        // parsed:, offset 0, len 1, h: 0000: aload_0 // 00
+        // *  
+           2a 
+        // parsed:, offset 1, len 3, h: 0001: invokespecial method{java.lang.Object.<init>:()V}
+        // .  .  .  
+           b7 00 01 
+        // parsed:, offset 4, len 1, h: 0004: return
+        // .  
+           b1 
+        // parsed:, offset 183, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 185, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 187, len 0, h: end attributes[0] 
+// parsed:, offset 187, len 0, h: end methods[0] 
+// ========== end-ParseMember:<init>, desc: ()V
+// ========== start-ParseMember:run, offset 187, len:40,desc: ()V
+// parsed:, offset 187, len 0, h:  methods[1]: 
+    // parsed:, offset 187, len 2, h: access_flags: public
+    // .  .  
+       00 01 
+    // parsed:, offset 189, len 2, h: name: run
+    // .  .  
+       00 05 
+    // parsed:, offset 191, len 2, h: descriptor: ()V
+    // .  .  
+       00 0b 
+    // parsed:, offset 193, len 2, h: attributes_count: 0001
+    // .  .  
+       00 01 
+    // parsed:, offset 195, len 0, h:  attributes[0]: 
+        // parsed:, offset 195, len 2, h: name: Code
+        // .  .  
+           00 08 
+        // parsed:, offset 197, len 4, h: length: 00000010
+        // .  .  .  .  
+           00 00 00 10 
+        // parsed:, offset 201, len 2, h: max_stack: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 203, len 2, h: max_locals: 0001
+        // .  .  
+           00 01 
+        // parsed:, offset 205, len 4, h: code_length: 00000004
+        // .  .  .  .  
+           00 00 00 04 
+        // parsed:, offset 0, len 1, h: 0000: nop
+        // .  
+           00 
+        // parsed:, offset 1, len 1, h: 0001: nop
+        // .  
+           00 
+        // parsed:, offset 2, len 1, h: 0002: return
+        // .  
+           b1 
+        // parsed:, offset 3, len 1, h: 0003: nop
+        // .  
+//@mod           00 
+           ff 
+        // parsed:, offset 213, len 2, h: exception_table_length: 0000
+        // .  .  
+           00 00 
+        // parsed:, offset 215, len 2, h: attributes_count: 0000
+        // .  .  
+           00 00 
+    // parsed:, offset 217, len 0, h: end attributes[0] 
+// parsed:, offset 217, len 0, h: end methods[1] 
+// ========== end-ParseMember:run, desc: ()V
+// parsed:, offset 217, len 2, h: attributes_count: 0001
+// .  .  
+   00 01 
+// parsed:, offset 219, len 0, h:  attributes[0]: 
+    // parsed:, offset 219, len 2, h: name: SourceFile
+    // .  .  
+       00 03 
+    // parsed:, offset 221, len 4, h: length: 00000002
+    // .  .  .  .  
+       00 00 00 02 
+    // parsed:, offset 225, len 2, h: source: utf8{"T_t481_6_1.java"}
+    // .  .  
+       00 07 
+// parsed:, offset 227, len 0, h: end attributes[0] 
+// parsed:, offset 227, len 0, h: end classfile
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.j b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.j
new file mode 100644
index 0000000..1635755
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.j
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t481_6_1.java
+.class public dxc/junit/verify/t481_6/jm/T_t481_6_1
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    
+    nop
+    nop
+    return
+    nop
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.java b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.java
new file mode 100644
index 0000000..0a119d7
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t481_6/jm/T_t481_6_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t481_6.jm;
+
+public class T_t481_6_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/Test_t482_10.java b/tools/dx-tests/src/dxc/junit/verify/t482_10/Test_t482_10.java
new file mode 100644
index 0000000..8e1fa15
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/Test_t482_10.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_10;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_10 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.10
+     * @title Uninitialized local variable
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_10.jm.T_t482_10_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.10
+     * @title Uninitialized local variable
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_10.jm.T_t482_10_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.j
new file mode 100644
index 0000000..6abfdb5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.j
@@ -0,0 +1,92 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_10_1.java
+.class public dxc/junit/verify/t482_10/jm/T_t482_10_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 5
+
+;    iconst_2
+;    newarray int
+;    astore_1
+
+    iconst_1
+    istore_2
+
+Label8:
+    iconst_3
+    newarray int
+    astore_1
+
+    iload_2
+    iconst_1
+    if_icmpne Label0
+
+    new java/lang/Exception
+    dup
+    invokespecial java/lang/Exception/<init>()V
+    athrow
+
+Label13:
+    goto Label0
+
+Label14:
+    astore_3
+
+Label10:
+    aload_1
+    iconst_0
+    iaload
+    istore_2
+
+Label11:
+    goto Label2
+
+Label16:
+    astore 4
+
+    iconst_1
+    istore_2
+
+    aload 4
+    athrow
+
+Label0:
+    iconst_1
+    istore_2
+
+    goto Label3
+
+Label2:
+    iconst_1
+    istore_2
+
+Label3:
+    return
+
+.catch java/lang/Exception from Label8 to Label13 using Label14
+.catch all from Label8 to Label16 using Label16
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.java
new file mode 100644
index 0000000..38933b2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_1.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_10.jm;
+
+public class T_t482_10_1 {
+    
+    public void run(){
+        
+        int arr[];
+        arr = new int[2];
+        int f = 1;
+        
+        try{
+            arr = new int[3];
+            if(f == 1)
+                throw new Exception();
+            
+        }catch(Exception e){
+            f = arr[0];
+        }
+        finally {
+            f = 1;
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.j
new file mode 100644
index 0000000..c8c7b32
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.j
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_10_2.java
+.class public dxc/junit/verify/t482_10/jm/T_t482_10_2
+.super java/lang/Object
+
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+.method public run()V
+    .limit stack 6
+    .limit locals 2
+
+    iconst_1
+    istore_1
+
+    new java/lang/Object
+    dup
+    invokespecial java/lang/Object/<init>()V
+
+Label1:        
+
+    invokevirtual java/lang/Object/getClass()Ljava/lang/Class;
+    pop
+
+Label3:
+    new java/lang/Object
+
+      iinc 1 1
+      iload_1
+      sipush 10
+      if_icmpne Label1
+
+    return
+
+.end method
+
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.java
new file mode 100644
index 0000000..5c3fa5b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_10/jm/T_t482_10_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_10.jm;
+
+public class T_t482_10_2 {
+    
+    public void run(){
+        
+        Object o = new Object();
+        o.getClass();
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/Test_t482_11.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/Test_t482_11.java
new file mode 100644
index 0000000..75b8bf1
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/Test_t482_11.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_11;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+import dxc.junit.verify.t482_11.jm.T_t482_11_2;
+
+/**
+ * 
+ */
+public class Test_t482_11 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.2.11
+     * @title  instance fields declared in the class may be accessed before
+     * calling <init>
+     */
+    public void testN1() {
+        // @uses dxc.junit.verify.t482_11.jm.TSuper
+        T_t482_11_2 t = new T_t482_11_2();
+        assertEquals(11, t.v);
+    }
+
+    /**
+     * @constraint 4.8.2.11
+     * @title  super.<init> or another <init> must be called
+     */
+    public void testVFE1() {
+        // @uses dxc.junit.verify.t482_11.jm.TSuper
+        try {
+            Class.forName("dxc.junit.verify.t482_11.jm.T_t482_11_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.11
+     * @title only instance fields declared in the class may be accessed
+     * before calling <init>
+     */
+    public void testVFE2() {
+        // @uses dxc.junit.verify.t482_11.jm.TSuper
+        try {
+            Class.forName("dxc.junit.verify.t482_11.jm.T_t482_11_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/TSuper.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/TSuper.java
new file mode 100644
index 0000000..2b3641b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/TSuper.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class TSuper {
+    public int s;
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.j
new file mode 100644
index 0000000..c773656
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_11_1.java
+.class public dxc/junit/verify/t482_11/jm/T_t482_11_1
+.super dxc/junit/verify/t482_11/jm/TSuper
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+;    aload_0
+;    invokespecial dxc/junit/verify/t482_11/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.java
new file mode 100644
index 0000000..7262049
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class T_t482_11_1 extends TSuper{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.j
new file mode 100644
index 0000000..78b1d64
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_11_2.java
+.class public dxc/junit/verify/t482_11/jm/T_t482_11_2
+.super dxc/junit/verify/t482_11/jm/TSuper
+
+.field public v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    sipush 11
+    invokespecial dxc/junit/verify/t482_11/jm/T_t482_11_2/<init>(I)V
+
+    return
+.end method
+
+
+.method  <init>(I)V
+    .limit stack 2
+    .limit locals 2
+    
+    aload_0
+    iload_1
+    putfield dxc/junit/verify/t482_11/jm/T_t482_11_2/v I
+    
+    aload_0
+    invokespecial dxc/junit/verify/t482_11/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.java
new file mode 100644
index 0000000..4d0920a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class T_t482_11_2 extends TSuper{
+    public int v;
+    
+    public T_t482_11_2(){
+        this(11);
+    }
+    
+    T_t482_11_2(int i){
+        v = i;
+    }
+    
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.j b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.j
new file mode 100644
index 0000000..a25f0bf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.j
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_11_3.java
+.class public dxc/junit/verify/t482_11/jm/T_t482_11_3
+.super dxc/junit/verify/t482_11/jm/TSuper
+
+.field public v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    sipush 11
+    invokespecial dxc/junit/verify/t482_11/jm/T_t482_11_3/<init>(I)V
+
+    return
+.end method
+
+
+.method  <init>(I)V
+    .limit stack 2
+    .limit locals 2
+
+    aload_0
+    iload_1
+    putfield dxc/junit/verify/t482_11/jm/T_t482_11_3/s I
+    
+    aload_0
+    invokespecial dxc/junit/verify/t482_11/jm/TSuper/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.java b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.java
new file mode 100644
index 0000000..64acc18
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_11/jm/T_t482_11_3.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_11.jm;
+
+public class T_t482_11_3 extends TSuper{
+    public int v;
+    
+    public T_t482_11_3(){
+        this(11);
+    }
+    
+    T_t482_11_3(int i){
+        s = i;
+    }
+    
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/Test_t482_14.java b/tools/dx-tests/src/dxc/junit/verify/t482_14/Test_t482_14.java
new file mode 100644
index 0000000..501b2ee
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/Test_t482_14.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_14;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_14 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.14
+     * @title <init> may not return a value
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_14.jm.T_t482_14_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.14
+     * @title <clinit> may not return a value
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_14.jm.T_t482_14_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.j
new file mode 100644
index 0000000..335dfa3
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.j
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_14_1.java
+.class public dxc/junit/verify/t482_14/jm/T_t482_14_1
+.super java/lang/Object
+
+.field  v I
+
+.method public <init>()I
+    .limit stack 2
+    .limit locals 1
+    
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.verify.t482_14.jm.T_t482_14_1.v I
+    
+    iconst_1
+    ireturn
+
+.end method
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.java
new file mode 100644
index 0000000..94afb9f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_14.jm;
+
+public class T_t482_14_1 {
+    int v = 0;
+
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.j
new file mode 100644
index 0000000..49124fb
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.j
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_14_2.java
+.class public dxc/junit/verify/t482_14/jm/T_t482_14_2
+.super java/lang/Object
+
+.field static v I
+
+
+.method static <clinit>()I
+    .limit stack 1
+    .limit locals 0
+
+    
+    iconst_0
+    putstatic dxc.junit.verify.t482_14.jm.T_t482_14_2.v I
+
+    iconst_1
+    ireturn
+
+.end method
+
+
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 0
+    .limit locals 1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.java
new file mode 100644
index 0000000..7ca5de2
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_14/jm/T_t482_14_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_14.jm;
+
+public class T_t482_14_2 {
+    static int v = 0;
+
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_2/Test_t482_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_2/Test_t482_2.java
new file mode 100644
index 0000000..fb6406a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_2/Test_t482_2.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_2;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_2 extends DxTestCase {
+
+    /**
+     * @constraint 4.8.2.2
+     * @title operand stack depth
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_2.jm.T_t482_2_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.j
new file mode 100644
index 0000000..c180dd8
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_2_1.java
+.class public dxc/junit/verify/t482_2/jm/T_t482_2_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+
+.end method
+
+
+
+.method public run(I)I
+    .limit stack 3
+    .limit locals 2
+    
+    iload_1
+    ifne Label1
+    iconst_1
+    
+Label1:
+    iconst_2
+    iconst_3
+    iadd    
+
+    ireturn
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.java
new file mode 100644
index 0000000..8f5146b
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_2/jm/T_t482_2_1.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_2.jm;
+
+public class T_t482_2_1{
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_20/Test_t482_20.java b/tools/dx-tests/src/dxc/junit/verify/t482_20/Test_t482_20.java
new file mode 100644
index 0000000..963bb0f
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_20/Test_t482_20.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_20;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_20 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.20
+     * @title no return instruction in the method
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_20.jm.T_t482_20_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.j
new file mode 100644
index 0000000..f803fbd
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.j
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_20_1.java
+.class public dxc/junit/verify/t482_20/jm/T_t482_20_1
+.super java/lang/Object
+
+.method public <init>()V
+    .limit stack 1
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 1
+    .limit locals 1
+
+    iconst_1
+    pop
+    
+;    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.java
new file mode 100644
index 0000000..6e16f99
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_20/jm/T_t482_20_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_20.jm;
+
+public class T_t482_20_1 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/Test_t482_3.java b/tools/dx-tests/src/dxc/junit/verify/t482_3/Test_t482_3.java
new file mode 100644
index 0000000..af89d34
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/Test_t482_3.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_3;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_3 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.3
+     * @title attempt to split long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_3.jm.T_t482_3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.3
+     * @title attempt to split double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_3.jm.T_t482_3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.j
new file mode 100644
index 0000000..202e692
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_3_1.java
+.class public dxc/junit/verify/t482_3/jm/T_t482_3_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    ldc2_w 123
+    lstore_1
+    
+    iload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.java
new file mode 100644
index 0000000..f61df7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_3.jm;
+
+public class T_t482_3_1 {
+    public void run(){
+        long a = 123;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.j
new file mode 100644
index 0000000..08920f0
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.j
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_3_2.java
+.class public dxc/junit/verify/t482_3/jm/T_t482_3_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    ldc2_w 123.0
+    dstore_1
+    
+    fload_2
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.java
new file mode 100644
index 0000000..a3be92e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_3/jm/T_t482_3_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_3.jm;
+
+public class T_t482_3_2 {
+    public void run(){
+        double a = 123.0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/Test_t482_4.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/Test_t482_4.java
new file mode 100644
index 0000000..68f8c7e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/Test_t482_4.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_4;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_4 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.4
+     * @title attempt to access uninitialized int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_4.jm.T_t482_4_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.4
+     * @title attempt to access uninitialized double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_4.jm.T_t482_4_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.4
+     * @title attempt to access uninitialized reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.verify.t482_4.jm.T_t482_4_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.j
new file mode 100644
index 0000000..1c0bb5e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_4_1.java
+.class public dxc/junit/verify/t482_4/jm/T_t482_4_1
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    iload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.java
new file mode 100644
index 0000000..82d41c4
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_4.jm;
+
+public class T_t482_4_1 {
+    public void run(){
+        long a = 123;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.j
new file mode 100644
index 0000000..969c69e
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_4_2.java
+.class public dxc/junit/verify/t482_4/jm/T_t482_4_2
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    dload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.java
new file mode 100644
index 0000000..8683f50
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_4.jm;
+
+public class T_t482_4_2 {
+    public void run(){
+        double a = 123.0;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.j b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.j
new file mode 100644
index 0000000..3f7c2ce
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.j
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_4_3.java
+.class public dxc/junit/verify/t482_4/jm/T_t482_4_3
+.super java/lang/Object
+
+.method public <init>()V
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+    return
+.end method
+
+
+
+.method public run()V
+    .limit stack 2
+    .limit locals 3
+
+    aload_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.java b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.java
new file mode 100644
index 0000000..d7aa2ae
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_4/jm/T_t482_4_3.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_4.jm;
+
+public class T_t482_4_3 {
+    public void run(){
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/Test_t482_8.java b/tools/dx-tests/src/dxc/junit/verify/t482_8/Test_t482_8.java
new file mode 100644
index 0000000..2f61e6c
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/Test_t482_8.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_8;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_8 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.8
+     * @title uninitialized class instance must be on the stack
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_8.jm.T_t482_8_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.8
+     * @title attempt to initialize initialized class
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_8.jm.T_t482_8_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.j
new file mode 100644
index 0000000..c52c248
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.j
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_8_1.java
+.class public dxc/junit/verify/t482_8/jm/T_t482_8_1
+.super java/lang/Object
+
+
+.method  <init>(I)V
+    .limit stack 1
+    .limit locals 2
+
+;    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 3
+    .limit locals 2
+
+    new dxc/junit/verify/t482_8/jm/T_t482_8_1
+    dup
+    iconst_1
+    invokespecial dxc/junit/verify/t482_8/jm/T_t482_8_1/<init>(I)V
+    astore_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.java
new file mode 100644
index 0000000..5f658cf
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_8.jm;
+
+public class T_t482_8_1 {
+    T_t482_8_1(int a){
+        
+    }
+    
+    public void run(){
+        T_t482_8_1 t = new T_t482_8_1(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.j
new file mode 100644
index 0000000..8b89868
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.j
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_8_2.java
+.class public dxc/junit/verify/t482_8/jm/T_t482_8_2
+.super java/lang/Object
+
+
+.method  <init>(I)V
+    .limit stack 1
+    .limit locals 2
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+
+    return
+
+.end method
+
+
+
+.method public run()V
+    .limit stack 3
+    .limit locals 2
+
+    new dxc/junit/verify/t482_8/jm/T_t482_8_1
+    dup
+    iconst_1
+    invokespecial dxc/junit/verify/t482_8/jm/T_t482_8_1/<init>(I)V
+    astore_1
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.java
new file mode 100644
index 0000000..e14959a
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_8/jm/T_t482_8_2.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_8.jm;
+
+public class T_t482_8_2 {
+    T_t482_8_2(int a){
+        
+    }
+    
+    public void run(){
+        T_t482_8_2 t = new T_t482_8_2(1);
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/Test_t482_9.java b/tools/dx-tests/src/dxc/junit/verify/t482_9/Test_t482_9.java
new file mode 100644
index 0000000..949b772
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/Test_t482_9.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_9;
+
+import dxc.junit.DxTestCase;
+import dxc.junit.DxUtil;
+
+/**
+ * 
+ */
+public class Test_t482_9 extends DxTestCase {
+    /**
+     * @constraint 4.8.2.9
+     * @title attempt to access field of uninitialized class instance
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.verify.t482_9.jm.T_t482_9_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint 4.8.2.9
+     * @title attempt to use method of uninitialized class instance
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.verify.t482_9.jm.T_t482_9_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.j b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.j
new file mode 100644
index 0000000..ad10f28
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.j
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_9_1.java
+.class public dxc/junit/verify/t482_9/jm/T_t482_9_1
+.super java/lang/Object
+
+.field  v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.verify.t482_9.jm.T_t482_9_1.v I
+
+    return
+
+.end method
+
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/verify/t482_9/jm/T_t482_9_1
+;    dup
+;    invokespecial dxc/junit/verify/t482_9/jm/T_t482_9_1/<init>()V
+
+    iconst_1
+    putfield dxc.junit.verify.t482_9.jm.T_t482_9_1.v I
+
+    return
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.java b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.java
new file mode 100644
index 0000000..2ecbbe5
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_9.jm;
+
+public class T_t482_9_1 {
+    int v = 0;
+    
+    public static void run(){
+        T_t482_9_1 t = new T_t482_9_1();
+        t.v = 1;
+    }
+}
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.j b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.j
new file mode 100644
index 0000000..69a9fed
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.j
@@ -0,0 +1,57 @@
+; Copyright (C) 2008 The Android Open Source Project
+;
+; 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.
+
+.source T_t482_9_2.java
+.class public dxc/junit/verify/t482_9/jm/T_t482_9_2
+.super java/lang/Object
+
+.field  v I
+
+.method public <init>()V
+    .limit stack 2
+    .limit locals 1
+
+    aload_0
+    invokespecial java/lang/Object/<init>()V
+
+    aload_0
+    iconst_0
+    putfield dxc.junit.verify.t482_9.jm.T_t482_9_2.v I
+
+    return
+.end method
+
+
+
+.method  test()V
+    .limit stack 0
+    .limit locals 1
+    return
+.end method
+
+
+
+.method public static run()V
+    .limit stack 2
+    .limit locals 1
+
+    new dxc/junit/verify/t482_9/jm/T_t482_9_2
+;    dup
+;    invokespecial dxc/junit/verify/t482_9/jm/T_t482_9_2/<init>()V
+
+    invokevirtual dxc/junit/verify/t482_9/jm/T_t482_9_2/test()V
+
+    return
+
+.end method
diff --git a/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.java b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.java
new file mode 100644
index 0000000..3ed6819
--- /dev/null
+++ b/tools/dx-tests/src/dxc/junit/verify/t482_9/jm/T_t482_9_2.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxc.junit.verify.t482_9.jm;
+
+public class T_t482_9_2 {
+    int v = 0;
+    
+    void test() {
+        
+    }
+    
+    public static void run(){
+        T_t482_9_2 t = new T_t482_9_2();
+        t.test();
+    }
+}
diff --git a/tools/dx-tests/src/dxconvext/ClassFileAssembler.java b/tools/dx-tests/src/dxconvext/ClassFileAssembler.java
new file mode 100644
index 0000000..09eec27
--- /dev/null
+++ b/tools/dx-tests/src/dxconvext/ClassFileAssembler.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxconvext;
+
+import dxconvext.util.FileUtils;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.security.DigestException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.zip.Adler32;
+
+public class ClassFileAssembler {
+
+    /**
+     * @param args
+     */
+    public static void main(String[] args) {
+        ClassFileAssembler cfa = new ClassFileAssembler();
+        cfa.run(args);
+    }
+
+    private void run(String[] args) {
+        // this class can be used to generate .class files that are somehow
+        // damaged in order to test the dalvik vm verifier.
+        // The input is a .cfh (class file hex) file.
+        // The output is a java vm .class file.
+        // The .cfh files can be generated as follows:
+        // 1. create the initial .cfh file from an existing .class files by using
+        //    the ClassFileParser
+        // 2. modify some bytes to damage the structure of the .class file in a 
+        //    way that would not be possible with e.g. jasmin (otherwise you are
+        //    better off using jasmin).
+        //    Uncomment the original bytes, and write "MOD:" meaning a modified 
+        // entry (with the original commented out)
+        //
+        // Use the ClassFileAssembler to generate the .class file.
+        // this class here simply takes all non-comment lines from the .cfh
+        // file, parses them as hex values and writes the bytes to the class file
+        File cfhF = new File(args[0]);
+        if (!cfhF.getName().endsWith(".cfh") &&
+            !cfhF.getName().endsWith(".dfh")) {
+            System.out.println("file must be a .cfh or .dfh file, and its filename end with .cfh or .dfh");
+            return;
+        }
+        
+        String outBase = args[1];
+        
+        boolean isDex = cfhF.getName().endsWith(".dfh");
+        
+        byte[] cfhbytes = FileUtils.readFile(cfhF);
+        ByteArrayInputStream bais = new ByteArrayInputStream(cfhbytes);
+        // encoding should not matter, since we are skipping comment lines and parsing
+        try {
+            // get the package name
+            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(cfhF)));
+            String firstLine = br.readLine();
+            br.close();
+            String classHdr = "//@class:";
+            String dexHdr = "// Processing '";
+            String hdr;
+            if(isDex)
+                hdr = dexHdr;
+            else
+                hdr = classHdr;
+            
+            if (!firstLine.startsWith(hdr)) throw new RuntimeException("wrong format:"+firstLine +" isDex=" + isDex);
+            String tFile;
+            if(isDex) {
+                tFile = outBase + "/classes.dex";
+            } else {
+                String classO = firstLine.substring(hdr.length()).trim();
+                tFile = outBase +"/"+classO+".class";
+            }
+            File outFile = new File(tFile);
+            System.out.println("outfile:" + outFile);
+            String mkdir = tFile.substring(0, tFile.lastIndexOf("/"));
+            new File(mkdir).mkdirs();
+            
+            Reader r = new InputStreamReader(bais,"utf-8");
+            OutputStream os = new FileOutputStream(outFile);
+            BufferedOutputStream bos = new BufferedOutputStream(os);
+            writeClassFile(r, bos, isDex);
+            bos.close();
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException("problem while parsing .dfh or .cfh file: "+cfhF.getAbsolutePath(), e);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("problem while parsing .dfh or .cfh file: "+cfhF.getAbsolutePath(), e);
+        } catch (IOException e) {
+            throw new RuntimeException("problem while parsing .dfh or .cfh file: "+cfhF.getAbsolutePath(), e);
+        } 
+    }
+    
+    /**
+     * Calculates the signature for the <code>.dex</code> file in the
+     * given array, and modify the array to contain it.
+     * 
+     * Originally from com.android.dx.dex.file.DexFile.
+     * 
+     * @param bytes non-null; the bytes of the file
+     */
+    private void calcSignature(byte[] bytes) {
+        MessageDigest md;
+
+        try {
+            md = MessageDigest.getInstance("SHA-1");
+        } catch (NoSuchAlgorithmException ex) {
+            throw new RuntimeException(ex);
+        }
+
+        md.update(bytes, 32, bytes.length - 32);
+
+        try {
+            int amt = md.digest(bytes, 12, 20);
+            if (amt != 20) {
+                throw new RuntimeException("unexpected digest write: " + amt +
+                                           " bytes");
+            }
+        } catch (DigestException ex) {
+            throw new RuntimeException(ex);
+        }
+    }
+
+    /**
+     * Calculates the checksum for the <code>.dex</code> file in the
+     * given array, and modify the array to contain it.
+     * 
+     * Originally from com.android.dx.dex.file.DexFile.
+     * 
+     * @param bytes non-null; the bytes of the file
+     */
+    private void calcChecksum(byte[] bytes) {
+        Adler32 a32 = new Adler32();
+
+        a32.update(bytes, 12, bytes.length - 12);
+
+        int sum = (int) a32.getValue();
+
+        bytes[8]  = (byte) sum;
+        bytes[9]  = (byte) (sum >> 8);
+        bytes[10] = (byte) (sum >> 16);
+        bytes[11] = (byte) (sum >> 24);
+    }   
+
+    public void writeClassFile(Reader r, OutputStream rOs, boolean isDex) {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
+        BufferedReader br = new BufferedReader(r);
+        String line;
+        String secondLine = null;
+        int lineCnt = 0;
+        try {
+            while ((line = br.readLine()) != null) {
+                if (isDex && lineCnt++ == 1) {
+                    secondLine = line;
+                }
+                // skip it if it is a comment
+                if (!line.trim().startsWith("//")) {
+                    // we have a row like "    ae 08 21 ff" etc.
+                    String[] parts = line.split("\\s+");
+                    for (int i = 0; i < parts.length; i++) {
+                        String part = parts[i].trim();
+                        if (!part.equals("")) {
+                            int res = Integer.parseInt(part, 16);
+                            baos.write(res);
+                        }
+                    }
+                }
+            }
+            
+            // now for dex, update the checksum and the signature.
+            // special case:
+            // for two tests (currently T_f1_9.dfh and T_f1_10.dfh), we need
+            // to keep the checksum or the signature, respectively.
+            byte[] outBytes = baos.toByteArray();
+            if (isDex) {
+                boolean leaveChecksum = secondLine.contains("//@leaveChecksum");
+                boolean leaveSignature= secondLine.contains("//@leaveSignature");
+                // update checksum and signature for dex file            
+                if(!leaveSignature)
+                    calcSignature(outBytes);
+                if(!leaveChecksum)
+                    calcChecksum(outBytes);
+            }
+            rOs.write(outBytes);
+            rOs.close();
+        } catch (IOException e) {
+            throw new RuntimeException("problem while writing file",e);
+        }
+    }
+
+}
diff --git a/tools/dx-tests/src/dxconvext/ClassFileParser.java b/tools/dx-tests/src/dxconvext/ClassFileParser.java
new file mode 100644
index 0000000..8a43396
--- /dev/null
+++ b/tools/dx-tests/src/dxconvext/ClassFileParser.java
@@ -0,0 +1,283 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxconvext;
+
+import com.android.dx.cf.direct.ClassPathOpener;
+import com.android.dx.cf.direct.DirectClassFile;
+import com.android.dx.cf.direct.StdAttributeFactory;
+import com.android.dx.cf.iface.Member;
+import com.android.dx.cf.iface.ParseObserver;
+import com.android.dx.util.ByteArray;
+import com.android.dx.util.FileUtils;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+
+public class ClassFileParser {
+
+    private BufferedWriter bw; // the writer to write the result to.
+
+    /**
+     * Parses a .class file and outputs a .cfh (class file in hex format) file.
+     * 
+     * args[0] is the absolute path to the java src directory e.g.
+     * /home/fjost/android/workspace/dxconverter/src
+     * 
+     * args[1] is the absolute path to the classes directory e.g.
+     * /home/fjost/android/workspace/out/classes_javac this is the place where
+     * 
+     * args[2] is the absolute path to the java source file, e.g.
+     * /home/fjost/android/workspace/dxconverter/src/test/MyTest.java
+     * 
+     * 
+     * 
+     * @param args
+     */
+    public static void main(String[] args) throws IOException {
+        ClassFileParser cfp = new ClassFileParser();
+        cfp.process(args[0], args[1], args[2]);
+    }
+
+    private void process(final String srcDir, final String classesDir,
+            final String absSrcFilePath) throws IOException {
+        ClassPathOpener opener;
+
+        String fileName = absSrcFilePath;
+        // e.g. test/p1/MyTest.java
+        String pckPath = fileName.substring(srcDir.length() + 1);
+        // e.g. test/p1
+        String pck = pckPath.substring(0, pckPath.lastIndexOf("/"));
+        // e.g. MyTest
+        String cName = pckPath.substring(pck.length() + 1);
+        cName = cName.substring(0, cName.lastIndexOf("."));
+        String cfName = pck+"/"+cName+".class";
+        // 2. calculate the target file name:
+        // e.g. <out-path>/test/p1/MyTest.class
+        String inFile = classesDir + "/" + pck + "/" + cName + ".class";
+        if (!new File(inFile).exists()) {
+            throw new RuntimeException("cannot read:" + inFile);
+        }
+        byte[] bytes = FileUtils.readFile(inFile);
+        // write the outfile to the same directory as the corresponding .java
+        // file
+        String outFile = absSrcFilePath.substring(0, absSrcFilePath
+                .lastIndexOf("/"))+ "/" + cName + ".cfh";
+        Writer w;
+        try {
+            w = new OutputStreamWriter(new FileOutputStream(new File(outFile)));
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("cannot write to file:"+outFile, e);
+        }
+        // Writer w = new OutputStreamWriter(System.out);
+        ClassFileParser.this.processFileBytes(w, cfName, bytes);
+
+    }
+
+    /**
+     * 
+     * @param w the writer to write the generated .cfh file to
+     * @param name the relative name of the java src file, e.g.
+     *        dxc/util/Util.java
+     * @param allbytes the bytes of this java src file
+     * @return true if everthing went alright
+     */
+    void processFileBytes(Writer w, String name, final byte[] allbytes) throws IOException {
+        String fixedPathName = fixPath(name);
+        DirectClassFile cf = new DirectClassFile(allbytes, fixedPathName, true);
+        bw = new BufferedWriter(w);
+        String className = fixedPathName.substring(0, fixedPathName.lastIndexOf("."));
+        out("//@class:" + className, 0);
+        cf.setObserver(new ParseObserver() {
+            private int cur_indent = 0;
+            private int checkpos = 0;
+
+            /**
+             * Indicate that the level of indentation for a dump should increase
+             * or decrease (positive or negative argument, respectively).
+             * 
+             * @param indentDelta the amount to change indentation
+             */
+            public void changeIndent(int indentDelta) {
+                cur_indent += indentDelta;
+            }
+
+            /**
+             * Indicate that a particular member is now being parsed.
+             * 
+             * @param bytes non-null; the source that is being parsed
+             * @param offset offset into <code>bytes</code> for the start of
+             *        the member
+             * @param name non-null; name of the member
+             * @param descriptor non-null; descriptor of the member
+             */
+            public void startParsingMember(ByteArray bytes, int offset,
+                    String name, String descriptor) {
+                // ByteArray ba = bytes.slice(offset, bytes.size());
+                out("// ========== start-ParseMember:" + name + ", offset "
+                        + offset + ", len:" + (bytes.size() - offset)
+                        + ",desc: " + descriptor);
+                // out("// "+dumpReadableString(ba));
+                // out(" "+dumpBytes(ba));
+            }
+
+            /**
+             * Indicate that a particular member is no longer being parsed.
+             * 
+             * @param bytes non-null; the source that was parsed
+             * @param offset offset into <code>bytes</code> for the end of the
+             *        member
+             * @param name non-null; name of the member
+             * @param descriptor non-null; descriptor of the member
+             * @param member non-null; the actual member that was parsed
+             */
+            public void endParsingMember(ByteArray bytes, int offset,
+                    String name, String descriptor, Member member) {
+                ByteArray ba = bytes.slice(offset, bytes.size());
+                out("// ========== end-ParseMember:" + name + ", desc: "
+                        + descriptor);
+                // out("// "+dumpReadableString(ba));
+                // out(" "+dumpBytes(ba));
+            }
+
+            /**
+             * Indicate that some parsing happened.
+             * 
+             * @param bytes non-null; the source that was parsed
+             * @param offset offset into <code>bytes</code> for what was
+             *        parsed
+             * @param len number of bytes parsed
+             * @param human non-null; human form for what was parsed
+             */
+            public void parsed(ByteArray bytes, int offset, int len,
+                    String human) {
+                human = human.replace('\n', ' ');
+                out("// parsed:" + ", offset " + offset + ", len " + len
+                        + ", h: " + human);
+                if (len > 0) {
+                    ByteArray ba = bytes.slice(offset, offset + len);
+                    check(ba);
+                    out("// " + dumpReadableString(ba));
+                    out("   " + dumpBytes(ba));
+                }
+            }
+
+            private void out(String msg) {
+                ClassFileParser.this.out(msg, cur_indent);
+
+            }
+
+            private void check(ByteArray ba) {
+                int len = ba.size();
+                int offset = checkpos;
+                for (int i = 0; i < len; i++) {
+                    int b = ba.getByte(i);
+                    byte b2 = allbytes[i + offset];
+                    if (b != b2)
+                        throw new RuntimeException("byte dump mismatch at pos "
+                                + (i + offset));
+                }
+                checkpos += len;
+            }
+
+
+
+            private String dumpBytes(ByteArray ba) {
+                String s = "";
+                for (int i = 0; i < ba.size(); i++) {
+                    int byt = ba.getUnsignedByte(i);
+                    String hexVal = Integer.toHexString(byt);
+                    if (hexVal.length() == 1) {
+                        hexVal = "0" + hexVal;
+                    }
+                    s += hexVal + " ";
+                }
+                return s;
+            }
+
+            private String dumpReadableString(ByteArray ba) {
+                String s = "";
+                for (int i = 0; i < ba.size(); i++) {
+                    int bb = ba.getUnsignedByte(i);
+                    if (bb > 31 && bb < 127) {
+                        s += (char) bb;
+                    } else {
+                        s += ".";
+                    }
+                    s += "  ";
+                }
+                return s;
+            }
+
+
+        });
+        cf.setAttributeFactory(StdAttributeFactory.THE_ONE);
+        // what is needed to force parsing to the end?
+        cf.getMagic();
+        // cf.getFields();
+        // cf.getAttributes();
+        // cf.getMethods();        
+        bw.close();
+    }
+
+
+    private String getIndent(int indent) {
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < indent * 4; i++) {
+            sb.append(' ');
+        }
+        return sb.toString();
+    }
+
+    private void out(String msg, int cur_indent) {
+        try {
+            bw.write(getIndent(cur_indent) + msg);
+            bw.newLine();
+        } catch (IOException ioe) {
+            throw new RuntimeException("error while writing to the writer", ioe);
+        }
+    }
+
+    private static String fixPath(String path) {
+        /*
+         * If the path separator is \ (like on windows), we convert the path to
+         * a standard '/' separated path.
+         */
+        if (File.separatorChar == '\\') {
+            path = path.replace('\\', '/');
+        }
+
+        int index = path.lastIndexOf("/./");
+
+        if (index != -1) {
+            return path.substring(index + 3);
+        }
+
+        if (path.startsWith("./")) {
+            return path.substring(2);
+        }
+
+        return path;
+    }
+
+
+
+}
diff --git a/tools/dx-tests/src/dxconvext/util/FileUtils.java b/tools/dx-tests/src/dxconvext/util/FileUtils.java
new file mode 100644
index 0000000..7b7003d
--- /dev/null
+++ b/tools/dx-tests/src/dxconvext/util/FileUtils.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package dxconvext.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * File I/O utilities.
+ */
+public final class FileUtils {
+    /**
+     * This class is uninstantiable.
+     */
+    private FileUtils() {
+        // This space intentionally left blank.
+    }
+
+    /**
+     * Reads the named file, translating {@link IOException} to a
+     * {@link RuntimeException} of some sort.
+     * 
+     * @param fileName non-null; name of the file to read
+     * @return non-null; contents of the file
+     */
+    public static byte[] readFile(String fileName) {
+        File file = new File(fileName);
+        return readFile(file);
+    }
+
+    /**
+     * Reads the given file, translating {@link IOException} to a
+     * {@link RuntimeException} of some sort.
+     * 
+     * @param file non-null; the file to read
+     * @return non-null; contents of the file
+     */
+    public static byte[] readFile(File file) {
+        if (!file.exists()) {
+            throw new RuntimeException(file + ": file not found");
+        }
+
+        if (!file.isFile()) {
+            throw new RuntimeException(file + ": not a file");
+        }
+
+        if (!file.canRead()) {
+            throw new RuntimeException(file + ": file not readable");
+        }
+
+        long longLength = file.length();
+        int length = (int) longLength;
+        if (length != longLength) {
+            throw new RuntimeException(file + ": file too long");
+        }
+
+        byte[] result = new byte[length];
+
+        try {
+            FileInputStream in = new FileInputStream(file);
+            int at = 0;
+            while (length > 0) {
+                int amt = in.read(result, at, length);
+                if (amt == -1) {
+                    throw new RuntimeException(file + ": unexpected EOF");
+                }
+                at += amt;
+                length -= amt;
+            }
+            in.close();
+        } catch (IOException ex) {
+            throw new RuntimeException(file + ": trouble reading", ex);
+        }
+
+        return result;
+    }
+}
diff --git a/tools/dx-tests/src/util/CollectAllTests.java b/tools/dx-tests/src/util/CollectAllTests.java
new file mode 100644
index 0000000..fa09662
--- /dev/null
+++ b/tools/dx-tests/src/util/CollectAllTests.java
@@ -0,0 +1,521 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package util;
+
+import dxc.junit.AllTests;
+
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.textui.TestRunner;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.Map.Entry;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Main class to generate data from the test suite to later run from a shell
+ * script. the project's home folder.<br>
+ * <project-home>/src must contain the java sources<br>
+ * <project-home>/data/scriptdata will be generated<br>
+ * <project-home>/src/<for-each-package>/Main_testN1.java will be generated<br>
+ * (one Main class for each test method in the Test_... class
+ */
+public class CollectAllTests {
+
+    private static String PROJECT_FOLDER = "";
+    private static String PROJECT_FOLDER_OUT = "missing out folder!";
+    private static String JAVASRC_FOLDER = PROJECT_FOLDER + "/src";
+    private static HashSet<String> OPCODES = null;
+
+    /*
+     * a map. key: fully qualified class name, value: a list of test methods for
+     * the given class
+     */
+    private TreeMap<String, List<String>> map = new TreeMap<String, List<String>>();
+
+    private int testClassCnt = 0;
+    private int testMethodsCnt = 0;
+
+    private class MethodData {
+        String methodBody, constraint, title;
+    }
+
+    /**
+     * @param args
+     *            args 0 must be the project root folder (where src, lib etc.
+     *            resides)
+     *            args 1 must be the project out root folder (where the Main_*.java files
+     *            are put, and also data/scriptdata)
+     */
+    public static void main(String[] args) {
+        if (args.length >= 2) {
+            PROJECT_FOLDER = args[0];
+            PROJECT_FOLDER_OUT = args[1];
+            JAVASRC_FOLDER = PROJECT_FOLDER + "/src";
+        } else {
+            System.out.println("usage: args 0 must be the project root folder (where src, lib etc. resides)" +
+                    "and args 1 must be the project out root folder (where the Main_*.java file" +
+                    " are put, and also data/scriptdata)");
+            return;
+        }
+        
+
+        for (int i = 2; i < args.length; i++) {
+            if (OPCODES == null) {
+                OPCODES = new HashSet<String>();
+            }
+            OPCODES.add(args[i]);
+        }
+        
+        System.out.println("using java src:"+JAVASRC_FOLDER);
+        CollectAllTests cat = new CollectAllTests();
+        cat.compose();
+    }
+
+    public void compose() {
+        System.out.println("Collecting all junit tests...");
+        new TestRunner() {
+            @Override
+            protected TestResult createTestResult() {
+                return new TestResult() {
+                    @Override
+                    protected void run(TestCase test) {
+                        addToTests(test);
+                    }
+
+                };
+            }
+        }.doRun(AllTests.suite());
+
+        // for each combination of TestClass and method, generate a Main_testN1
+        // etc.
+        // class in the respective package.
+        // for the report make sure all N... tests are called first, then B,
+        // then
+        // E, then VFE test methods.
+        // so we need x Main_xxxx methods in a package, and x entries in the
+        // global scriptdata file (read by a bash script for the tests)
+        // e.g. dxc.junit.opcodes.aaload.Test_aaload - testN1() ->
+        // File Main_testN1.java in package dxc.junit.opcodes.aaload
+        // and entry dxc.junit.opcodes.aaload.Main_testN1 in class execution
+        // table.
+        //
+        handleTests();
+    }
+
+    private void addToTests(TestCase test) {
+        
+        String packageName = test.getClass().getPackage().getName();
+        packageName = packageName.substring(packageName.lastIndexOf('.')+1);
+        if (OPCODES != null && !OPCODES.contains(packageName)) {
+            return;
+        }
+
+        
+        String method = test.getName(); // e.g. testVFE2
+        String fqcn = test.getClass().getName(); // e.g.
+        // dxc.junit.opcodes.iload_3.Test_iload_3
+        // order: take the order of the test-suites for the classes,
+        // TODO and for methods: take Nx, then Bx, then Ex, then VFEx
+        //System.out.println("collecting test:" + test.getName() + ", class "
+        //        + test.getClass().getName());
+        testMethodsCnt++;
+        List<String> li = map.get(fqcn);
+        if (li == null) {
+            testClassCnt++;
+            li = new ArrayList<String>();
+            map.put(fqcn, li);
+        }
+        li.add(method);
+    }
+
+    private void handleTests() {
+        System.out.println("collected "+testMethodsCnt+" test methods in "+testClassCnt+" junit test classes");
+        String datafileContent = "";
+
+        for (Entry<String, List<String>> entry : map.entrySet()) {
+            
+            String fqcn = entry.getKey();
+            int lastDotPos = fqcn.lastIndexOf('.');
+            String pName = fqcn.substring(0, lastDotPos);
+            String classOnlyName = fqcn.substring(lastDotPos + 1);
+            String instPrefix = "new " + classOnlyName + "()";
+            
+            String[] nameParts = pName.split("\\.");
+            if (nameParts.length != 4) {
+                throw new RuntimeException(
+                        "package name does not comply to naming scheme: " + pName);
+            }
+            
+           
+            List<String> methods = entry.getValue();
+            Collections.sort(methods, new Comparator<String>() {
+                public int compare(String s1, String s2) {
+                    // TODO sort according: test ... N, B, E, VFE
+                    return s1.compareTo(s2);
+                }
+            });
+            for (String method : methods) {
+                // e.g. testN1
+                if (!method.startsWith("test")) {
+                    throw new RuntimeException("no test method: " + method);
+                }
+                
+                // generate the Main_xx java class
+
+                // a Main_testXXX.java contains:
+                // package <packagenamehere>;
+                // public class Main_testxxx {
+                // public static void main(String[] args) {
+                // new dxc.junit.opcodes.aaload.Test_aaload().testN1();
+                // }
+                // }
+
+                MethodData md = parseTestMethod(pName, classOnlyName, method);
+                String methodContent = md.methodBody;
+
+                Set<String> dependentTestClassNames = parseTestClassName(pName,
+                        classOnlyName, methodContent);
+                
+                if (dependentTestClassNames.isEmpty())
+                {
+                    continue;
+                }
+                
+
+                String content = "//autogenerated by "
+                        + this.getClass().getName()
+                        + ", do not change\n"
+                        + "package "
+                        + pName
+                        + ";\n"
+                        + "import "
+                        + pName
+                        + ".jm.*;\n"
+                        + "import dxc.junit.*;\n"
+                        + "public class Main_"
+                        + method
+                        + " extends DxAbstractMain {\n"
+                        + "public static void main(String[] args) throws Exception {\n"
+                        + "new Main_" + method + "()." + method + "();\n"
+                        + "}\n" + methodContent + "\n}\n";
+
+                writeToFile(getFileFromPackage(pName, method), content);
+
+                // prepare the entry in the data file for the bash script.
+                // e.g.
+                // main class to execute; opcode/constraint; test purpose
+                // dxc.junit.opcodes.aaload.Main_testN1;aaload;normal case test
+                // (#1)
+
+                char ca = method.charAt("test".length()); // either N,B,E, oradd_double
+                // V (VFE)
+                String comment;
+                switch (ca) {
+                case 'N':
+                    comment = "Normal #" + method.substring(5);
+                    break;
+                case 'B':
+                    comment = "Boundary #" + method.substring(5);
+                    break;
+                case 'E':
+                    comment = "Exception #" + method.substring(5);
+                    break;
+                case 'V':
+                    comment = "Verifier #" + method.substring(7);
+                    break;
+                default:
+                    throw new RuntimeException("unknown test abbreviation:"
+                            + method + " for " + fqcn);
+                }
+
+                String opcConstr = pName.substring(pName.lastIndexOf('.') + 1);
+                // beautify test title
+                if (opcConstr.startsWith("t4")) {
+                    opcConstr = "verifier"; //  + opcConstr.substring(1);
+                } else if (opcConstr.startsWith("pargs")) {
+                    opcConstr = "sanity";
+                } else if (opcConstr.startsWith("opc_")) {
+                    // unescape reserved words
+                    opcConstr = opcConstr.substring(4);
+                }
+                
+                String line = pName + ".Main_" + method + ";";                
+                for (String className : dependentTestClassNames) {
+                    try {
+                        Class.forName(className);
+                    } catch (ClassNotFoundException e) {
+                        throw new RuntimeException(
+                                "dependent class not found : " + className);
+                    } catch (Throwable e) {
+                        // ignore
+                    }
+                    
+                    line += className + " ";
+                }
+                
+                String details = (md.title != null ? md.title : "");
+                if (md.constraint != null) {
+                    details = "Constraint " + md.constraint + ", " + details;
+                }
+                if (details.length() != 0) {
+                    details = details.substring(0, 1).toUpperCase() 
+                            + details.substring(1);
+                }
+
+                line += ";" + opcConstr + ";"+ comment + ";" + details;
+                
+                datafileContent += line + "\n";
+                
+            }
+
+
+        }
+        new File(PROJECT_FOLDER_OUT + "/data").mkdirs();
+        writeToFile(new File(PROJECT_FOLDER_OUT + "/data/scriptdata"),
+                datafileContent);
+    }
+
+
+
+    /**
+     * 
+     * @param pName
+     * @param classOnlyName
+     * @param methodSource
+     * @return a set
+     */
+    private Set<String> parseTestClassName(String pName, String classOnlyName,
+            String methodSource) {
+        Set<String> entries = new HashSet<String>();
+        String opcodeName = classOnlyName.substring(5);
+
+        Scanner scanner = new Scanner(methodSource);
+
+        String[] patterns = new String[] {
+                "new\\s(T_" + opcodeName + "\\w*)",
+                "(T_" + opcodeName + "\\w*)", "new\\s(T\\w*)"};
+
+        String token = null;
+        for (String pattern : patterns) {
+            token = scanner.findWithinHorizon(pattern, methodSource.length());
+            if (token != null) {
+                break;
+            }
+        }
+
+        if (token == null) {
+            System.err.println("warning: failed to find dependent test class name: "+pName+", "+classOnlyName);
+            return entries;
+        }
+
+        MatchResult result = scanner.match();
+
+        entries.add((pName + ".jm." + result.group(1)).trim());
+        
+        // search additional @uses directives
+        Pattern p = Pattern.compile("@uses\\s+(.*)\\s+", Pattern.MULTILINE);
+        Matcher m = p.matcher(methodSource);
+        while (m.find()) {
+            String res = m.group(1);
+            entries.add(res.trim());
+        }
+        
+        //lines with the form @uses dx.junit.opcodes.add_double.jm.T_add_double_2
+        // one dependency per one @uses
+        //TODO
+        
+        return entries;
+    }
+
+    private MethodData parseTestMethod(String pname, String classOnlyName,
+            String method) {
+
+        String path = pname.replaceAll("\\.", "/");
+        String absPath = JAVASRC_FOLDER + "/" + path + "/" + classOnlyName
+                + ".java";
+        File f = new File(absPath);
+
+        Scanner scanner;
+        try {
+            scanner = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading from file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+
+        String methodPattern = "public\\s+void\\s+" + method + "[^\\{]+\\{";
+
+        String token = scanner.findWithinHorizon(methodPattern, (int) f
+                .length());
+        if (token == null) {
+            throw new RuntimeException(
+                    "cannot find method source of 'public void" + method
+                            + "' in file '" + absPath + "'");
+        }
+
+        MatchResult result = scanner.match();
+        result.start();
+        result.end();
+
+        StringBuilder builder = new StringBuilder();
+        builder.append(token);
+
+        try {
+            FileReader reader = new FileReader(f);
+            reader.skip(result.end());
+
+            char currentChar;
+            int blocks = 1;
+            while ((currentChar = (char) reader.read()) != -1 && blocks > 0) {
+                switch (currentChar) {
+                case '}': {
+                    blocks--;
+                    builder.append(currentChar);
+                    break;
+                }
+                case '{': {
+                    blocks++;
+                    builder.append(currentChar);
+                    break;
+                }
+                default: {
+                    builder.append(currentChar);
+                    break;
+                }
+                }
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("failed to parse", e);
+        }
+
+        // find the @title/@constraint in javadoc comment for this method
+        Scanner scanner2;
+        try {
+            // using platform's default charset
+            scanner2 = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading from file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+        
+        // using platform's default charset
+        String all = new String(readFile(f));
+        // System.out.println("grepping javadoc found for method "+method +
+        // " in "+pname+","+classOnlyName);
+        String commentPattern = "/\\*\\*([^{]*)\\*/\\s*" + methodPattern;
+        Pattern p = Pattern.compile(commentPattern, Pattern.DOTALL);
+        Matcher m = p.matcher(all);
+        String title = null, constraint = null;
+        if (m.find()) {
+            String res = m.group(1);
+            // System.out.println("res: "+res);
+            // now grep @title and @constraint
+            Matcher titleM = Pattern.compile("@title (.*)", Pattern.DOTALL)
+                    .matcher(res);
+            if (titleM.find()) {
+                title = titleM.group(1).replaceAll("\\n     \\*", "");
+                title = title.replaceAll("\\n", " ");
+                title = title.trim();
+                // System.out.println("title: " + title);
+            } else {
+                System.err.println("warning: no @title found for method "
+                        + method + " in " + pname + "," + classOnlyName);
+            }
+            // constraint can be one line only
+            Matcher constraintM = Pattern.compile("@constraint (.*)").matcher(
+                    res);
+            if (constraintM.find()) {
+                constraint = constraintM.group(1);
+                constraint = constraint.trim();
+                // System.out.println("constraint: " + constraint);
+            } else if (method.contains("VFE")) {
+                System.err
+                        .println("warning: no @constraint for for a VFE method:"
+                                + method + " in " + pname + "," + classOnlyName);
+            }
+        } else {
+            System.err.println("warning: no javadoc found for method " + method
+                    + " in " + pname + "," + classOnlyName);
+        }
+        MethodData md = new MethodData();
+        md.methodBody = builder.toString();
+        md.constraint = constraint;
+        md.title = title;
+        return md;
+    }
+
+    private void writeToFile(File file, String content) {
+        //System.out.println("writing file " + file.getAbsolutePath());
+        try {
+            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
+                    new FileOutputStream(file), "utf-8"));
+            bw.write(content);
+            bw.close();
+        } catch (Exception e) {
+            throw new RuntimeException("error while writing to file: "
+                    + e.getClass().getName() + ", msg:" + e.getMessage());
+        }
+    }
+
+    private File getFileFromPackage(String pname, String methodName) {
+        // e.g. dxc.junit.argsreturns.pargsreturn
+        String path = pname.replaceAll("\\.", "/");
+        String absPath = PROJECT_FOLDER_OUT + "/" + path;
+        new File(absPath).mkdirs();
+        return new File(absPath + "/Main_" + methodName + ".java");
+    }
+    
+    private byte[] readFile(File file) {
+        int len = (int) file.length();
+        byte[] res = new byte[len];
+        try {
+            FileInputStream in = new FileInputStream(file);
+            int pos = 0;
+            while (len > 0) {
+                int br = in.read(res, pos, len);
+                if (br == -1) {
+                    throw new RuntimeException("unexpected EOF for file: "+file);
+                }
+                pos += br;
+                len -= br;
+            }
+            in.close();
+        } catch (IOException ex) {
+            throw new RuntimeException("error reading file:"+file, ex);
+        }
+        return res;
+    }
+}
diff --git a/tools/dx-tests/src/util/CompileAllJasmin.java b/tools/dx-tests/src/util/CompileAllJasmin.java
new file mode 100644
index 0000000..834662b
--- /dev/null
+++ b/tools/dx-tests/src/util/CompileAllJasmin.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * 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.
+ */
+
+package util;
+
+import java.io.FileInputStream;
+import java.util.Iterator;
+import java.util.Properties;
+
+import jasmin.Main;
+
+public class CompileAllJasmin {
+
+    /**
+     * @param args args[0] the (absolute or relative to the working dir) 
+     * path to the (properties) file containing line by line
+     * all jasmin files which need to be compiled.
+     * args[1] is the target directory where to put the compiled .class files to
+     */
+    public static void main(String[] args) throws Exception {
+        System.out.println("reading from "+args[0]+" and writing to "+args[1]);
+        Properties p = new Properties();
+        p.load(new FileInputStream(args[0]));
+        
+        //System.out.println("p:::"+p.toString());
+        int i=0;
+        for (Iterator<Object> it_keys = p.keySet().iterator(); it_keys.hasNext();) {
+            String file = (String) it_keys.next();
+            Main m = new jasmin.Main();
+            //java -jar $project_lib/jasmin.jar -d $javac_out $ajasminfile
+            if (i ==0) {
+                m.main(new String[] {"-d" ,args[1], file });
+            } else {
+                // leave away -d option since saved into static field
+                m.main(new String[] {file });
+            }
+            i++;
+        }
+    }
+
+}
diff --git a/tools/dx-tests/utilclasses/util/CompileAllJasmin.class b/tools/dx-tests/utilclasses/util/CompileAllJasmin.class
new file mode 100644
index 0000000..2b866b2
--- /dev/null
+++ b/tools/dx-tests/utilclasses/util/CompileAllJasmin.class
Binary files differ