+ 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 .class 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
+
+
+ The test suite is normally included in a full build of the Android
+ project. If it needs to be built individually, a simple
+
+
+ make dx-tests
+
+
+ or an
+
+
+ mm
+
+
+ in this directory will do.
+
+
+
How to run
+
+
+ The suite can be invoked by executing
+
+
+ dx-tests
+
+
+ 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
+
+
+ dx-tests anewarray
+
+
+ executes the tests for the anewarray 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:
+
+
+ dx-tests sanity
+ dx-tests verifier
+
+
+ The suite is normally run for the fast version of the interpreter. To run
+ it for the portable interpreter, pass --portable as the first
+ parameter. Passing --help results in a brief overview of the
+ options.
+
+
+
+ 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.
+
+
+
+ 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:
+
+
+
+
+
Type in report
Type on console
Description
+
+
+
Success
+
.
+
+ The test case passed successfully.
+
+
+
+
Functional failure
+
F
+
+ A functional (normal or boundary) or an exception test case
+ failed.
+
+
+
+
Verifier failure
+
V
+
+ A verifier test case failed. Either the verifier accepted
+ some invalid piece of code or it rejected a valid one.
+
+
+
+
Warning
+
W
+
+ A verifier test case threw VerifyError, where a
+ different VM would have thrown a different exception. This is
+ specified Dalvik behavior, though, hence just the warning.
+
+
+
+
+
diff --git a/tools/dx-tests/etc/cfassembler b/tools/dx-tests/etc/cfassembler
new file mode 100644
index 0000000000000000000000000000000000000000..e05f4ae925ee3b5b4d3b4aab6b23287dfe2a1a47
--- /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 0000000000000000000000000000000000000000..382adc694fe8c979a4dfef32a239612af5ec47c0
--- /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 0000000000000000000000000000000000000000..57bcec65b230abce8243b0f7f6b94245751898ef
--- /dev/null
+++ b/tools/dx-tests/etc/compileall
@@ -0,0 +1,114 @@
+#!/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
+outdir=$5
+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 $javac_out
+rm -rf $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=$outdir/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 0000000000000000000000000000000000000000..ff0b3233bc5922bec42d63e4d8919d51da895d5b
--- /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 0000000000000000000000000000000000000000..c7aae4234395f46261abdc6eb022ea5a04a6d531
--- /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 0000000000000000000000000000000000000000..b062fe7a17f809a3d544ed763792e37e6b19e7ca
--- /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 $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=$progdir/../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] []"
+ echo ""
+ echo " --help prints this help message"
+ echo " --portable uses the portable interpreter;"
+ echo " default is the fast one"
+ echo ""
+ echo " 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="
+
+
DX test suite results
+Generated $curdate (using the $curmode)
+
+
+
Status
Target
Category
Details
"
+post_report=""
+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 $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 "
"
+ # 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 "
" >> $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 "
" >> $report
+let jallcalccnt=$jpassedcnt+$jfailedcnt+$jvfefailedcnt+$jwarningcnt
+if [ $jallcalccnt -ne $jallcnt ]; then
+ echo " error: green & red != total , $jallcalccnt -ne $jallcnt" >> $report
+ exit 1;
+fi
+
+echo " Tests run: ${jallcnt}" >> $report
+echo " Functional failures: ${jfailedcnt}" >> $report
+echo " Verifier failures: ${jvfefailedcnt}" >> $report
+echo " 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 0000000000000000000000000000000000000000..87db0d0346a3569db3b7ed385a0664a5dd58e055
Binary files /dev/null and b/tools/dx-tests/lib/jasmin.jar differ
diff --git a/tools/dx-tests/lib/junit.jar b/tools/dx-tests/lib/junit.jar
new file mode 100644
index 0000000000000000000000000000000000000000..674d71e89ea154dbe2e3cd032821c22b39e8fd68
Binary files /dev/null and b/tools/dx-tests/lib/junit.jar differ
diff --git a/tools/dx-tests/scripts/assemble_cfh.sh b/tools/dx-tests/scripts/assemble_cfh.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0c8e9c743245e7106e50c1f94dd87ed5aa8492b6
--- /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 0000000000000000000000000000000000000000..d4275c08a8ed189ed54874771511933df85dd423
--- /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 0000000000000000000000000000000000000000..c9c18484975c4d10568a73c4f7080865f725583d
--- /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 0000000000000000000000000000000000000000..df73cf1b2646f85b66c57610795bd40f4e70b85e
--- /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 0000000000000000000000000000000000000000..04031da65283cc26f0eac6d087465771f9febcce
--- /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 0000000000000000000000000000000000000000..d5867bf42c3284e704129f578876cf9b6e0f1c30
--- /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 0000000000000000000000000000000000000000..157e489be0a63a4347500571b54c2fade6f80d0e
--- /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 0000000000000000000000000000000000000000..00b57e80649db805dc049f7d66dd68414a86eec3
--- /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 0000000000000000000000000000000000000000..f1c90b3bee625baa74ab80a88b9da1402298500b
--- /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 0000000000000000000000000000000000000000..fc3286827dd85e0d88326587d5e5e3959d03d2c3
--- /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 0000000000000000000000000000000000000000..e6f0f0403bed80dc2bf937584166dde639f6cb01
--- /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 0000000000000000000000000000000000000000..46eb6b8652eb9be13c41906204fe9e8d26b96662
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..196ae8d56d74b782c0b9dcb98f23168ffdee8b0e
--- /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 0000000000000000000000000000000000000000..141877c1379b0c2594e73472997c54da077264d4
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..b89bfd390df5e67ee9eece9707f6346141e762c2
--- /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 0000000000000000000000000000000000000000..d4ead13626a16b43c8e021fe007a79af09962457
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..e50f39e15f26f69e51efff54fdc04cf996828473
--- /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 0000000000000000000000000000000000000000..1b294c65eb62836cc90ff8399e3a70c9061877b7
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..bb8da487e07e66f437a4c6f719f6ff2752424a4b
--- /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 0000000000000000000000000000000000000000..2c49ccc4b48a2158d2df6edc149195ac311463ad
--- /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 0000000000000000000000000000000000000000..eebfa9285ebc9811e24bf2c37b39d6016d6bbdbd
--- /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 0000000000000000000000000000000000000000..90ecad724b5a75fe1d8ff7c221842a3feef98327
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..8cdd5275376fdc7f8ee2412d168d510c5c507a77
--- /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 0000000000000000000000000000000000000000..6f906b0d71c7601bcdc67ef415d5e1c701c9e941
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..55c823817f1063b30fff243c592ec60a6d3f7ff1
--- /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 0000000000000000000000000000000000000000..370de7099d17b5178b035705a7552d8937bdf77d
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..0afdc213c41f627c728c74ab2ebf95e8a704607d
--- /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 0000000000000000000000000000000000000000..94d7275e502cb4e60ac1b0dc131ec75a89d3d7c7
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..4505b73e6e48a7bef0fbf6b81bb5daae15ec0239
--- /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 0000000000000000000000000000000000000000..a34bcdc23e02ce89632a86ab84a150e63aff53fb
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..33b389677c6311bff3b487df1c8722f5981e8aff
--- /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 0000000000000000000000000000000000000000..e4dbc175ba55a863815ba0a0b46e7164ae547360
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..35c428f57641c49734fca47e11d8e91610e4f98b
--- /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 0000000000000000000000000000000000000000..86a256d1ea56bc2ef45a4c51eefd976e9bc69b45
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..445620533b7cce2dc8d7b6170ae8367abb66bf0a
--- /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 0000000000000000000000000000000000000000..5cd99efd24f228d4f3871222a7d688b2e3a2e3d0
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..18882331f2dc6e87537766b90c51e20fa4cbfc45
--- /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 0000000000000000000000000000000000000000..27de7bc3f91f6bdb4ed8bec481a57db8f249016a
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..33c3824523566598af7054730554c4a051dfd452
--- /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 0000000000000000000000000000000000000000..419c7b0a3e5e6287e4c8f48ccb6971c904855f97
--- /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 0000000000000000000000000000000000000000..abbd91c855d4448f76ee4b5c97ad05688b71361f
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..bea5c1941eb3327c6885d1224995f9dbe763d625
--- /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 0000000000000000000000000000000000000000..1dbfb4b1738f7c526a82e14124ee6d0c33521d6d
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..f94c16604af9e077e0d11b089e444e6d26af1727
--- /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 0000000000000000000000000000000000000000..278f7f0bee2df15f6b138da1feb1de246f6439ca
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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.()V
+ astore 4 ; SubClass
+
+ new dxc/junit/opcodes/aastore/jm/SuperClass
+ dup
+ invokespecial dxc/junit/opcodes/aastore/jm/SuperClass.()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 0000000000000000000000000000000000000000..ad0c2224c91ab3ebafa968a6bba43d3295dec8cd
--- /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 0000000000000000000000000000000000000000..ee00a4a9dd4a77e3f635dfdc7a878a410a06e0f3
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c2b1c7578018fe6267dfb4585a86085c87af9045
--- /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 0000000000000000000000000000000000000000..2c9d227ab08a2fe2589d5faf1a2e7856921ac22d
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..39b0b09f0aa481bc164f13cec22bd3109ae35c5f
--- /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 0000000000000000000000000000000000000000..531ab76497627499102961edf7fc068856107f53
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..2f77f611283826d8f15a680dc6b21e3ec1275703
--- /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 0000000000000000000000000000000000000000..38b89e8c9469490350dfc79840e3723fa0557d8f
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..3c6f5583bde3e1679c2b392e6b2d428f4ab69b59
--- /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 0000000000000000000000000000000000000000..89e70cc7721bef02a940e9775912ae02d4845ed6
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..d0636232d047dfbacff8c9613779fce1468d0be1
--- /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 0000000000000000000000000000000000000000..1e5e7cead4a0b11dc3d8f682cd0a7b515ef02307
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..449f21c7d7781af4008053d0d93032ea979d3431
--- /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 0000000000000000000000000000000000000000..b89c42f8ed134d7ddc0d2867925d1880568da340
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..082f5c27520781def4d695c9198ebafffffc45b3
--- /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 0000000000000000000000000000000000000000..d6fc1471df3c4c3d32c5d7c4bf809b1f922d0b9d
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..ef570882739408fc99a044b6f57486f41273be33
--- /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 0000000000000000000000000000000000000000..83d163f4747bc591798cb1adbf098c16353f46f8
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..f5713a01cd0d7dbd74cc63f4d0e9df283c6ed300
--- /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 0000000000000000000000000000000000000000..190220fca3261673352e5af6c69699fb1ea86b80
--- /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 0000000000000000000000000000000000000000..531e559b47da69eeaded1e7907ca7eff8bb3a548
--- /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 0000000000000000000000000000000000000000..fe997d2996bb15707b49e790fbac98c63dc69301
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..0cc8d3366b91661d341da913e9065865394fd228
--- /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 0000000000000000000000000000000000000000..9993f2b178f5657f450bca7e232247ae59000adf
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..cff192e680b9c3c22c2a1095716e3af29029f2f3
--- /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 0000000000000000000000000000000000000000..85632390c3ecc1e9b457b41fa1982a166a235f7a
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..fb737bebdc2da562e47116dcf19810d54b06e94b
--- /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 0000000000000000000000000000000000000000..cb90bcb1ffb34abde0be2af376de5df5cf5d278b
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..eee3830114c57ba191f4082ace492f279d54eac9
--- /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 0000000000000000000000000000000000000000..2bd7bf4b0cdbf2bf4b1f51108b7fef7c6e10ff9e
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..23b55e37271375faf327b4a1c9d3d666c7c6ffac
--- /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 0000000000000000000000000000000000000000..fb0bb5f4b51c240394a2ea7f107a19c797268c96
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..34ae0fd28566498e47f05b514b9b4fd9e596cfb1
--- /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 0000000000000000000000000000000000000000..0c5d5f2c6b22962cc6b94b96d9dfad909e7a3cfa
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..e09b3f39863538db161d44f26e7cb6ea59ddd960
--- /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 0000000000000000000000000000000000000000..41696c1c8ffca7dcd45093f0d7741acd3293fa08
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..1bda5b3fc09f60a3d53602a70c83585b203b22ef
--- /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 0000000000000000000000000000000000000000..d14e595e0a202180ffd610108a4ed4367eebc2fd
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..a293d137167adaa105151f879c41b63a0172b282
--- /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 0000000000000000000000000000000000000000..c6112743a608e47094a7e72f65180f85e787d501
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..17ee8f6c61228599fcbfc63949f85ac147679bf5
--- /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 0000000000000000000000000000000000000000..c568f542b91e6cfc62ad9dc21bef75eb93e0f6f5
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..21b90bd32f9ab3c39ee7623ad86ce51a2d04495d
--- /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 0000000000000000000000000000000000000000..4c133fc08b72ffc48ece7d11af9b5c296525579c
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..8331d511e992860c525a5b86905c57becc78964a
--- /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 0000000000000000000000000000000000000000..afbff18e7bc6e27ca5e719a0ce93d5975add945a
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..2a622c05e2bf31726a2abb1de7d913b6428fbae7
--- /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 0000000000000000000000000000000000000000..0e62855ed4fcc312a603ef072ff0e7a53e454ff4
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..38ec788cc2058024217af09513f3e3663aca4f03
--- /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 0000000000000000000000000000000000000000..8aacd2c310f5fe25927d2b7af1c18f018d869241
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..2ff26f0f5a430bab2b02aea807891398dfaa1c67
--- /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 0000000000000000000000000000000000000000..9b7a8e9a324231e8203345683e7e48c291dcbfc9
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..110edd8e3612fe190721da1ee986100a2e1a5e0c
--- /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 0000000000000000000000000000000000000000..457d2abdb32bbdf5d711318f4dcd3db35aa30ad2
--- /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_ and aload
+ */
+ 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 0000000000000000000000000000000000000000..99a6407e7ce933d0a3509b37e3e1d8813ce89dfd
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..cc72d47abea2ca7396160df0e2b0bfb314081236
--- /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 0000000000000000000000000000000000000000..0e2b13030bc238b34685d5c8367f8859faa5a0ef
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..ede0a706ba9f627f9e909dd05c164c2848abdaec
--- /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 0000000000000000000000000000000000000000..681f4007c1a79e7f04647b81d1984fff6008dc7c
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..e9ee293d54d11f8b7eb1a76e458d033e66530e1a
--- /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 0000000000000000000000000000000000000000..ea898b30f0b61229f13e759c43fa8a95f16e6360
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c6a30adec42a0a59162e9c1330d18cac91d91dff
--- /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 0000000000000000000000000000000000000000..c30867e82060fd9eea3013814005a537cc0a5a46
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c9a12a32c54f6d5684e9aee34c4bf212c8bf7a55
--- /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 0000000000000000000000000000000000000000..1f823e54fc58820a7bce2c295f7e93e37af91602
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..350126f0a9842d151e8d24917f24030d8dc4718c
--- /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 0000000000000000000000000000000000000000..8e0073c01cdeeda4503d96d3b0c681a0adaffacb
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..7d002efc3d0dd6a34861eeafa281f504fa9fa559
--- /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 0000000000000000000000000000000000000000..d2922cc4b38c0578237efb06a3969028f060b5bd
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..1e268b92cd41341b56727195bdfc672e0e4a7c9b
--- /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 0000000000000000000000000000000000000000..22a129e8345c2fa6e010fbf7ca81f72896ea9ace
--- /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_ and aload
+ */
+ 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 0000000000000000000000000000000000000000..e2718f526935f32685994a40f5f98de76b2b31f3
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..e5e4fc6aff2b545e63f078b9f4a75d249d89dd20
--- /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 0000000000000000000000000000000000000000..8089467fb1e4b51c55fe0736a7faaebf598e0f26
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..d223d2902140c79d00821a8fc049e552f1ce32db
--- /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 0000000000000000000000000000000000000000..0d98b4c44df031390f3ec67e28d7ec8c17ad62ff
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..e639b3b77ab5edcf0f3e5772cf30032ab91258a5
--- /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 0000000000000000000000000000000000000000..037314b2285e1d3aa7b04a9006d84ce1328c3ae2
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..42630647bf8d17bca39affe561fe05f50eedf9a1
--- /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 0000000000000000000000000000000000000000..9e84cc2e4ed2d3879b7849493cc727987e491a39
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..88fb112b8b0f6146141976c6f2626a86072817c1
--- /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 0000000000000000000000000000000000000000..2a476d69ab291e900df180aa1c9612ec89fc2741
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..a5b95c39bd6dabed27ec842058ef3a70f04cc4b7
--- /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 0000000000000000000000000000000000000000..dcc158f2d59b2d573c190f1e2c40307d68102eec
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..08930a618e98f127720337e56a886f37a92a8fda
--- /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 0000000000000000000000000000000000000000..a72e6f138b9dbdcc0e862db46b2dc42dfedc245d
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..9fd86cc072daa9cd90099eb123d6fca8ab0e2655
--- /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 0000000000000000000000000000000000000000..d01c00b8e560f3109b562416a3911813821d9db1
--- /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_ and aload
+ */
+ 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 0000000000000000000000000000000000000000..cf7efe7681b6e21524478c49db436c5565a04a88
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..a57be08c2a91582be4b65150afd72f0ea1a0bce2
--- /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 0000000000000000000000000000000000000000..12a73ffd3cb7e5daa7ac22aa6bdf43d7b3b81093
--- /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 ()V
+ .limit stack 1
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c2b074d2e1582cc981385c45bff632c193eda094
--- /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 0000000000000000000000000000000000000000..829b23ab1eecaf9dd1221d897ae1e63ef382f6b1
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..5fe9956dac5e694ad8e9a4b92d5cf90bb3ebe169
--- /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 0000000000000000000000000000000000000000..14565e7a1132814fe591a594edc179ee1c413ebe
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..604db5ae58daad43b1f8481be22892e0d86da75e
--- /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 0000000000000000000000000000000000000000..8d3fd279e0419701f601c3874c388e40c657625b
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..3a39ef95aea46022b7816ff1f84244d2152f740d
--- /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 0000000000000000000000000000000000000000..aa81a91ffc4da0eeec801ddc3b0900f332cdca78
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..a4e9ca05121654b07bdfad38f3c0a8f8b682cd55
--- /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 0000000000000000000000000000000000000000..bf69c979a820a27f071012683c00af9314b79810
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..e9e8773265a2dbb0daea98569760d283ddab7610
--- /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 0000000000000000000000000000000000000000..d03eedf71cb188f5421bfcaa950cd8d568c19d58
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..56e6e7aa7ba31002c2aae5b4520bb6ec5b7de031
--- /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 0000000000000000000000000000000000000000..ee67af094afcd29c0645e6a96a3234158b1d2982
--- /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_ and aload
+ */
+ 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 0000000000000000000000000000000000000000..2d79c9091ebf5ab0edbf35aa6bf690afe373dc4a
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..27b910f4c38527b2a7c940a2f193c04324c0564a
--- /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 0000000000000000000000000000000000000000..ed1f591a20c35006891b9303087e7b50486b5caa
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..15743fdc63dcd1569a84f79992ddb91a1137d327
--- /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 0000000000000000000000000000000000000000..164dc3ce9d09271503fca6627cca1d9a6ba91e9f
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..90ff938ea64be70f3b1e36c47fb6e97998b68ab4
--- /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 0000000000000000000000000000000000000000..d83697a279b275b6b2dc0eef2955cb7a3064884e
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..51b8522611f3606f7aca348566e6253430634e52
--- /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 0000000000000000000000000000000000000000..2acfe287911a72a2e020192b1a2503e932f29b62
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..a2cb2d9bb4bce96ff241ffdb2bdff986f69009d4
--- /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 0000000000000000000000000000000000000000..905342af9e9dcea7b5d25ad07058091d5f2747cf
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..ce9727b75d6246ed9fa63875af004a2266cc0172
--- /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 0000000000000000000000000000000000000000..1083e931afe98d5e7937e6dc899da1735f5d5180
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..d8f143f59840268017f9e86ee92f6d97b13c0d1f
--- /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 0000000000000000000000000000000000000000..66997327a6c8747cc348ade9671088825a41a652
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..12628efb12931040c5e080d1443a2c72ad465777
--- /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 0000000000000000000000000000000000000000..08a00cd17ced8824c6f97be772c89b8f891196b8
--- /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 0000000000000000000000000000000000000000..ecc1ce27632492db3afd85bc9b9dd537788e5e05
--- /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
+ *
+ * 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 0000000000000000000000000000000000000000..3fbf658ce71ca823f840a7c6f23452574e9b67bb
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..43583826908a853d378e14d8a16bf76a1194d054
--- /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 0000000000000000000000000000000000000000..d2fef44bf4578dff7dfacde2202a80667deb2c04
--- /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.:()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{""}
+ // . . . < 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{:()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:, 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:
+ // . .
+ 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.:()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:, 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 0000000000000000000000000000000000000000..41c2fc2407ca5a082843119c738d4b10bd5fc7dd
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..d58fa37203e035a563df228544a549185e9b349f
--- /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 0000000000000000000000000000000000000000..6e6f638f1e1d707f4c6bcccfa78009d1ff1f16f1
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c5b8e540f8c8610161416246175bcfd43093c0f3
--- /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 0000000000000000000000000000000000000000..0ed6b0f82830e5352766751bf8e691022b2ad094
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..12563434bcc3db99d3ab78678fe454fe68d75a69
--- /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 0000000000000000000000000000000000000000..d5d1770bce1330006334347e0d6cc9bbbe69713e
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c0f876334a74802c42a3b6dd25ab5d2dc9a8c8df
--- /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 0000000000000000000000000000000000000000..f2a53693041313cd1d3cd982f72e47c2e3ef3de1
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..23fe874e637e2c4460af1a1d33cf3a5028f6794e
--- /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 0000000000000000000000000000000000000000..8915c0e861f1e7a6536c37a1e5f2a3270415ed6c
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..b8a99971635090a60466ad86bf056c0172923b05
--- /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 0000000000000000000000000000000000000000..85e65ca189616e43b6d8be5b6b8dfca62d63e619
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..dc349eed9bccb10ce07d8c6457e0bbcf01607f97
--- /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 0000000000000000000000000000000000000000..7f763fba5236034620cd6bf4caf9231c1d824c38
--- /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.:()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{""}
+ // . . . < 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{:()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:, 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:
+ // . .
+ 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.:()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:, 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 0000000000000000000000000000000000000000..d91f6f5b7b8a04932a85399ac7769e05ae9ee702
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..30ab5f733b11898079cf850ae90af3ff33e2d87d
--- /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 0000000000000000000000000000000000000000..73452fdf6160efdef8ace0d598268ab6e2f84aae
--- /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 0000000000000000000000000000000000000000..580812da50eb299fa746363a23fe5c8f300b6f6a
--- /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 0000000000000000000000000000000000000000..e9f34ec5928511959b957ecc26c298bb7c782ddd
--- /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 0000000000000000000000000000000000000000..5485d034d69e984061957169cebf42c231754e82
--- /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 0000000000000000000000000000000000000000..900806dafc1108c39a625becab66db09eff0a290
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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/(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 0000000000000000000000000000000000000000..a4a7719234a1d38b7110be4501974e2d813b83bf
--- /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 0000000000000000000000000000000000000000..db962a6342fca62dfccaf4cabe9b10026520b47f
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..efe5c5e60885e22ffb8bfc2aafc410bc185eaefc
--- /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 0000000000000000000000000000000000000000..1a75aee9f0f658656a097e34d7cdb82c2fa842dd
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..ea112aec33fc9fe992db377ace8d3f69f825fd93
--- /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 0000000000000000000000000000000000000000..76f51a8f31b48cdf79bce9bfc8af6c12829d655d
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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/()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 0000000000000000000000000000000000000000..6aaa5f3cc94180e36e7afb9394e4abc567fd1605
--- /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 0000000000000000000000000000000000000000..c0a8156fd97488a2e5fe5a64d5b8a97d0d60901f
--- /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 ()V
+ .limit stack 1
+ .limit locals 1
+
+ aload_0
+ invokespecial java/lang/Object/()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/()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 0000000000000000000000000000000000000000..e79f765133cd47831b2f6e2c4a398ba031e69c7f
--- /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 0000000000000000000000000000000000000000..221015e5fcd7a5b1bc325747e647e520e760114b
--- /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 ()V
+ .limit stack 1
+ .limit locals 1
+
+ aload_0
+ invokespecial java/lang/Object/()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/()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 0000000000000000000000000000000000000000..baa9963dd38feddb6c11241c8642cbf812257df3
--- /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 0000000000000000000000000000000000000000..afa094074edf77b10ae2709210deab344598b95c
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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/()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 0000000000000000000000000000000000000000..bec356159addf0492a1d84e4b3dcf2967af91fbb
--- /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 0000000000000000000000000000000000000000..20064df7a46b7ecc2b7109b65701a5087942c9f1
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..a8e0b9ca2a8673368a850483dda808d1e8c89673
--- /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 0000000000000000000000000000000000000000..d6e60f952e6c60a39be17afc70df6e49e207adc9
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..813fc955218fbc1082573eb569c15cf2813a9775
--- /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 0000000000000000000000000000000000000000..a7d470ba56335f982de7b7a039b44ff7ebfa1f12
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..0bc7d7c5888f48942b8a9278534659e4555b2cb4
--- /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 0000000000000000000000000000000000000000..753df238f2a516b3b8f234238c890618de430550
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..7463e46864fcda318cb50316c08184d2f8e7fb04
--- /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 0000000000000000000000000000000000000000..372e3e1f16cae52eaae3d225314d604ee75023db
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..685c106b885a5bf2f9ac58a32f73efba6412ed5d
--- /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 0000000000000000000000000000000000000000..c9228988ba838535f8a85dd07822be6e62d9f9ad
--- /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 ()V
+ .limit stack 4
+ .limit locals 1
+
+ aload_0
+ invokespecial java/lang/Object/()V
+
+ aload_0
+ new java/lang/Integer
+ dup
+ iconst_0
+ invokespecial java/lang/Integer/(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/(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/()V
+ astore_0
+
+ new java/lang/Thread
+ dup
+ aload_0
+ invokespecial java/lang/Thread/(Ljava/lang/Runnable;)V
+ astore_1
+
+ new java/lang/Thread
+ dup
+ aload_0
+ invokespecial java/lang/Thread/(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 0000000000000000000000000000000000000000..f58eb515a11745e4e5729497d82e4bd6b01f67d8
--- /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 0000000000000000000000000000000000000000..953e5ebff6a968fef48061bb4e3f31fe6824a75f
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..f12ed82184d727cba69a775995687f8de57b2cca
--- /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 0000000000000000000000000000000000000000..75b73091406ec496fe2f77a396483ca3e464c45e
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..df35df5b53b795616c0d9771980620b368fa2fe8
--- /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 0000000000000000000000000000000000000000..7b46a68c3e5a9dbda4b42ae8c0f3b815f9643c31
--- /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 0000000000000000000000000000000000000000..f5dfd91bb63389c591e609a80d3efa1196c92ebd
--- /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 0000000000000000000000000000000000000000..75cd6f597df411ecbbce0f339c3adc14e2fc73ef
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..7b204689765162e1dbee24bf7956bbc691ea13ac
--- /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 0000000000000000000000000000000000000000..469b36489fc9101b3aa1d8bfe8c61d599a210d3c
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..4ec2183a6c87fcfa69aa0d338e396217ecf71963
--- /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 0000000000000000000000000000000000000000..30e8cd09f7ca0fadd8b9305b01b775d4a0c4f7b3
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..6723a275f56307f0a725615d75cb975c0882c677
--- /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 0000000000000000000000000000000000000000..6e99aceb5c938415633b289b08c34249057086c1
--- /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 0000000000000000000000000000000000000000..8791368ba09161ed5c3114f547a9b3f6036a02a8
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..cb6c9421c0f663dca5cac7bb05e4173cad96543c
--- /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 0000000000000000000000000000000000000000..fb6432e1e9b83c06846055c285a223bbee06c0c6
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..ee352e659c9bf3eb0785eb7475cb9223a92efcd4
--- /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 0000000000000000000000000000000000000000..82d9f219ab61773771d58e441a3c88a537a531e8
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..d6a8eff76eefbe9454bc64603a8f19d32809346c
--- /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 0000000000000000000000000000000000000000..935d039bec4d3770af23d8e16ea687607455421a
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..13ddd3bc390c6290a4c4c9c1a23adaab6502ec81
--- /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 0000000000000000000000000000000000000000..8c74ad3a00dc119401d17d309c9411d49bcec522
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..a8887d01317806fc50ef65c588a77320c42ed539
--- /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 0000000000000000000000000000000000000000..7988f8a19a98819365774677a5098962d69aa7d6
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c4c8d3b1ae98dca85995a82189e2a10e6db1ba85
--- /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 0000000000000000000000000000000000000000..5a3031a53af8ea041b399a73ea48126f57779f99
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..3a2022876c39ad64d204899d8b63d929398ed1d4
--- /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 0000000000000000000000000000000000000000..29e892290013dd40bdea25f6a189d1bd81ec6e5a
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..078beb6aa8e3ac4b24fd747c1aca64929419eaff
--- /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 0000000000000000000000000000000000000000..1d7c7821198ea22bcffbcf19a86b8dd7b790fa81
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/()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 0000000000000000000000000000000000000000..c950130029bf3f28bd8f4e718860f57822fcaad0
--- /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 0000000000000000000000000000000000000000..690924f2f5fb96163a9288603b453266b3c0a859
--- /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 ()V
+ aload_0
+ invokespecial java/lang/Object/