summaryrefslogtreecommitdiffstats
path: root/libdex/InstrUtils.c
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2010-09-02 17:16:24 -0700
committerbuzbee <buzbee@google.com>2010-09-03 09:17:43 -0700
commitddc7d29baa92cb24b7bfa80395479f878109f3f8 (patch)
tree2881834abab8aab4d7ef535f6001c4ad82302fda /libdex/InstrUtils.c
parentd7400e0ec701dd481489ad421d55c7cd903f77ee (diff)
downloadandroid_dalvik-ddc7d29baa92cb24b7bfa80395479f878109f3f8.tar.gz
android_dalvik-ddc7d29baa92cb24b7bfa80395479f878109f3f8.tar.bz2
android_dalvik-ddc7d29baa92cb24b7bfa80395479f878109f3f8.zip
Correct Volatile SGET/SPUT format tag, add missing cases for JIT
Fix for http://b/issue?id=2971877, which was identified via debug tracing on http://b/issue?id=2971569. There were a couple of problems: first, the volatile sget/sput byte codes had the wrong format tag (22c instead of 21c). Second, the JIT was missing a couple of case statments to handle these. As far as the JIT goes, this would not have caused correctness problems, but would have been slower than necessary. Change-Id: I57a41c4e063642b0c19acba5bb0855dd8ce2d4ba
Diffstat (limited to 'libdex/InstrUtils.c')
-rw-r--r--libdex/InstrUtils.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/libdex/InstrUtils.c b/libdex/InstrUtils.c
index a3ee859bb..b98f0025e 100644
--- a/libdex/InstrUtils.c
+++ b/libdex/InstrUtils.c
@@ -971,17 +971,19 @@ InstructionFormat* dexCreateInstrFormatTable(void)
break;
case OP_IGET_WIDE_VOLATILE:
case OP_IPUT_WIDE_VOLATILE:
- case OP_SGET_WIDE_VOLATILE:
- case OP_SPUT_WIDE_VOLATILE:
case OP_IGET_VOLATILE:
case OP_IPUT_VOLATILE:
- case OP_SGET_VOLATILE:
- case OP_SPUT_VOLATILE:
case OP_IGET_OBJECT_VOLATILE:
case OP_IPUT_OBJECT_VOLATILE:
+ fmt = kFmt22c;
+ break;
case OP_SGET_OBJECT_VOLATILE:
case OP_SPUT_OBJECT_VOLATILE:
- fmt = kFmt22c;
+ case OP_SGET_VOLATILE:
+ case OP_SPUT_VOLATILE:
+ case OP_SGET_WIDE_VOLATILE:
+ case OP_SPUT_WIDE_VOLATILE:
+ fmt = kFmt21c;
break;
case OP_IGET_QUICK:
case OP_IGET_WIDE_QUICK: