[ApiModel] Check for api model without merging before stubbing
Bug: b/264390177
Change-Id: I1c6091b2926ec093b6bafcbaa45f98b5f05374c7
diff --git a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
index c1af115..261497d 100644
--- a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
+++ b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
@@ -23,6 +23,7 @@
import com.android.tools.r8.graph.ThrowExceptionCode;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import com.android.tools.r8.synthesis.CommittedItems;
+import com.android.tools.r8.synthesis.SyntheticItems;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.WorkList;
import com.google.common.collect.Sets;
@@ -89,10 +90,15 @@
eventConsumer.finished(appView);
}
+ private boolean isAlreadyOutlined(DexProgramClass clazz) {
+ SyntheticItems syntheticItems = appView.getSyntheticItems();
+ return syntheticItems.isSyntheticOfKind(clazz.getType(), kinds -> kinds.API_MODEL_OUTLINE)
+ || syntheticItems.isSyntheticOfKind(
+ clazz.getType(), kinds -> kinds.API_MODEL_OUTLINE_WITHOUT_GLOBAL_MERGING);
+ }
+
public void processClass(DexProgramClass clazz) {
- if (appView
- .getSyntheticItems()
- .isSyntheticOfKind(clazz.getType(), kinds -> kinds.API_MODEL_OUTLINE)) {
+ if (isAlreadyOutlined(clazz)) {
return;
}
// We cannot reliably create a stub that will have the same throwing behavior for all VMs.