Merge "Revert "Revert "Disallow const instructions after throwing instructions"""
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
index 173de18..357e949 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
@@ -423,14 +423,13 @@
}
}
- // Allow the first method to consume more than the allowance to be inlined.
- return instructionAllowance < 0;
+ return instructionAllowance < Inliner.numberOfInstructions(inlinee.code);
}
@Override
public void markInlined(InlineeWithReason inlinee) {
// TODO(118734615): All inlining use from the budget - should that only be SIMPLE?
- instructionAllowance -= inliner.numberOfInstructions(inlinee.code);
+ instructionAllowance -= Inliner.numberOfInstructions(inlinee.code);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index 2b0d831..27ea742 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -446,7 +446,7 @@
}
}
- final int numberOfInstructions(IRCode code) {
+ static final int numberOfInstructions(IRCode code) {
int numOfInstructions = 0;
for (BasicBlock block : code.blocks) {
numOfInstructions += block.getInstructions().size();
diff --git a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
index bfffcc9..a35ce71 100644
--- a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
+++ b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
@@ -1740,6 +1740,7 @@
"lang.ref.ReferenceQueue.poll.ReferenceQueue_poll_A01",
match(artRuntimesUpTo(Runtime.ART_V4_4_4)))
.put("lang.Runtime.gc.Runtime_gc_A01", cf())
+ .put("lang.Runtime.runFinalizersOnExitZ.Runtime_runFinalizersOnExit_A01", cf())
.put(
"util.concurrent.AbstractExecutorService.invokeAllLjava_util_CollectionJLjava_util_concurrent_TimeUnit.AbstractExecutorService_invokeAll_A06",
match(runtimes(Runtime.ART_V4_0_4)))