diff options
author | Ben Gruver <bgruv@google.com> | 2015-07-12 12:52:57 -0700 |
---|---|---|
committer | Ben Gruver <bgruv@google.com> | 2015-09-29 23:41:30 -0700 |
commit | 3ff884b1c345dbd030430e3eecf37e4d409f18b0 (patch) | |
tree | cc15984e75f9a5f99d14222dbea0f88506ef6d36 /smali | |
parent | e5266afb14817bd3bc3d780157a41b8785fbacce (diff) | |
download | smali-3ff884b1c345dbd030430e3eecf37e4d409f18b0.tar.gz |
Add art-specific opcodes and opcode values
Diffstat (limited to 'smali')
-rw-r--r-- | smali/src/main/antlr/smaliParser.g | 2 | ||||
-rw-r--r-- | smali/src/main/antlr/smaliTreeWalker.g | 2 | ||||
-rw-r--r-- | smali/src/main/java/org/jf/smali/SmaliTestUtils.java | 5 | ||||
-rw-r--r-- | smali/src/main/java/org/jf/smali/main.java | 5 | ||||
-rw-r--r-- | smali/src/main/jflex/smaliLexer.jflex | 6 | ||||
-rw-r--r-- | smali/src/test/resources/LexerTest/InstructionTest.smali | 5 | ||||
-rw-r--r-- | smali/src/test/resources/LexerTest/InstructionTest.tokens | 5 |
7 files changed, 21 insertions, 9 deletions
diff --git a/smali/src/main/antlr/smaliParser.g b/smali/src/main/antlr/smaliParser.g index 6d07452c..db769338 100644 --- a/smali/src/main/antlr/smaliParser.g +++ b/smali/src/main/antlr/smaliParser.g @@ -260,7 +260,7 @@ import org.jf.dexlib2.Opcodes; private boolean verboseErrors = false; private boolean allowOdex = false; private int apiLevel = 15; - private Opcodes opcodes = new Opcodes(apiLevel, false); + private Opcodes opcodes = Opcodes.forApi(apiLevel); public void setVerboseErrors(boolean verboseErrors) { this.verboseErrors = verboseErrors; diff --git a/smali/src/main/antlr/smaliTreeWalker.g b/smali/src/main/antlr/smaliTreeWalker.g index 8eed2b20..f5c4a685 100644 --- a/smali/src/main/antlr/smaliTreeWalker.g +++ b/smali/src/main/antlr/smaliTreeWalker.g @@ -77,7 +77,7 @@ import java.util.*; public String classType; private boolean verboseErrors = false; private int apiLevel = 15; - private Opcodes opcodes = new Opcodes(apiLevel, false); + private Opcodes opcodes = Opcodes.forApi(apiLevel); private DexBuilder dexBuilder; public void setDexBuilder(DexBuilder dexBuilder) { diff --git a/smali/src/main/java/org/jf/smali/SmaliTestUtils.java b/smali/src/main/java/org/jf/smali/SmaliTestUtils.java index 26de0089..bef07414 100644 --- a/smali/src/main/java/org/jf/smali/SmaliTestUtils.java +++ b/smali/src/main/java/org/jf/smali/SmaliTestUtils.java @@ -57,7 +57,7 @@ public class SmaliTestUtils { throws RecognitionException, IOException { CommonTokenStream tokens; LexerErrorInterface lexer; - DexBuilder dexBuilder = DexBuilder.makeDexBuilder(apiLevel); + DexBuilder dexBuilder = DexBuilder.makeDexBuilder(Opcodes.forApi(apiLevel, experimental)); Reader reader = new StringReader(smaliText); @@ -94,8 +94,7 @@ public class SmaliTestUtils { dexBuilder.writeTo(dataStore); - DexBackedDexFile dexFile = new DexBackedDexFile( - new Opcodes(apiLevel, experimental), dataStore.getData()); + DexBackedDexFile dexFile = new DexBackedDexFile(Opcodes.forApi(apiLevel, experimental), dataStore.getData()); return Iterables.getFirst(dexFile.getClasses(), null); } diff --git a/smali/src/main/java/org/jf/smali/main.java b/smali/src/main/java/org/jf/smali/main.java index 98fb7a1f..b36b088d 100644 --- a/smali/src/main/java/org/jf/smali/main.java +++ b/smali/src/main/java/org/jf/smali/main.java @@ -36,8 +36,8 @@ import org.antlr.runtime.Token; import org.antlr.runtime.TokenSource; import org.antlr.runtime.tree.CommonTree; import org.antlr.runtime.tree.CommonTreeNodeStream; -import org.antlr.runtime.tree.TreeNodeStream; import org.apache.commons.cli.*; +import org.jf.dexlib2.Opcodes; import org.jf.dexlib2.writer.builder.DexBuilder; import org.jf.dexlib2.writer.io.FileDataStore; import org.jf.util.ConsoleUtil; @@ -218,7 +218,8 @@ public class main { boolean errors = false; - final DexBuilder dexBuilder = DexBuilder.makeDexBuilder(apiLevel); + final DexBuilder dexBuilder = DexBuilder.makeDexBuilder(Opcodes.forApi(apiLevel, experimental)); + ExecutorService executor = Executors.newFixedThreadPool(jobs); List<Future<Boolean>> tasks = Lists.newArrayList(); diff --git a/smali/src/main/jflex/smaliLexer.jflex b/smali/src/main/jflex/smaliLexer.jflex index bc17362f..c0be81e2 100644 --- a/smali/src/main/jflex/smaliLexer.jflex +++ b/smali/src/main/jflex/smaliLexer.jflex @@ -406,7 +406,7 @@ Type = {PrimitiveType} | {ClassDescriptor} | {ArrayDescriptor} return newToken(INSTRUCTION_FORMAT10x); } - "return-void-barrier" { + "return-void-barrier" | "return-void-no-barrier" { return newToken(INSTRUCTION_FORMAT10x_ODEX); } @@ -507,7 +507,9 @@ Type = {PrimitiveType} | {ClassDescriptor} | {ArrayDescriptor} "liberate-variable" { return newToken(INSTRUCTION_FORMAT22c_STRING); } - "iget-quick" | "iget-wide-quick" | "iget-object-quick" | "iput-quick" | "iput-wide-quick" | "iput-object-quick" { + + "iget-quick" | "iget-wide-quick" | "iget-object-quick" | "iput-quick" | "iput-wide-quick" | "iput-object-quick" | + "iput-boolean-quick" | "iput-byte-quick" | "iput-char-quick" | "iput-short-quick" { return newToken(INSTRUCTION_FORMAT22cs_FIELD); } diff --git a/smali/src/test/resources/LexerTest/InstructionTest.smali b/smali/src/test/resources/LexerTest/InstructionTest.smali index f6dcbb1e..174cff8c 100644 --- a/smali/src/test/resources/LexerTest/InstructionTest.smali +++ b/smali/src/test/resources/LexerTest/InstructionTest.smali @@ -2,6 +2,7 @@ goto return-void nop return-void-barrier +return-void-no-barrier const/4 move-result move-result-wide @@ -132,6 +133,10 @@ iget-object-quick iput-quick iput-wide-quick iput-object-quick +iput-boolean-quick +iput-byte-quick +iput-char-quick +iput-short-quick rsub-int add-int/lit16 mul-int/lit16 diff --git a/smali/src/test/resources/LexerTest/InstructionTest.tokens b/smali/src/test/resources/LexerTest/InstructionTest.tokens index fb5503b5..fa959bad 100644 --- a/smali/src/test/resources/LexerTest/InstructionTest.tokens +++ b/smali/src/test/resources/LexerTest/InstructionTest.tokens @@ -2,6 +2,7 @@ INSTRUCTION_FORMAT10t("goto") INSTRUCTION_FORMAT10x("return-void") INSTRUCTION_FORMAT10x("nop") INSTRUCTION_FORMAT10x_ODEX("return-void-barrier") +INSTRUCTION_FORMAT10x_ODEX("return-void-no-barrier") INSTRUCTION_FORMAT11n("const/4") INSTRUCTION_FORMAT11x("move-result") INSTRUCTION_FORMAT11x("move-result-wide") @@ -132,6 +133,10 @@ INSTRUCTION_FORMAT22cs_FIELD("iget-object-quick") INSTRUCTION_FORMAT22cs_FIELD("iput-quick") INSTRUCTION_FORMAT22cs_FIELD("iput-wide-quick") INSTRUCTION_FORMAT22cs_FIELD("iput-object-quick") +INSTRUCTION_FORMAT22cs_FIELD("iput-boolean-quick") +INSTRUCTION_FORMAT22cs_FIELD("iput-byte-quick") +INSTRUCTION_FORMAT22cs_FIELD("iput-char-quick") +INSTRUCTION_FORMAT22cs_FIELD("iput-short-quick") INSTRUCTION_FORMAT22s_OR_ID("rsub-int") INSTRUCTION_FORMAT22s("add-int/lit16") INSTRUCTION_FORMAT22s("mul-int/lit16") |