diff options
| author | buzbee <buzbee@google.com> | 2010-09-02 17:16:24 -0700 |
|---|---|---|
| committer | buzbee <buzbee@google.com> | 2010-09-03 09:17:43 -0700 |
| commit | ddc7d29baa92cb24b7bfa80395479f878109f3f8 (patch) | |
| tree | 2881834abab8aab4d7ef535f6001c4ad82302fda /libdex/InstrUtils.c | |
| parent | d7400e0ec701dd481489ad421d55c7cd903f77ee (diff) | |
| download | android_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.c | 12 |
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: |
