Merge commit '0bb618cad3eae2929b265f626ab8e9084660fbef' into dev-release Change-Id: I7b8e3fbaf454f20266db314689191e354907cd60
diff --git a/infra/config/global/generated/cr-buildbucket.cfg b/infra/config/global/generated/cr-buildbucket.cfg index 0e4e8a2..35c7e74 100644 --- a/infra/config/global/generated/cr-buildbucket.cfg +++ b/infra/config/global/generated/cr-buildbucket.cfg
@@ -1092,43 +1092,6 @@ } } builders { - name: "linux-dex_default-new_gradle" - swarming_host: "chrome-swarming.appspot.com" - swarming_tags: "vpython:native-python-wrapper" - dimensions: "cpu:x86-64" - dimensions: "normal:true" - dimensions: "os:Ubuntu-20.04" - dimensions: "pool:luci.r8.ci" - exe { - cipd_package: "infra_internal/recipe_bundles/chrome-internal.googlesource.com/chrome/tools/build_limited/scripts/slave" - cipd_version: "refs/heads/master" - cmd: "luciexe" - } - properties: - '{' - ' "builder_group": "internal.client.r8",' - ' "recipe": "rex",' - ' "test_options": [' - ' "--runtimes=dex-default",' - ' "--command_cache_dir=/tmp/ccache",' - ' "--new-gradle",' - ' "--tool=r8",' - ' "--no_internal",' - ' "--one_line_per_test",' - ' "--archive_failures"' - ' ]' - '}' - priority: 26 - execution_timeout_secs: 21600 - expiration_secs: 126000 - build_numbers: YES - service_account: "r8-ci-builder@chops-service-accounts.iam.gserviceaccount.com" - experiments { - key: "luci.recipes.use_python3" - value: 100 - } - } - builders { name: "linux-dex_default_release" swarming_host: "chrome-swarming.appspot.com" swarming_tags: "vpython:native-python-wrapper"
diff --git a/infra/config/global/generated/luci-milo.cfg b/infra/config/global/generated/luci-milo.cfg index 5421e9b..0f163d5 100644 --- a/infra/config/global/generated/luci-milo.cfg +++ b/infra/config/global/generated/luci-milo.cfg
@@ -21,11 +21,6 @@ short_name: "check" } builders { - name: "buildbucket/luci.r8.ci/linux-dex_default-new_gradle" - category: "R8" - short_name: "new_gradle" - } - builders { name: "buildbucket/luci.r8.ci/linux-dex_default" category: "R8" short_name: "dex_default"
diff --git a/infra/config/global/generated/luci-notify.cfg b/infra/config/global/generated/luci-notify.cfg index 26f944f..ff77a2b 100644 --- a/infra/config/global/generated/luci-notify.cfg +++ b/infra/config/global/generated/luci-notify.cfg
@@ -336,18 +336,6 @@ } builders { bucket: "ci" - name: "linux-dex_default-new_gradle" - repository: "https://r8.googlesource.com/r8" - } -} -notifiers { - notifications { - on_failure: true - on_new_failure: true - notify_blamelist {} - } - builders { - bucket: "ci" name: "linux-dex_default_release" repository: "https://r8.googlesource.com/r8" }
diff --git a/infra/config/global/generated/luci-scheduler.cfg b/infra/config/global/generated/luci-scheduler.cfg index 9ad6e3f..60c9a25 100644 --- a/infra/config/global/generated/luci-scheduler.cfg +++ b/infra/config/global/generated/luci-scheduler.cfg
@@ -442,20 +442,6 @@ } } job { - id: "linux-dex_default-new_gradle" - realm: "ci" - acl_sets: "ci" - triggering_policy { - kind: GREEDY_BATCHING - max_concurrent_invocations: 1 - } - buildbucket { - server: "cr-buildbucket.appspot.com" - bucket: "ci" - builder: "linux-dex_default-new_gradle" - } -} -job { id: "linux-dex_default_release" realm: "ci" acl_sets: "ci" @@ -826,7 +812,6 @@ triggers: "linux-android-8.1.0" triggers: "linux-android-9.0.0" triggers: "linux-dex_default" - triggers: "linux-dex_default-new_gradle" triggers: "linux-internal" triggers: "linux-jdk11" triggers: "linux-jdk17"
diff --git a/infra/config/global/generated/project.cfg b/infra/config/global/generated/project.cfg index 755c550..dcf12da 100644 --- a/infra/config/global/generated/project.cfg +++ b/infra/config/global/generated/project.cfg
@@ -7,7 +7,7 @@ name: "r8" access: "group:all" lucicfg { - version: "1.39.15" + version: "1.39.20" package_dir: ".." config_dir: "generated" entry_point: "main.star"
diff --git a/infra/config/global/main.star b/infra/config/global/main.star index 86bbec8..11fbd09 100755 --- a/infra/config/global/main.star +++ b/infra/config/global/main.star
@@ -312,18 +312,6 @@ expiration_timeout = time.hour * 35, ) -r8_builder( - name = "linux-dex_default-new_gradle", - execution_timeout = time.hour * 6, - expiration_timeout = time.hour * 35, - dimensions = get_dimensions(), - max_concurrent_invocations = 1, - properties = { - "test_options" : ["--runtimes=dex-default", "--command_cache_dir=/tmp/ccache", "--new-gradle"] + common_test_options, - "builder_group" : "internal.client.r8" - } -) - r8_tester_with_default("linux-dex_default", ["--runtimes=dex-default", "--command_cache_dir=/tmp/ccache"], max_concurrent_invocations = 2)
diff --git a/src/main/java/com/android/tools/r8/BackportedMethodList.java b/src/main/java/com/android/tools/r8/BackportedMethodList.java index bffd580..04c4886 100644 --- a/src/main/java/com/android/tools/r8/BackportedMethodList.java +++ b/src/main/java/com/android/tools/r8/BackportedMethodList.java
@@ -4,14 +4,11 @@ package com.android.tools.r8; -import com.android.tools.r8.graph.DexMethod; -import com.android.tools.r8.ir.desugar.BackportedMethodRewriter; -import com.android.tools.r8.utils.DescriptorUtils; +import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.DesugaredMethodsList; +import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.DesugaredMethodsListCommand; +import com.android.tools.r8.origin.Origin; import com.android.tools.r8.utils.ExceptionUtils; -import com.android.tools.r8.utils.InternalOptions; import com.android.tools.r8.utils.StringUtils; -import com.android.tools.r8.utils.ThreadUtils; -import java.util.concurrent.ExecutorService; /** * Tool to extract the list of methods which is backported by the D8 and R8 compilers. @@ -62,13 +59,6 @@ " --version # Print the version of BackportedMethodList.", " --help # Print this message."); - private static String formatMethod(DexMethod method) { - return DescriptorUtils.getClassBinaryNameFromDescriptor(method.holder.descriptor.toString()) - + '#' - + method.name - + method.proto.toDescriptorString(); - } - public static void run(BackportedMethodListCommand command) throws CompilationFailedException { if (command.isPrintHelp()) { System.out.println(USAGE_MESSAGE); @@ -78,28 +68,25 @@ System.out.println("BackportedMethodList " + Version.getVersionString()); return; } - InternalOptions options = command.getInternalOptions(); + DesugaredMethodsList.run(convert(command)); + } - ExecutorService executorService = ThreadUtils.getExecutorService(options); - try { - ExceptionUtils.withD8CompilationHandler( - command.getReporter(), - () -> { - BackportedMethodRewriter.generateListOfBackportedMethods( - command.getInputApp(), options, executorService) - .stream() - .map(BackportedMethodList::formatMethod) - .sorted() - .forEach( - formattedMethod -> - command - .getBackportedMethodListConsumer() - .accept(formattedMethod, command.getReporter())); - command.getBackportedMethodListConsumer().finished(command.getReporter()); - }); - } finally { - executorService.shutdown(); + private static DesugaredMethodsListCommand convert(BackportedMethodListCommand command) { + DesugaredMethodsListCommand.Builder builder = + DesugaredMethodsListCommand.builder(command.getReporter()); + for (ClassFileResourceProvider libraryResourceProvider : + command.getInputApp().getLibraryResourceProviders()) { + builder.addLibrary(libraryResourceProvider); } + String jsonSource = command.getDesugaredLibraryConfiguration().getJsonSource(); + if (jsonSource != null) { + builder.setDesugarLibrarySpecification( + StringResource.fromString(jsonSource, Origin.unknown())); + } + return builder + .setMinApi(command.getMinApiLevel()) + .setOutputConsumer(command.getBackportedMethodListConsumer()) + .build(); } public static void run(String[] args) throws CompilationFailedException {
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java b/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java index c154471..b77b311 100644 --- a/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java +++ b/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java
@@ -35,7 +35,6 @@ public static final int NO_PC_INFO = -1; private static final int NO_LINE_INFO = -1; - private final AppView<?> appView; private final DexEncodedMethod method; private final DexItemFactory factory; private final InternalOptions options; @@ -66,7 +65,6 @@ private int startLine = NO_LINE_INFO; public DexDebugEventBuilder(AppView<?> appView, IRCode code) { - this.appView = appView; method = code.context().getDefinition(); factory = appView.dexItemFactory(); options = appView.options(); @@ -76,7 +74,7 @@ } /** Add events at pc for instruction. */ - public void add(int pc, int postPc, Instruction instruction, ProgramMethod context) { + public void add(int pc, int postPc, Instruction instruction) { boolean isBlockEntry = instruction.getBlock().entry() == instruction; boolean isBlockExit = instruction.getBlock().exit() == instruction; @@ -98,9 +96,7 @@ updateLocals(instruction.asDebugLocalsChange()); } else if (pcAdvancing) { if (!position.isNone() && !position.equals(emittedPosition)) { - if (options.debug - || instruction.instructionInstanceCanThrow(appView, context) - || isComposing) { + if (options.debug || instruction.instructionTypeCanThrow() || isComposing) { emitDebugPosition(pc, position); } }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java index 18fc132..3c9c7f3 100644 --- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java +++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -261,8 +261,7 @@ dexInstruction.setOffset(instructionOffset); instructionOffset += dexInstruction.getSize(); } - debugEventBuilder.add( - instructionStartOffset, instructionOffset, irInstruction, getProgramMethod()); + debugEventBuilder.add(instructionStartOffset, instructionOffset, irInstruction); } // Workaround dalvik tracing bug, where the dalvik tracing JIT can end up tracing
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java index f263c2e..5d6e15c 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
@@ -22,14 +22,7 @@ // If we increment this api level, we need to verify everything works correctly. static final AndroidApiLevel MAX_TESTED_ANDROID_API_LEVEL = AndroidApiLevel.U; - private final DexItemFactory factory = new DexItemFactory(); - private final Reporter reporter = new Reporter(); - final InternalOptions options = - new InternalOptions(factory, reporter) - .getArtProfileOptions() - .setAllowReadingEmptyArtProfileProvidersMultipleTimesForTesting(true) - .getOptions(); - + final InternalOptions options; final DesugaredLibrarySpecification desugaredLibrarySpecification; final StringResource desugaredLibrarySpecificationResource; final Collection<ProgramResourceProvider> desugaredLibraryImplementation; @@ -37,11 +30,13 @@ final Collection<ClassFileResourceProvider> androidJar; AbstractGenerateFiles( + Reporter reporter, StringResource desugaredLibrarySpecificationResource, Collection<ProgramResourceProvider> desugarImplementation, Path output, Collection<ClassFileResourceProvider> androidJar) { assert androidJar != null; + this.options = createOptions(reporter); this.desugaredLibrarySpecificationResource = desugaredLibrarySpecificationResource; this.androidJar = androidJar; this.desugaredLibrarySpecification = readDesugaredLibrarySpecification(); @@ -49,14 +44,21 @@ this.output = output; } + private InternalOptions createOptions(Reporter reporter) { + return new InternalOptions(new DexItemFactory(), reporter) + .getArtProfileOptions() + .setAllowReadingEmptyArtProfileProvidersMultipleTimesForTesting(true) + .getOptions(); + } + private DesugaredLibrarySpecification readDesugaredLibrarySpecification() { if (desugaredLibrarySpecificationResource == null) { return MachineDesugaredLibrarySpecification.empty(); } return DesugaredLibrarySpecificationParser.parseDesugaredLibrarySpecification( desugaredLibrarySpecificationResource, - factory, - reporter, + options.dexItemFactory(), + options.reporter, false, AndroidApiLevel.B.getLevel()); }
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java index c2261d4..169dcfe 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
@@ -9,38 +9,43 @@ import com.android.tools.r8.ArchiveClassFileProvider; import com.android.tools.r8.ArchiveProgramResourceProvider; import com.android.tools.r8.ClassFileResourceProvider; +import com.android.tools.r8.CompilationFailedException; import com.android.tools.r8.Keep; import com.android.tools.r8.ProgramResourceProvider; import com.android.tools.r8.StringConsumer; import com.android.tools.r8.StringResource; import com.android.tools.r8.Version; import com.android.tools.r8.utils.AndroidApiLevel; +import com.android.tools.r8.utils.ExceptionUtils; +import com.android.tools.r8.utils.Reporter; import com.android.tools.r8.utils.StringUtils; +import com.android.tools.r8.utils.ThreadUtils; import com.google.common.collect.ImmutableList; import java.io.IOException; import java.nio.file.Paths; import java.util.Collection; import java.util.List; +import java.util.concurrent.ExecutorService; @Keep public class DesugaredMethodsList extends GenerateDesugaredLibraryLintFiles { private final AndroidApiLevel minApi; - private final StringConsumer outputConsumer; DesugaredMethodsList( int minApi, + Reporter reporter, StringResource desugarConfiguration, Collection<ProgramResourceProvider> desugarImplementation, StringConsumer outputConsumer, Collection<ClassFileResourceProvider> androidJar) { - super(desugarConfiguration, desugarImplementation, null, androidJar); + super(reporter, desugarConfiguration, desugarImplementation, null, androidJar); this.minApi = AndroidApiLevel.getAndroidApiLevel(minApi); this.outputConsumer = outputConsumer; } - public static void run(DesugaredMethodsListCommand command) throws IOException { + public static void run(DesugaredMethodsListCommand command) throws CompilationFailedException { if (command.isHelp()) { System.out.println(DesugaredMethodsListCommand.getUsageMessage()); return; @@ -49,13 +54,23 @@ System.out.println("DesugaredMethodsList " + Version.getVersionString()); return; } - new DesugaredMethodsList( - command.getMinApi(), - command.getDesugarLibrarySpecification(), - command.getDesugarLibraryImplementation(), - command.getOutputConsumer(), - command.getLibrary()) - .run(); + ExecutorService executorService = ThreadUtils.getExecutorService(ThreadUtils.NOT_SPECIFIED); + try { + ExceptionUtils.withD8CompilationHandler( + command.getReporter(), + () -> { + new DesugaredMethodsList( + command.getMinApi(), + command.getReporter(), + command.getDesugarLibrarySpecification(), + command.getDesugarLibraryImplementation(), + command.getOutputConsumer(), + command.getLibrary()) + .run(); + }); + } finally { + executorService.shutdown(); + } } @Override @@ -100,7 +115,7 @@ public static void main(String[] args) throws Exception { if (args.length == 4 || args.length == 5) { DesugaredMethodsListCommand.Builder builder = - DesugaredMethodsListCommand.builder() + DesugaredMethodsListCommand.builder(new Reporter()) .setMinApi(parseInt(args[0])) .setDesugarLibrarySpecification(getSpecificationArg(args[1])) .setOutputPath(Paths.get(args[3]));
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java index 924a0e6..726d445 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java
@@ -15,9 +15,8 @@ import com.android.tools.r8.ProgramResourceProvider; import com.android.tools.r8.StringConsumer; import com.android.tools.r8.StringResource; -import com.android.tools.r8.errors.CompilationError; -import com.android.tools.r8.origin.Origin; import com.android.tools.r8.utils.AndroidApiLevel; +import com.android.tools.r8.utils.Reporter; import com.android.tools.r8.utils.StringUtils; import com.google.common.collect.ImmutableList; import java.io.IOException; @@ -33,6 +32,8 @@ private final boolean help; private final boolean version; private final int minApi; + + private final Reporter reporter; private final StringResource desugarLibrarySpecification; private final Collection<ProgramResourceProvider> desugarLibraryImplementation; private final StringConsumer outputConsumer; @@ -40,6 +41,7 @@ DesugaredMethodsListCommand( int minApi, + Reporter reporter, StringResource desugarLibrarySpecification, Collection<ProgramResourceProvider> desugarLibraryImplementation, StringConsumer outputConsumer, @@ -47,6 +49,7 @@ this.help = false; this.version = false; this.minApi = minApi; + this.reporter = reporter; this.desugarLibrarySpecification = desugarLibrarySpecification; this.desugarLibraryImplementation = desugarLibraryImplementation; this.outputConsumer = outputConsumer; @@ -57,6 +60,7 @@ this.help = help; this.version = version; this.minApi = -1; + this.reporter = null; this.desugarLibrarySpecification = null; this.desugarLibraryImplementation = null; this.outputConsumer = null; @@ -100,14 +104,19 @@ return builder.toString(); } - public static Builder builder() { - return new Builder(); + public Reporter getReporter() { + return reporter; + } + + public static Builder builder(DiagnosticsHandler diagnosticsHandler) { + return new Builder(diagnosticsHandler); } @Keep public static class Builder { private int minApi = AndroidApiLevel.B.getLevel(); + private final Reporter reporter; private StringResource desugarLibrarySpecification = null; private Collection<ProgramResourceProvider> desugarLibraryImplementation = new ArrayList<>(); private StringConsumer outputConsumer; @@ -116,6 +125,10 @@ private boolean help = false; private boolean version = false; + public Builder(DiagnosticsHandler diagnosticsHandler) { + this.reporter = new Reporter(diagnosticsHandler); + } + public Builder setMinApi(int minApi) { this.minApi = minApi; return this; @@ -173,11 +186,11 @@ } if (desugarLibrarySpecification != null && library.isEmpty()) { - throw new CompilationError("With desugared library configuration a library is required"); + reporter.error("With desugared library configuration a library is required"); } if (!desugarLibraryImplementation.isEmpty() && desugarLibrarySpecification == null) { - throw new CompilationError( + reporter.error( "desugarLibrarySpecification is required when desugared library implementation is" + " present."); } @@ -196,6 +209,7 @@ } return new DesugaredMethodsListCommand( minApi, + reporter, desugarLibrarySpecification, desugarLibraryImplementation, outputConsumer, @@ -219,8 +233,9 @@ .build(); } - public DesugaredMethodsListCommand parse(String[] args, Origin origin) throws IOException { - DesugaredMethodsListCommand.Builder builder = DesugaredMethodsListCommand.builder(); + public DesugaredMethodsListCommand parse(String[] args, DiagnosticsHandler handler) + throws IOException { + DesugaredMethodsListCommand.Builder builder = DesugaredMethodsListCommand.builder(handler); for (int i = 0; i < args.length; i += 2) { String arg = args[i].trim(); if (arg.length() == 0) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java index 49d979b..47d7b9f 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java
@@ -14,6 +14,7 @@ import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.DescriptorUtils; import com.android.tools.r8.utils.FileUtils; +import com.android.tools.r8.utils.Reporter; import com.android.tools.r8.utils.StringUtils; import com.google.common.collect.ImmutableList; import java.io.File; @@ -32,11 +33,12 @@ private static final boolean FORMAT_WITH_FIELD = true; public GenerateDesugaredLibraryLintFiles( + Reporter reporter, StringResource desugarConfiguration, Collection<ProgramResourceProvider> desugarImplementation, Path output, Collection<ClassFileResourceProvider> androidJar) { - super(desugarConfiguration, desugarImplementation, output, androidJar); + super(reporter, desugarConfiguration, desugarImplementation, output, androidJar); } private String lintBaseFileName( @@ -175,6 +177,7 @@ public static void main(String[] args) throws Exception { if (args.length == 4) { new GenerateDesugaredLibraryLintFiles( + new Reporter(), StringResource.fromFile(Paths.get(args[0])), ImmutableList.of(ArchiveProgramResourceProvider.fromArchive(Paths.get(args[1]))), Paths.get(args[2]),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java index 4bc0821..d1394058 100644 --- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java +++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java
@@ -23,6 +23,7 @@ import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.SupportedClasses.SupportedClass; import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.ListUtils; +import com.android.tools.r8.utils.Reporter; import com.android.tools.r8.utils.StringUtils; import com.google.common.collect.ImmutableList; import java.io.PrintStream; @@ -50,7 +51,7 @@ Collection<ProgramResourceProvider> desugarImplementation, Path outputDirectory, Collection<ClassFileResourceProvider> androidJar) { - super(desugarSpecification, desugarImplementation, outputDirectory, androidJar); + super(new Reporter(), desugarSpecification, desugarImplementation, outputDirectory, androidJar); } private static class StringBuilderWithIndent {
diff --git a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java index 9e0f71b..6c16ab7 100644 --- a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java +++ b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java
@@ -11,7 +11,6 @@ import com.android.tools.r8.references.FieldReference; import com.android.tools.r8.references.MethodReference; import com.android.tools.r8.retrace.internal.PartitionMappingSupplierBase; -import com.android.tools.r8.retrace.internal.RetracerImpl; @Keep public class PartitionMappingSupplierAsync @@ -80,7 +79,7 @@ } @Override - public RetracerImpl createRetracer( + public Retracer createRetracer( DiagnosticsHandler diagnosticsHandler, MappingPartitionFromKeySupplier supplier) { return createRetracerFromPartitionSupplier(diagnosticsHandler, supplier); }
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java index e07b779..106486b 100644 --- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java +++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
@@ -259,6 +259,7 @@ Path lint = top.resolve("lint_" + spec); Files.createDirectories(lint); new GenerateDesugaredLibraryLintFiles( + new Reporter(), StringResource.fromFile(spec.getSpecification()), ImmutableList.of(ArchiveProgramResourceProvider.fromArchive(jdkLibJar)), lint,
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java index 07539ed..22c3669 100644 --- a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java +++ b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
@@ -178,4 +178,18 @@ equalTo("Resource 'META-INF/MANIFEST.MF' already exists."), equalTo("Resource 'META-INF/versions/9/module-info.class' already exists."))); } + + protected String unresolvedReferenceMessage(KotlinTestParameters param, String ref) { + if (param.isKotlinDev()) { + return "unresolved reference '" + ref + "'"; + } + return "unresolved reference: " + ref; + } + + protected String cannotAccessMessage(KotlinTestParameters param, String ref) { + if (param.isKotlinDev()) { + return "cannot access 'class " + ref + " : Any'"; + } + return "cannot access '" + ref + "'"; + } }
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java index a1fe961..912504e 100644 --- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java +++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java
@@ -124,7 +124,8 @@ .disableAssertions() .compileRaw(); assertEquals(1, mainResult.exitCode); - assertThat(mainResult.stderr, containsString("cannot access 'LibReference'")); + assertThat( + mainResult.stderr, containsString(cannotAccessMessage(kotlinParameters, "LibReference"))); } private void inspect(CodeInspector inspector) {
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java index 2cdb09a..2ad1340 100644 --- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java +++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java
@@ -102,7 +102,9 @@ .setOutputPath(temp.newFolder().toPath()) .compileRaw(); assertNotEquals(0, kotlinTestCompileResult.exitCode); - assertThat(kotlinTestCompileResult.stderr, containsString("unresolved reference: join")); + assertThat( + kotlinTestCompileResult.stderr, + containsString(unresolvedReferenceMessage(kotlinParameters, "join"))); } private void inspectMerged(CodeInspector inspector) {
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java index e4243c4..42b5af2 100644 --- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java +++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java
@@ -163,16 +163,20 @@ assertNotEquals(0, kotlinTestCompileResult.exitCode); if (kotlinParameters.isNewerThanOrEqualTo(KotlinCompilerVersion.KOTLINC_1_5_0)) { - assertThat( - kotlinTestCompileResult.stderr, - containsString( - "inheritance of sealed classes or interfaces from different module is prohibited")); + assertThat(kotlinTestCompileResult.stderr, containsString(sealedClassErrorMessage())); } else { assertThat(kotlinTestCompileResult.stderr, containsString("cannot access")); assertThat(kotlinTestCompileResult.stderr, containsString("private in 'Expr'")); } } + private String sealedClassErrorMessage() { + if (kotlinParameters.isKotlinDev()) { + return "a class can only extend a sealed class or interface declared in the same package"; + } + return "inheritance of sealed classes or interfaces from different module is prohibited"; + } + private void inspectInvalid(CodeInspector inspector) { String exprClassName = PKG + ".sealed_lib.Expr"; String libClassName = PKG + ".sealed_lib.LibKt";
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java index b5e22d8..a872390 100644 --- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java +++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java
@@ -30,6 +30,7 @@ import com.android.tools.r8.utils.codeinspector.MethodSubject; import java.nio.file.Path; import java.util.Collection; +import org.junit.Assume; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -193,6 +194,7 @@ KmTypeProjectionSubject expandedArgument = apIs.expandedType().typeArguments().get(0); assertThat(expandedArgument.type(), isDexClass(itf.getDexProgramClass())); + Assume.assumeFalse("TODO(b/303374432)", kotlinParameters.isKotlinDev()); assertEquals(myAliasedArray.descriptor(packageName), apIs.underlyingType().descriptor()); assertEquals(1, apIs.underlyingType().typeArguments().size()); KmTypeProjectionSubject underlyingArgument = apIs.underlyingType().typeArguments().get(0);
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java index cf513eb..36aa493 100644 --- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java +++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java
@@ -107,6 +107,8 @@ .setOutputPath(temp.newFolder().toPath()) .compileRaw(); assertEquals(1, kotlinCompileAppResult.exitCode); - assertThat(kotlinCompileAppResult.stderr, containsString("unresolved reference: Password")); + assertThat( + kotlinCompileAppResult.stderr, + containsString(unresolvedReferenceMessage(kotlinParameters, "Password"))); } }
diff --git a/src/test/java/com/android/tools/r8/regress/Regress302826300.java b/src/test/java/com/android/tools/r8/regress/Regress302826300.java new file mode 100644 index 0000000..f87eb90 --- /dev/null +++ b/src/test/java/com/android/tools/r8/regress/Regress302826300.java
@@ -0,0 +1,79 @@ +// Copyright (c) 2023, 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.regress; + +import static org.hamcrest.CoreMatchers.containsString; + +import com.android.tools.r8.D8TestRunResult; +import com.android.tools.r8.TestBase; +import com.android.tools.r8.TestParameters; +import com.android.tools.r8.TestParametersCollection; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class Regress302826300 extends TestBase { + + static final String EXPECTED = "foobar"; + + private final TestParameters parameters; + + @Parameterized.Parameters(name = "{0}") + public static TestParametersCollection data() { + return getTestParameters().withDexRuntimes().withAllApiLevels().build(); + } + + public Regress302826300(TestParameters parameters) { + this.parameters = parameters; + } + + @Test + public void testD8() throws Exception { + D8TestRunResult run = + testForD8(parameters.getBackend()) + // We simply pass LibraryBaseClass as program, but could also compile it separately and + // pass as bootclasspath when running. + .addProgramClasses( + Foo.class, Bar.class, ProgramClassExtendsLibrary.class, LibraryBaseClass.class) + // LibraryClass is passed when compiling - but not passed when running + .addLibraryClasses(LibraryClass.class) + .setMinApi(parameters) + .run(parameters.getRuntime(), Foo.class); + if (parameters.getRuntime().asDex().getVersion().isDalvik()) { + run.assertFailureWithErrorThatMatches(containsString("rejecting opcode 0x6e")); + } else { + run.assertSuccessWithOutputLines(EXPECTED); + } + } + + public static class Foo { + public static void main(String[] args) { + new Bar().x("foobar"); + } + } + + public static class Bar { + public void x(ProgramClassExtendsLibrary value) { + // To trigger the hard verification error it is important that the invoke virtual is to + // a class actually known at runtime - but not the ProgramClassExtendsLibrary which we + // don't know so it only triggers a soft verification error. + ((LibraryBaseClass) value).z(); + } + + public void x(String s) { + System.out.println(s); + } + } + + public static class ProgramClassExtendsLibrary extends LibraryClass {} + + public static class LibraryClass extends LibraryBaseClass {} + + public static class LibraryBaseClass { + public void z() { + System.out.println("z()"); + } + } +}
diff --git a/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java b/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java index 1afb1c3..3f11198 100644 --- a/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java +++ b/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java
@@ -18,7 +18,6 @@ import com.android.tools.r8.utils.AndroidApiLevel; import com.android.tools.r8.utils.StringUtils; import java.io.BufferedReader; -import java.io.IOException; import java.io.StringReader; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -27,11 +26,13 @@ import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; +@Ignore("Will be fixed by update in CL 84843") @RunWith(Parameterized.class) public class TreeShakingSpecificTest extends TestBase {
diff --git a/tools/archive.py b/tools/archive.py index 7beaede..8ec73ea 100755 --- a/tools/archive.py +++ b/tools/archive.py
@@ -74,35 +74,27 @@ def GetStorageDestination(storage_prefix, version_or_path, file_name, - is_main, - new_gradle=False): + is_main): # We archive main commits under raw/main instead of directly under raw version_dir = GetVersionDestination(storage_prefix, version_or_path, - is_main, - new_gradle) + is_main) return '%s/%s' % (version_dir, file_name) -def GetVersionDestination(storage_prefix, version_or_path, is_main, - new_gradle=False): - assert new_gradle +def GetVersionDestination(storage_prefix, version_or_path, is_main): archive_dir = 'raw/main' if is_main else 'raw' - bucket = ARCHIVE_BUCKET - return '%s%s/%s/%s' % (storage_prefix, bucket, + return '%s%s/%s/%s' % (storage_prefix, ARCHIVE_BUCKET, archive_dir, version_or_path) -def GetUploadDestination(version_or_path, file_name, is_main, - new_gradle=False): - return GetStorageDestination('gs://', version_or_path, file_name, is_main, - new_gradle) +def GetUploadDestination(version_or_path, file_name, is_main): + return GetStorageDestination('gs://', version_or_path, file_name, is_main) -def GetUrl(version_or_path, file_name, is_main, new_gradle=False): +def GetUrl(version_or_path, file_name, is_main): return GetStorageDestination('https://storage.googleapis.com/', - version_or_path, file_name, is_main, new_gradle) + version_or_path, file_name, is_main) -def GetMavenUrl(is_main, new_gradle=False): - return GetVersionDestination('https://storage.googleapis.com/', '', is_main, - new_gradle) +def GetMavenUrl(is_main): + return GetVersionDestination('https://storage.googleapis.com/', '', is_main) def SetRLimitToMax(): (soft, hard) = resource.getrlimit(resource.RLIMIT_NOFILE) @@ -116,10 +108,9 @@ def Main(): (options, args) = ParseOptions() - Run(options, True) + Run(options) -def Run(options, new_gradle): - assert new_gradle +def Run(options): if not utils.is_bot() and not options.dry_run: raise Exception('You are not a bot, don\'t archive builds. ' + 'Use --dry-run to test locally') @@ -153,49 +144,25 @@ create_maven_release.generate_r8_maven_zip( utils.MAVEN_ZIP_LIB, version_file=version_file, - skip_gradle_build=options.skip_gradle_build, - new_gradle=new_gradle) - - - # Generate and copy a full build without dependencies. - if (not options.skip_gradle_build): - if (new_gradle): - gradle.RunGradle([':main:swissArmyKnife'], new_gradle=True) - else: - gradle.RunGradleExcludeDeps([utils.R8, utils.R8_SRC]) - if (not new_gradle): - shutil.copyfile(utils.R8_JAR, utils.R8_FULL_EXCLUDE_DEPS_JAR) + skip_gradle_build=options.skip_gradle_build) # Ensure all archived artifacts has been built before archiving. # The target tasks postfixed by 'lib' depend on the actual target task so # building it invokes the original task first. # The '-Pno_internal' flag is important because we generate the lib based on uses in tests. if (not options.skip_gradle_build): - if (new_gradle): - gradle.RunGradle([ - ':keepanno:keepAnnoAnnotationsJar', - ':main:consolidatedLicense', - ':main:r8WithRelocatedDeps', - ':main:swissArmyKnife', - ':test:r8LibNoDeps', - ':test:r8LibWithRelocatedDeps', - ':test:retraceNoDeps', - ':test:retraceWithRelocatedDeps', - ':test:sourcesJar', - ':test:sourcesJar', - '-Pno_internal' - ], new_gradle=True) - else: - gradle.RunGradle([ - utils.R8, - utils.R8LIB, - utils.R8LIB_NO_DEPS, - utils.R8RETRACE, - utils.R8RETRACE_NO_DEPS, - utils.LIBRARY_DESUGAR_CONVERSIONS, - utils.KEEPANNO_ANNOTATIONS_TARGET, - '-Pno_internal' - ]) + gradle.RunGradle([ + utils.GRADLE_TASK_CONSOLIDATED_LICENSE, + utils.GRADLE_TASK_KEEP_ANNO_JAR, + utils.GRADLE_TASK_R8, + utils.GRADLE_TASK_R8LIB, + utils.GRADLE_TASK_R8LIB_NO_DEPS, + utils.GRADLE_TASK_RETRACE, + utils.GRADLE_TASK_RETRACE_NO_DEPS, + utils.GRADLE_TASK_SOURCE_JAR, + utils.GRADLE_TASK_SWISS_ARMY_KNIFE, + '-Pno_internal' + ], new_gradle=True) # Create maven release of the desuage_jdk_libs configuration. This require # an r8.jar with dependencies to have been built. @@ -233,7 +200,7 @@ print('On main, using git hash for archiving') version = GetGitHash() - destination = GetVersionDestination('gs://', version, is_main, new_gradle) + destination = GetVersionDestination('gs://', version, is_main) if utils.cloud_storage_exists(destination) and not options.dry_run: raise Exception('Target archive directory %s already exists' % destination) @@ -273,8 +240,7 @@ if file_name.endswith('.jar') and not file_name.endswith('-src.jar'): with zipfile.ZipFile(tagged_jar, 'a') as zip: zip.write(version_file, os.path.basename(version_file)) - destination = GetUploadDestination(version, file_name, is_main, - new_gradle=new_gradle) + destination = GetUploadDestination(version, file_name, is_main) print('Uploading %s to %s' % (tagged_jar, destination)) if options.dry_run: if options.dry_run_output: @@ -286,24 +252,21 @@ print('Dry run, not actually uploading') else: utils.upload_file_to_cloud_storage(tagged_jar, destination) - print('File available at: %s' % GetUrl(version, file_name, is_main, - new_gradle=new_gradle)) + print('File available at: %s' % GetUrl(version, file_name, is_main)) # Upload R8 to a maven compatible location. if file == utils.R8_JAR: maven_dst = GetUploadDestination(utils.get_maven_path('r8', version), - 'r8-%s.jar' % version, is_main, - new_gradle=new_gradle) + 'r8-%s.jar' % version, is_main) maven_pom_dst = GetUploadDestination( utils.get_maven_path('r8', version), - 'r8-%s.pom' % version, is_main, new_gradle=new_gradle) + 'r8-%s.pom' % version, is_main) if options.dry_run: print('Dry run, not actually creating maven repo for R8') else: utils.upload_file_to_cloud_storage(tagged_jar, maven_dst) utils.upload_file_to_cloud_storage(default_pom_file, maven_pom_dst) - print('Maven repo root available at: %s' % GetMavenUrl( - is_main, new_gradle=new_gradle)) + print('Maven repo root available at: %s' % GetMavenUrl(is_main)) # Upload desugar_jdk_libs configuration to a maven compatible location. if file == utils.DESUGAR_CONFIGURATION: @@ -311,8 +274,7 @@ jar_version_name = 'desugar_jdk_libs_configuration-%s.jar' % version maven_dst = GetUploadDestination( utils.get_maven_path('desugar_jdk_libs_configuration', version), - jar_version_name, is_main, - new_gradle=new_gradle) + jar_version_name, is_main) with utils.TempDir() as tmp_dir: desugar_jdk_libs_configuration_jar = os.path.join(tmp_dir, @@ -333,11 +295,10 @@ else: utils.upload_file_to_cloud_storage( desugar_jdk_libs_configuration_jar, maven_dst) - print('Maven repo root available at: %s' % GetMavenUrl(is_main, - new_gradle=new_gradle)) + print('Maven repo root available at: %s' % GetMavenUrl(is_main)) # Also archive the jar as non maven destination for Google3 jar_destination = GetUploadDestination( - version, jar_basename, is_main, new_gradle=new_gradle) + version, jar_basename, is_main) utils.upload_file_to_cloud_storage( desugar_jdk_libs_configuration_jar, jar_destination) @@ -348,8 +309,7 @@ jar_version_name = 'desugar_jdk_libs_configuration-%s-jdk11-legacy.jar' % version maven_dst = GetUploadDestination( utils.get_maven_path('desugar_jdk_libs_configuration', version), - jar_version_name, is_main, - new_gradle=new_gradle) + jar_version_name, is_main) with utils.TempDir() as tmp_dir: desugar_jdk_libs_configuration_jar = os.path.join(tmp_dir, @@ -370,11 +330,10 @@ else: utils.upload_file_to_cloud_storage( desugar_jdk_libs_configuration_jar, maven_dst) - print('Maven repo root available at: %s' % GetMavenUrl( - is_main, new_gradle=new_gradle)) + print('Maven repo root available at: %s' % GetMavenUrl(is_main)) # Also archive the jar as non maven destination for Google3 jar_destination = GetUploadDestination( - version, jar_basename, is_main, new_gradle=new_gradle) + version, jar_basename, is_main) utils.upload_file_to_cloud_storage( desugar_jdk_libs_configuration_jar, jar_destination)
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py index f93213a..8079c61 100755 --- a/tools/create_maven_release.py +++ b/tools/create_maven_release.py
@@ -252,7 +252,7 @@ new_gradle=False): if not skip_gradle_build: if (new_gradle): - gradle.RunGradle([':test:r8LibWithRelocatedDeps', + gradle.RunGradle([utils.GRADLE_TASK_R8LIB, '-Pno_internal'], new_gradle=True) else: gradle.RunGradle([utils.R8LIB, '-Pno_internal'])
diff --git a/tools/run_benchmark.py b/tools/run_benchmark.py index c066678..929a672 100755 --- a/tools/run_benchmark.py +++ b/tools/run_benchmark.py
@@ -16,8 +16,7 @@ NONLIB_BUILD_TARGET = 'R8WithRelocatedDeps' NONLIB_TEST_BUILD_TARGETS = [utils.R8_TESTS_TARGET, utils.R8_TESTS_DEPS_TARGET] -# TODO(b/300387869): Cleanup targets -R8LIB_BUILD_TARGET = ':test:r8LibWithRelocatedDeps' +R8LIB_BUILD_TARGET = utils.GRADLE_TASK_R8LIB R8LIB_TEST_BUILD_TARGETS = [utils.R8LIB_TESTS_TARGET, utils.R8LIB_TESTS_DEPS_TARGET] # The r8lib target is always the golem target.
diff --git a/tools/run_on_app_dump.py b/tools/run_on_app_dump.py index 8602ea9..feb584d 100755 --- a/tools/run_on_app_dump.py +++ b/tools/run_on_app_dump.py
@@ -24,8 +24,8 @@ import utils # TODO(b/300387869): Cleanup targets -GOLEM_BUILD_TARGETS = [':test:r8LibWithRelocatedDeps', - ':test:retraceWithRelocatedDeps'] +GOLEM_BUILD_TARGETS = [utils.GRADLE_TASK_R8LIB, + utils.GRADLE_TASK_RETRACE] SHRINKERS = ['r8', 'r8-full', 'r8-nolib', 'r8-nolib-full'] class AttrDict(dict):
diff --git a/tools/test.py b/tools/test.py index 0437701..07adad9 100755 --- a/tools/test.py +++ b/tools/test.py
@@ -205,9 +205,6 @@ result.add_argument('--kotlin-compiler-old', help='Specify to run tests on older kotlin compilers', default=False, action='store_true') - result.add_argument('--new-gradle', - help='Specify to run in the new gradle setup', - default=True, action='store_true') return result.parse_known_args() def has_failures(classes_file): @@ -244,7 +241,7 @@ def Main(): (options, args) = ParseOptions() if utils.is_bot(): - gradle.RunGradle(['--no-daemon', 'clean'], new_gradle=options.new_gradle) + gradle.RunGradle(['--no-daemon', 'clean'], new_gradle=True) print('Running with python ' + str(sys.version_info)) # Always print stats on bots if command cache is enabled options.command_cache_stats = options.command_cache_dir is not None @@ -302,7 +299,7 @@ gradle_args.append('-Pslow_tests=1') if options.tool: gradle_args.append('-Ptool=%s' % options.tool) - if options.one_line_per_test and not options.new_gradle: + if options.one_line_per_test: gradle_args.append('-Pone_line_per_test') if options.test_namespace: gradle_args.append('-Ptest_namespace=%s' % options.test_namespace) @@ -357,14 +354,6 @@ exit(1) if not options.no_r8lib: gradle_args.append('-Pr8lib') - if options.new_gradle: - gradle_args.append(':test:r8LibNoDeps') - gradle_args.append(':test:retraceWithRelocatedDeps') - else: - # Force gradle to build a version of r8lib without dependencies for - # BootstrapCurrentEqualityTest. - gradle_args.append('R8LibNoDeps') - gradle_args.append('R8Retrace') if options.r8lib_no_deps: gradle_args.append('-Pr8lib_no_deps') if options.worktree: @@ -379,26 +368,18 @@ if options.no_arttests: gradle_args.append('-Pno_arttests=true') - # Testing state is only supported in new-gradle going forward - if options.new_gradle and options.rerun: + if options.rerun: testing_state.set_up_test_state(gradle_args, options.rerun, options.testing_state_dir) # Enable completeness testing of ART profile rewriting. gradle_args.append('-Part_profile_rewriting_completeness_check=true') # Build an R8 with dependencies for bootstrapping tests before adding test sources. - if options.new_gradle: - gradle_args.append(':main:r8WithRelocatedDeps') - gradle_args.append(':test:cleanTest') - gradle_args.append('test:test') - gradle_args.append('--stacktrace') - gradle_args.append('-Pprint_full_stacktraces') - else: - gradle_args.append('r8WithRelocatedDeps') - gradle_args.append('r8WithRelocatedDeps17') - # Add Gradle tasks - gradle_args.append('cleanTest') - gradle_args.append('test') + gradle_args.append(utils.GRADLE_TASK_R8) + gradle_args.append(utils.GRADLE_TASK_CLEAN_TEST) + gradle_args.append(utils.GRADLE_TASK_TEST) + gradle_args.append('--stacktrace') + gradle_args.append('-Pprint_full_stacktraces') if options.debug_agent: gradle_args.append('--debug-jvm') @@ -476,7 +457,7 @@ gradle_args.append('-Pruntimes=%s' % ':'.join(runtimes)) return_code = gradle.RunGradle( - gradle_args, throw_on_failure=False, new_gradle=options.new_gradle) + gradle_args, throw_on_failure=False, new_gradle=True) return archive_and_return(return_code, options) # Legacy testing populates the runtimes based on dex_vm. @@ -496,7 +477,7 @@ '-Pruntimes=%s' % ':'.join(runtimes), ], throw_on_failure=False, - new_gradle=options.new_gradle) + new_gradle=True) if options.generate_golden_files_to: sha1 = '%s' % utils.get_HEAD_sha1() with utils.ChangedWorkingDirectory(options.generate_golden_files_to):
diff --git a/tools/utils.py b/tools/utils.py index 4c671b9..4b07b6f 100644 --- a/tools/utils.py +++ b/tools/utils.py
@@ -42,6 +42,18 @@ TEST_ROOT = os.path.join(REPO_ROOT, 'src', 'test', 'java') REPO_SOURCE = 'https://r8.googlesource.com/r8' +GRADLE_TASK_CLEAN_TEST = ':test:cleanTest' +GRADLE_TASK_CONSOLIDATED_LICENSE = ':main:consolidatedLicense' +GRADLE_TASK_KEEP_ANNO_JAR = ':keepanno:keepAnnoAnnotationsJar' +GRADLE_TASK_R8 = ':main:r8WithRelocatedDeps' +GRADLE_TASK_R8LIB = ':test:r8LibWithRelocatedDeps' +GRADLE_TASK_R8LIB_NO_DEPS = ':test:r8LibNoDeps' +GRADLE_TASK_RETRACE = ':test:retraceWithRelocatedDeps' +GRADLE_TASK_RETRACE_NO_DEPS = ':test:retraceNoDeps' +GRADLE_TASK_SOURCE_JAR = ':test:sourcesJar' +GRADLE_TASK_SWISS_ARMY_KNIFE = ':main:swissArmyKnife' +GRADLE_TASK_TEST = ':test:test' + D8 = 'd8' R8 = 'r8' R8LIB = 'r8lib'