Revert "Overwrite SourceFile if -renamesourcefileattribute is set."
This reverts commit fd5b5b51253daead389ec7c4507d203572c03dd1.
Reason for revert:
tests that didn't set -keepattributes SourceFile are failing.
Change-Id: Ia7898da9eec72f5b7e3b047d444003002d5579af
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 012413d..d0badf2 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -22,7 +22,6 @@
import com.android.tools.r8.ir.optimize.SwitchMapCollector;
import com.android.tools.r8.naming.Minifier;
import com.android.tools.r8.naming.NamingLens;
-import com.android.tools.r8.naming.SourceFileRewriter;
import com.android.tools.r8.optimize.BridgeMethodAnalysis;
import com.android.tools.r8.optimize.MemberRebindingAnalysis;
import com.android.tools.r8.optimize.VisibilityBridgeRemover;
@@ -300,11 +299,6 @@
application = optimize(application, appInfo, graphLense, executorService);
- // Overwrite SourceFile if specified. This step should be done after IR conversion.
- timing.begin("Rename SourceFile");
- new SourceFileRewriter(appInfo, options).run();
- timing.end();
-
if (!options.mainDexKeepRules.isEmpty()) {
appInfo = new AppInfoWithSubtyping(application);
Enqueuer enqueuer = new Enqueuer(appInfo);
diff --git a/src/main/java/com/android/tools/r8/graph/DexClass.java b/src/main/java/com/android/tools/r8/graph/DexClass.java
index 5de6538..e350c33 100644
--- a/src/main/java/com/android/tools/r8/graph/DexClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexClass.java
@@ -22,7 +22,7 @@
public final DexAccessFlags accessFlags;
public DexType superType;
public DexTypeList interfaces;
- public DexString sourceFile;
+ public final DexString sourceFile;
protected DexEncodedField[] staticFields;
protected DexEncodedField[] instanceFields;
protected DexEncodedMethod[] directMethods;
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java b/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
index 9381c90..db99359 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
@@ -294,20 +294,12 @@
public static class SetFile extends DexDebugEvent {
- DexString fileName;
+ final DexString fileName;
SetFile(DexString fileName) {
this.fileName = fileName;
}
- public DexString getFileName() {
- return fileName;
- }
-
- public void setFileName(DexString fileName) {
- this.fileName = fileName;
- }
-
public void writeOn(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping) {
writer.putByte(Constants.DBG_SET_FILE);
writer.putString(fileName);
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java b/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
index 5236d12..d2c9b3b 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
@@ -12,7 +12,7 @@
public final int startLine;
public final DexString[] parameters;
- public DexDebugEvent[] events;
+ public final DexDebugEvent[] events;
public DexDebugInfo(int startLine, DexString[] parameters, DexDebugEvent[] events) {
assert startLine >= 0;
diff --git a/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java b/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java
deleted file mode 100644
index 5ab50fc..0000000
--- a/src/main/java/com/android/tools/r8/naming/SourceFileRewriter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.naming;
-
-import com.android.tools.r8.graph.AppInfo;
-import com.android.tools.r8.graph.Code;
-import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDebugEvent;
-import com.android.tools.r8.graph.DexDebugEvent.SetFile;
-import com.android.tools.r8.graph.DexDebugInfo;
-import com.android.tools.r8.graph.DexString;
-import com.android.tools.r8.utils.InternalOptions;
-import java.util.Arrays;
-
-/**
- * Visit program {@link DexClass}es and replace their sourceFile with the given string.
- *
- * If -keepattribute SourceFile is not set, we rather remove that attribute.
- */
-public class SourceFileRewriter {
-
- private final AppInfo appInfo;
- private final InternalOptions options;
-
- public SourceFileRewriter(AppInfo appInfo, InternalOptions options) {
- this.appInfo = appInfo;
- this.options = options;
- }
-
- public void run() {
- String renameSourceFile = options.proguardConfiguration.getRenameSourceFileAttribute();
- // Return early if a user wants to keep the current source file attribute as-is.
- if (renameSourceFile == null && options.attributeRemoval.sourceFile) {
- return;
- }
- // Now, the user wants either to remove source file attribute or to rename it.
- DexString dexRenameSourceFile =
- renameSourceFile == null
- ? appInfo.dexItemFactory.createString("")
- : appInfo.dexItemFactory.createString(renameSourceFile);
- for (DexClass clazz : appInfo.classes()) {
- clazz.sourceFile = dexRenameSourceFile;
- clazz.forEachMethod(encodedMethod -> {
- // Abstract methods do not have code_item.
- if (encodedMethod.accessFlags.isAbstract()) {
- return;
- }
- Code code = encodedMethod.getCode();
- // Other kinds of {@link Code} do not have debug_info_item.
- if (!code.isDexCode()) {
- return;
- }
- if (code.asDexCode().getDebugInfo() == null) {
- return;
- }
- // Thanks to a single global source file, we can safely remove DBG_SET_FILE entirely.
- DexDebugInfo dexDebugInfo = code.asDexCode().getDebugInfo();
- dexDebugInfo.events =
- Arrays.stream(dexDebugInfo.events)
- .filter(dexDebugEvent -> !(dexDebugEvent instanceof SetFile))
- .toArray(DexDebugEvent[]::new);
- });
- }
- }
-}
diff --git a/src/main/java/com/android/tools/r8/utils/FileUtils.java b/src/main/java/com/android/tools/r8/utils/FileUtils.java
index 3eaa2be..47e809c 100644
--- a/src/main/java/com/android/tools/r8/utils/FileUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/FileUtils.java
@@ -26,7 +26,6 @@
public static final String JAR_EXTENSION = ".jar";
public static final String ZIP_EXTENSION = ".zip";
public static final String DEFAULT_DEX_FILENAME = "classes.dex";
- public static final String JAVA_EXTENSION = ".java";
public static boolean isDexFile(Path path) {
String name = path.getFileName().toString().toLowerCase();
diff --git a/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java b/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java
index 6f6b7d0..3c40b74 100644
--- a/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java
+++ b/src/test/java/com/android/tools/r8/debug/BlockReorderingTest.java
@@ -19,7 +19,7 @@
public static void setUp() throws Exception {
// Force inversion of all conditionals to reliably construct a regression test for incorrect
// line information when reording blocks.
- setUp(options -> options.testing.invertConditionals = true, null);
+ setUp(options -> options.testing.invertConditionals = true);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
index 55b8cba..1cd5c71 100644
--- a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
+++ b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
@@ -6,13 +6,10 @@
import com.android.tools.r8.CompilationException;
import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.D8Command;
-import com.android.tools.r8.R8Command;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.dex.Constants;
-import com.android.tools.r8.shaking.ProguardConfiguration;
-import com.android.tools.r8.shaking.ProguardRuleParserException;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.OffOrAuto;
@@ -32,7 +29,6 @@
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
-import java.util.concurrent.ExecutionException;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -108,7 +104,6 @@
public static TemporaryFolder temp = new TemporaryFolder();
private static Path jdwpDexD8 = null;
private static Path debuggeeDexD8 = null;
- private static Path debuggeeDexR8 = null;
private static Path debuggeeJava8DexD8 = null;
private static Path debuggeeKotlinDexD8 = null;
@@ -117,30 +112,25 @@
@BeforeClass
public static void setUp() throws Exception {
- setUp(null, null);
+ setUp(null);
}
- protected static void setUp(
- Consumer<InternalOptions> optionsConsumer,
- Consumer<ProguardConfiguration.Builder> pgConsumer)
- throws Exception {
+ protected static void setUp(Consumer<InternalOptions> optionsConsumer) throws Exception {
// Convert jar to dex with d8 with debug info
jdwpDexD8 = compileToDex(null, JDWP_JAR);
- // TODO(zerny): supply a set of compilers to run with.
debuggeeDexD8 = compileToDex(optionsConsumer, DEBUGGEE_JAR);
- debuggeeDexR8 = compileToDexViaR8(optionsConsumer, pgConsumer, DEBUGGEE_JAR);
debuggeeJava8DexD8 = compileToDex(options -> {
- // Enable desugaring for preN runtimes
- options.interfaceMethodDesugaring = OffOrAuto.Auto;
- if (optionsConsumer != null) {
- optionsConsumer.accept(options);
- }
- }, DEBUGGEE_JAVA8_JAR);
+ // Enable desugaring for preN runtimes
+ options.interfaceMethodDesugaring = OffOrAuto.Auto;
+ if (optionsConsumer != null) {
+ optionsConsumer.accept(options);
+ }
+ }, DEBUGGEE_JAVA8_JAR);
debuggeeKotlinDexD8 = compileToDex(optionsConsumer, DEBUGGEE_KOTLIN_JAR);
}
- static Path compileToDex(Consumer<InternalOptions> optionsConsumer, Path jarToCompile)
- throws IOException, CompilationException {
+ protected static Path compileToDex(Consumer<InternalOptions> optionsConsumer,
+ Path jarToCompile) throws IOException, CompilationException {
int minSdk = ToolHelper.getMinApiLevelForDexVm(ToolHelper.getDexVm());
assert jarToCompile.toFile().exists();
Path dexOutputDir = temp.newFolder().toPath();
@@ -154,29 +144,7 @@
.build(),
optionsConsumer);
return dexOutputDir.resolve("classes.dex");
- }
- static Path compileToDexViaR8(
- Consumer<InternalOptions> optionsConsumer,
- Consumer<ProguardConfiguration.Builder> pgConsumer,
- Path jarToCompile)
- throws IOException, CompilationException, ExecutionException, ProguardRuleParserException {
- int minSdk = ToolHelper.getMinApiLevelForDexVm(ToolHelper.getDexVm());
- assert jarToCompile.toFile().exists();
- Path dexOutputDir = temp.newFolder().toPath();
- ToolHelper.runR8(
- R8Command.builder()
- .addProgramFiles(jarToCompile)
- .setOutputPath(dexOutputDir)
- .setMinApiLevel(minSdk)
- .setMode(CompilationMode.DEBUG)
- .addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(minSdk)))
- .addProguardConfiguration(
- ImmutableList.of("-keepattributes SourceFile,LineNumberTable"))
- .addProguardConfigurationConsumer(pgConsumer)
- .build(),
- optionsConsumer);
- return dexOutputDir.resolve("classes.dex");
}
protected final boolean supportsDefaultMethod() {
@@ -232,16 +200,6 @@
runDebugTest(Collections.emptyList(), LanguageFeatures.KOTLIN, debuggeeClass, commands);
}
- protected final void runDebugTestR8(String debuggeeClass, JUnit3Wrapper.Command... commands)
- throws Throwable {
- runDebugTestR8(debuggeeClass, Arrays.asList(commands));
- }
-
- protected final void runDebugTestR8(String debuggeeClass, List<JUnit3Wrapper.Command> commands)
- throws Throwable {
- runDebugTest(Collections.emptyList(), LanguageFeatures.R8, debuggeeClass, commands);
- }
-
protected enum LanguageFeatures {
JAVA_7(DEBUGGEE_JAR) {
@Override
@@ -260,12 +218,6 @@
public Path getDexPath() {
return debuggeeKotlinDexD8;
}
- },
- R8(DEBUGGEE_JAR) {
- @Override
- public Path getDexPath() {
- return debuggeeDexR8;
- }
};
private final Path jarPath;
diff --git a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java b/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
deleted file mode 100644
index d0ea94c..0000000
--- a/src/test/java/com/android/tools/r8/naming/RenameSourceFileDebugTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.naming;
-
-import com.android.tools.r8.debug.DebugTestBase;
-import com.android.tools.r8.shaking.ProguardKeepRule;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Tests -renamesourcefileattribute.
- */
-public class RenameSourceFileDebugTest extends DebugTestBase {
-
- private static final String TEST_FILE = "TestFile.java";
-
- @BeforeClass
- public static void setUp() throws Exception {
- setUp(null, pg -> {
- pg.addRule(ProguardKeepRule.defaultKeepAllRule());
- pg.setRenameSourceFileAttribute(TEST_FILE);
- });
- }
-
- /**
- * replica of {@link ClassInitializationTest#testBreakpointInEmptyClassInitializer}
- */
- @Test
- public void testBreakpointInEmptyClassInitializer() throws Throwable {
- final String CLASS = "ClassInitializerEmpty";
- runDebugTestR8(CLASS,
- breakpoint(CLASS, "<clinit>"),
- run(),
- checkLine(TEST_FILE, 8),
- run());
- }
-
- /**
- * replica of {@link LocalsTest#testNoLocal}, except for checking overwritten class file.
- */
- @Test
- public void testNoLocal() throws Throwable {
- final String className = "Locals";
- final String methodName = "noLocals";
- runDebugTestR8(className,
- breakpoint(className, methodName),
- run(),
- checkMethod(className, methodName),
- checkLine(TEST_FILE, 8),
- checkNoLocal(),
- stepOver(),
- checkMethod(className, methodName),
- checkLine(TEST_FILE, 9),
- checkNoLocal(),
- run());
- }
-
- /**
- * replica of {@link MultipleReturnsTest#testMultipleReturns}
- */
- @Test
- public void testMultipleReturns() throws Throwable {
- runDebugTestR8("MultipleReturns",
- breakpoint("MultipleReturns", "multipleReturns"),
- run(),
- stepOver(),
- checkLine(TEST_FILE, 16), // this should be the 1st return statement
- run(),
- stepOver(),
- checkLine(TEST_FILE, 18), // this should be the 2nd return statement
- run());
- }
-}
diff --git a/src/test/java/com/android/tools/r8/naming/RenameSourceFileSmaliTest.java b/src/test/java/com/android/tools/r8/naming/RenameSourceFileSmaliTest.java
deleted file mode 100644
index 4506310..0000000
--- a/src/test/java/com/android/tools/r8/naming/RenameSourceFileSmaliTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.android.tools.r8.naming;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import com.android.tools.r8.code.ConstString;
-import com.android.tools.r8.code.InvokeVirtual;
-import com.android.tools.r8.code.ReturnVoid;
-import com.android.tools.r8.code.SgetObject;
-import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexCode;
-import com.android.tools.r8.graph.DexDebugEvent.SetFile;
-import com.android.tools.r8.graph.DexEncodedMethod;
-import com.android.tools.r8.shaking.ProguardConfiguration;
-import com.android.tools.r8.smali.SmaliTestBase;
-import com.android.tools.r8.utils.FileUtils;
-import com.android.tools.r8.utils.StringUtils;
-import com.google.common.collect.ImmutableList;
-import java.nio.file.Path;
-import java.util.Arrays;
-import java.util.List;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
-
-/**
- * Tests -renamesourcefileattribute.
- */
-@RunWith(Parameterized.class)
-public class RenameSourceFileSmaliTest extends SmaliTestBase {
-
- private static final String TEST_FILE = "TestFile.java";
-
- private static final List<String> DEFAULT_PG_CONFIGS =
- ImmutableList.of(
- "-keep class *** { *; }",
- "-dontoptimize",
- "-keepattributes SourceFile,LineNumberTable");
-
- private void configure(ProguardConfiguration.Builder pg) {
- if (renaming) {
- pg.setRenameSourceFileAttribute(TEST_FILE);
- }
- }
-
- @Parameter
- public boolean renaming;
-
- @Parameters(name="renaming:{0}")
- public static Object[] parameters() {
- return new Object[] {true, false};
- }
-
- /**
- * replica of {@link RunArtSmokeTest#test}
- */
- @Test
- public void artSmokeTest() throws Exception {
- // Build simple "Hello, world!" application.
- SmaliBuilder builder = new SmaliBuilder(DEFAULT_CLASS_NAME);
- String originalSourceFile = DEFAULT_CLASS_NAME + FileUtils.JAVA_EXTENSION;
- builder.setSourceFile(originalSourceFile);
- MethodSignature mainSignature = builder.addMainMethod(
- 2,
- ".line 1",
- " sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;",
- " const-string v1, \"Hello, world!\"",
- ".source \"PrintStream.java\"",
- ".line 337",
- " invoke-virtual { v0, v1 }, Ljava/io/PrintStream;->println(Ljava/lang/String;)V",
- ".source \"" + originalSourceFile + "\"",
- ".line 2",
- " return-void"
- );
- Path processedApp = runR8(builder, DEFAULT_PG_CONFIGS, this::configure, null);
-
- DexClass mainClass = getClass(processedApp, DEFAULT_CLASS_NAME);
- verifySourceFileInCodeItem(mainClass, originalSourceFile, TEST_FILE);
-
- DexEncodedMethod mainMethod = getMethod(processedApp, mainSignature);
- assertNotNull(mainMethod);
-
- DexCode code = mainMethod.getCode().asDexCode();
- assertTrue(code.instructions[0] instanceof SgetObject);
- assertTrue(code.instructions[1] instanceof ConstString);
- assertTrue(code.instructions[2] instanceof InvokeVirtual);
- assertTrue(code.instructions[3] instanceof ReturnVoid);
-
- // Run the generated code in Art.
- String result = runArt(processedApp, DEFAULT_MAIN_CLASS_NAME);
- assertEquals(StringUtils.lines("Hello, world!"), result);
-
- verifySourceFileInDebugInfo(code);
- }
-
- private void verifySourceFileInCodeItem(DexClass clazz, String original, String rename) {
- String processedSourceFile = clazz.sourceFile.toString();
- if (renaming) {
- assertEquals(rename, processedSourceFile);
- } else {
- assertEquals(original, processedSourceFile);
- }
- }
-
- private void verifySourceFileInDebugInfo(DexCode code) {
- assertNotNull(code.getDebugInfo());
- assertNotEquals(0, code.getDebugInfo().events.length);
- long setFileCount =
- Arrays.stream(code.getDebugInfo().events)
- .filter(dexDebugEvent -> dexDebugEvent instanceof SetFile)
- .count();
- if (renaming) {
- assertEquals(0, setFileCount);
- } else {
- assertNotEquals(0, setFileCount);
- }
- }
-
-}
diff --git a/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java b/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java
index 214a3b4..6a39c6d 100644
--- a/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java
+++ b/src/test/java/com/android/tools/r8/smali/RunArtSmokeTest.java
@@ -5,9 +5,9 @@
package com.android.tools.r8.smali;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.code.ConstString;
import com.android.tools.r8.code.InvokeVirtual;
import com.android.tools.r8.code.ReturnVoid;
@@ -41,7 +41,7 @@
// Return the processed method for inspection.
DexEncodedMethod main = getMethod(processedApplication, mainSignature);
- assertNotNull(main);
+ assert main != null;
DexCode code = main.getCode().asDexCode();
assertTrue(code.instructions[0] instanceof SgetObject);
diff --git a/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java b/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java
index f2f1220..c580f74 100644
--- a/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java
+++ b/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java
@@ -7,9 +7,7 @@
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.CompilationException;
-import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.R8;
-import com.android.tools.r8.R8Command;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.ApplicationReader;
@@ -26,8 +24,6 @@
import com.android.tools.r8.ir.conversion.IRConverter;
import com.android.tools.r8.naming.NamingLens;
import com.android.tools.r8.shaking.FilteredClassPath;
-import com.android.tools.r8.shaking.ProguardConfiguration;
-import com.android.tools.r8.shaking.ProguardRuleParserException;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.DexInspector;
@@ -36,13 +32,11 @@
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.OutputMode;
import com.android.tools.r8.utils.Smali;
-import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.Timing;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import java.io.IOException;
import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -51,7 +45,6 @@
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
-import java.util.function.Consumer;
import org.antlr.runtime.RecognitionException;
public class SmaliTestBase extends TestBase {
@@ -78,12 +71,6 @@
public static MethodSignature staticInitializer(String clazz) {
return new MethodSignature(clazz, "<clinit>", "void", ImmutableList.of());
}
-
- @Override
- public String toString() {
- return returnType + " " + clazz + "." + name
- + "(" + StringUtils.join(parameterTypes, ",") + ")";
- }
}
public static class SmaliBuilder {
@@ -481,30 +468,6 @@
}
}
- protected Path runR8(
- SmaliBuilder builder,
- List<String> proguardConfigurations,
- Consumer<ProguardConfiguration.Builder> pgConsumer,
- Consumer<InternalOptions> optionsConsumer) {
- try {
- Path dexOutputDir = temp.newFolder().toPath();
- R8Command command =
- R8Command.builder()
- .addDexProgramData(builder.compile())
- .setOutputPath(dexOutputDir)
- .setMode(CompilationMode.DEBUG)
- .addLibraryFiles(Paths.get(ToolHelper.getDefaultAndroidJar()))
- .addProguardConfiguration(proguardConfigurations)
- .addProguardConfigurationConsumer(pgConsumer)
- .build();
- ToolHelper.runR8WithFullResult(command, optionsConsumer);
- return dexOutputDir.resolve("classes.dex");
- } catch (CompilationException | IOException | RecognitionException | ExecutionException
- | ProguardRuleParserException e) {
- throw new RuntimeException(e);
- }
- }
-
protected DexClass getClass(DexApplication application, String className) {
DexInspector inspector = new DexInspector(application);
ClassSubject clazz = inspector.clazz(className);
@@ -516,23 +479,9 @@
return getClass(application, signature.clazz);
}
- protected DexClass getClass(Path appPath, String className) {
- try {
- DexInspector inspector = new DexInspector(appPath);
- ClassSubject clazz = inspector.clazz(className);
- assertTrue(clazz.isPresent());
- return clazz.getDexClass();
- } catch (IOException | ExecutionException e) {
- throw new RuntimeException(e);
- }
- }
-
- protected DexEncodedMethod getMethod(
- DexInspector inspector,
- String className,
- String returnType,
- String methodName,
- List<String> parameters) {
+ protected DexEncodedMethod getMethod(DexApplication application, String className,
+ String returnType, String methodName, List<String> parameters) {
+ DexInspector inspector = new DexInspector(application);
ClassSubject clazz = inspector.clazz(className);
assertTrue(clazz.isPresent());
MethodSubject method = clazz.method(returnType, methodName, parameters);
@@ -540,30 +489,6 @@
return method.getMethod();
}
- protected DexEncodedMethod getMethod(
- DexApplication application,
- String className,
- String returnType,
- String methodName,
- List<String> parameters) {
- DexInspector inspector = new DexInspector(application);
- return getMethod(inspector, className, returnType, methodName, parameters);
- }
-
- protected DexEncodedMethod getMethod(Path appPath, MethodSignature signature) {
- try {
- DexInspector inspector = new DexInspector(appPath);
- return getMethod(
- inspector,
- signature.clazz,
- signature.returnType,
- signature.name,
- signature.parameterTypes);
- } catch (IOException | ExecutionException e) {
- throw new RuntimeException(e);
- }
- }
-
protected DexEncodedMethod getMethod(DexApplication application, MethodSignature signature) {
return getMethod(application,
signature.clazz, signature.returnType, signature.name, signature.parameterTypes);
@@ -638,14 +563,6 @@
}
}
- public static String runArt(Path path, String mainClass) {
- try {
- return ToolHelper.runArtNoVerificationErrors(path.toString(), mainClass);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
public void runDex2Oat(DexApplication application, InternalOptions options)
throws DexOverflowException {
try {