summaryrefslogtreecommitdiffstats
path: root/dexdump
diff options
context:
space:
mode:
authorAndy McFadden <fadden@android.com>2010-11-03 14:32:42 -0700
committerAndy McFadden <fadden@android.com>2010-11-04 10:34:01 -0700
commitd325011fc98e0f1179d467bbc284cccea72f560b (patch)
tree41b6fa2ae4159d3ab53f3cc43d198468b0a9f914 /dexdump
parent79a98f9f9c2c67a968c1280e907669e3486aa9c3 (diff)
downloadandroid_dalvik-d325011fc98e0f1179d467bbc284cccea72f560b.tar.gz
android_dalvik-d325011fc98e0f1179d467bbc284cccea72f560b.tar.bz2
android_dalvik-d325011fc98e0f1179d467bbc284cccea72f560b.zip
Shift register index tests to static pass.
This rather hefty change moves the range tests on register index values from the code-flow pass to the earlier static analysis pass. The idea is to test everything up front so that we don't have to do a bounds check every time we get or set a register value during verification. This allowed some simplification in the code-flow pass, since get/set of a register no longer needs to have the method register count passed in, and can no longer fail due to bad input. As part of doing this, some of the static verification code was cleaned up, e.g. the instruction decoding is now only done in one place. This had no apparently effect on performance on nexus one -- verify+opt of the bootstrap classes takes the same amount of time. However, it does reduce the compiled size of the humongous instruction verification method by about 10%. Also, cleaned up some instruction format stuff (e.g. removed 3rfs). Bug 2534655. (cherry-pick from dalvik-dev) Change-Id: I1b220f4e97b1214ed575470695c52e1bd64d5137
Diffstat (limited to 'dexdump')
-rw-r--r--dexdump/DexDump.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/dexdump/DexDump.c b/dexdump/DexDump.c
index 636408afb..506409cc9 100644
--- a/dexdump/DexDump.c
+++ b/dexdump/DexDump.c
@@ -945,7 +945,6 @@ void dumpInstruction(DexFile* pDexFile, const DexCode* pCode, int insnIdx,
}
break;
case kFmt3rms: // [opt] invoke-virtual+super/range
- case kFmt3rfs: // [opt] invoke-interface/range
{
/*
* This doesn't match the "dx" output when some of the args are