Add platform entry to the compiler marker.
Bug: b/232073181
Change-Id: I7931d941101057295580a9a97256bad1ea8c9d4e
diff --git a/src/main/java/com/android/tools/r8/dex/Marker.java b/src/main/java/com/android/tools/r8/dex/Marker.java
index 8d57a1c..f2b1e15 100644
--- a/src/main/java/com/android/tools/r8/dex/Marker.java
+++ b/src/main/java/com/android/tools/r8/dex/Marker.java
@@ -32,6 +32,7 @@
public static final String PG_MAP_ID = "pg-map-id";
public static final String R8_MODE = "r8-mode";
private static final String NO_LIBRARY_DESUGARING = "<no-library-desugaring>";
+ private static final String ANDROID_PLATFORM_BUILD = "platform";
public enum Tool {
D8,
@@ -268,6 +269,17 @@
return this;
}
+ public boolean isAndroidPlatformBuild() {
+ return jsonObject.has(ANDROID_PLATFORM_BUILD)
+ && jsonObject.get(ANDROID_PLATFORM_BUILD).getAsBoolean();
+ }
+
+ public Marker setAndroidPlatformBuild() {
+ assert !jsonObject.has(ANDROID_PLATFORM_BUILD);
+ jsonObject.addProperty(ANDROID_PLATFORM_BUILD, true);
+ return this;
+ }
+
@Override
public String toString() {
// In order to make printing of markers deterministic we sort the entries by key.
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 840ee5a..07322dc 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -268,9 +268,11 @@
}
public void configureAndroidPlatformBuild(boolean isAndroidPlatformBuild) {
+ assert !androidPlatformBuild;
if (!isAndroidPlatformBuild) {
return;
}
+ androidPlatformBuild = isAndroidPlatformBuild;
// Configure options according to platform build assumptions.
// See go/r8platformflag and b/232073181.
apiModelingOptions().disableMissingApiModeling();
@@ -464,6 +466,9 @@
if (tool == Tool.R8) {
marker.setR8Mode(forceProguardCompatibility ? "compatibility" : "full");
}
+ if (androidPlatformBuild) {
+ marker.setAndroidPlatformBuild();
+ }
return marker;
}
@@ -591,6 +596,7 @@
// Skipping min_api check and compiling an intermediate result intended for later merging.
// Intermediate builds also emits or update synthesized classes mapping.
public boolean intermediate = false;
+ private boolean androidPlatformBuild = false;
public boolean retainCompileTimeAnnotations = true;
public boolean ignoreBootClasspathEnumsForMaindexTracing =
System.getProperty("com.android.tools.r8.ignoreBootClasspathEnumsForMaindexTracing") != null;
diff --git a/src/test/java/com/android/tools/r8/MarkerMatcher.java b/src/test/java/com/android/tools/r8/MarkerMatcher.java
index 22610d3..bbd1952 100644
--- a/src/test/java/com/android/tools/r8/MarkerMatcher.java
+++ b/src/test/java/com/android/tools/r8/MarkerMatcher.java
@@ -95,6 +95,20 @@
};
}
+ public static Matcher<Marker> markerAndroidPlatformBuild() {
+ return new MarkerMatcher() {
+ @Override
+ protected boolean eval(Marker marker) {
+ return marker.isAndroidPlatformBuild();
+ }
+
+ @Override
+ protected void explain(Description description) {
+ description.appendText("platform");
+ }
+ };
+ }
+
public static Matcher<Marker> markerCompilationMode(CompilationMode compilationMode) {
return new MarkerMatcher() {
@Override
diff --git a/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java b/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java
index f83ebc8..e43d0b2 100644
--- a/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java
+++ b/src/test/java/com/android/tools/r8/compilerapi/androidplatformbuild/AndroidPlatformBuildApiTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.compilerapi.androidplatformbuild;
+import static com.android.tools.r8.MarkerMatcher.markerAndroidPlatformBuild;
import static com.android.tools.r8.MarkerMatcher.markerMinApi;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -25,6 +26,8 @@
public class AndroidPlatformBuildApiTest extends CompilerApiTestRunner {
+ public static final int MIN_API_LEVEL = 31;
+
public AndroidPlatformBuildApiTest(TestParameters parameters) {
super(parameters);
}
@@ -51,7 +54,10 @@
test.accept(new DexIndexedConsumer.ArchiveConsumer(output));
assertThat(
new CodeInspector(output).getMarkers(),
- CoreMatchers.everyItem(markerMinApi(AndroidApiLevel.ANDROID_PLATFORM)));
+ CoreMatchers.everyItem(
+ CoreMatchers.allOf(
+ markerMinApi(AndroidApiLevel.getAndroidApiLevel(MIN_API_LEVEL)),
+ CoreMatchers.not(markerAndroidPlatformBuild()))));
}
public static class ApiTest extends CompilerApiTest {
@@ -67,7 +73,7 @@
.addLibraryFiles(getJava8RuntimeJar())
.setProgramConsumer(programConsumer)
.setAndroidPlatformBuild(true)
- .setMinApiLevel(10000)
+ .setMinApiLevel(MIN_API_LEVEL)
.build());
}
@@ -79,7 +85,7 @@
.addLibraryFiles(getJava8RuntimeJar())
.setProgramConsumer(programConsumer)
.setAndroidPlatformBuild(true)
- .setMinApiLevel(10000)
+ .setMinApiLevel(MIN_API_LEVEL)
.build());
}
diff --git a/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1 b/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1
index 4101eab..3bb800b 100644
--- a/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1
+++ b/third_party/binary_compatibility_tests/compiler_api_tests.tar.gz.sha1
@@ -1 +1 @@
-b25c35c727db61b1c09b46ce80bc4feaffc3a48c
\ No newline at end of file
+719dcfccfdf9b244f99be9bbdc5126aacc350e09
\ No newline at end of file