diff options
author | buzbee <buzbee@google.com> | 2014-11-25 10:52:19 -0800 |
---|---|---|
committer | buzbee <buzbee@google.com> | 2014-11-25 11:31:09 -0800 |
commit | 6489d22a44ea7d135c142ee94925570d0333d5e7 (patch) | |
tree | 078cd0518627673566727494b003fa671c027dc8 /test/800-smali | |
parent | 79d43fd465a302252062b1d6dbd32c8a7d79f266 (diff) | |
download | art-6489d22a44ea7d135c142ee94925570d0333d5e7.zip art-6489d22a44ea7d135c142ee94925570d0333d5e7.tar.gz art-6489d22a44ea7d135c142ee94925570d0333d5e7.tar.bz2 |
Quick compiler: handle embedded switch data
Although switch data is generally placed at the end of a dex
file by dx, it can occur elsewhere (and does via obsfucators).
This CL fixes a parsing error related to embedded switch data by
ensuring valid dex instructions following the embedded data appear
in their own basic blocks.
AOSP b/80600
Change-Id: I91ead6b398386bcf168b1088c5bc13a53b18f26e
Diffstat (limited to 'test/800-smali')
-rw-r--r-- | test/800-smali/expected.txt | 1 | ||||
-rw-r--r-- | test/800-smali/smali/PackedSwitch.smali | 26 | ||||
-rw-r--r-- | test/800-smali/src/Main.java | 2 |
3 files changed, 29 insertions, 0 deletions
diff --git a/test/800-smali/expected.txt b/test/800-smali/expected.txt index 7674a8a..7ec3168 100644 --- a/test/800-smali/expected.txt +++ b/test/800-smali/expected.txt @@ -1,3 +1,4 @@ +PackedSwitch b/17790197 b/17978759 FloatBadArgReg diff --git a/test/800-smali/smali/PackedSwitch.smali b/test/800-smali/smali/PackedSwitch.smali new file mode 100644 index 0000000..6a3e5f0 --- /dev/null +++ b/test/800-smali/smali/PackedSwitch.smali @@ -0,0 +1,26 @@ +.class public LPackedSwitch; + +.super Ljava/lang/Object; + +.method public static packedSwitch(I)I + .registers 2 + + const/4 v0, 0 + packed-switch v0, :switch_data + goto :default + + :switch_data + .packed-switch 0x0 + :case + .end packed-switch + + :return + return v1 + + :default + goto :return + + :case + goto :return + +.end method diff --git a/test/800-smali/src/Main.java b/test/800-smali/src/Main.java index 8d318c3..abb53de 100644 --- a/test/800-smali/src/Main.java +++ b/test/800-smali/src/Main.java @@ -49,6 +49,8 @@ public class Main { public Main() { // Create the test cases. testCases = new LinkedList<TestCase>(); + testCases.add(new TestCase("PackedSwitch", "PackedSwitch", "packedSwitch", + new Object[]{123}, null, 123)); testCases.add(new TestCase("b/17790197", "B17790197", "getInt", null, null, 100)); testCases.add(new TestCase("b/17978759", "B17978759", "test", null, new VerifyError(), null)); |