Add try-with-resources scope method for timing.
Change-Id: I38268cbf033e8a5bafdedd095c8d89ffb7864402
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 58e68dc..1e73572 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -88,6 +88,7 @@
import com.android.tools.r8.utils.StringDiagnostic;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.Timing;
+import com.android.tools.r8.utils.Timing.TimingScope;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.io.ByteStreams;
@@ -264,9 +265,8 @@
appView.setAppServices(AppServices.builder(appView).build());
List<ProguardConfigurationRule> synthesizedProguardRules = new ArrayList<>();
- timing.begin("Strip unused code");
Set<DexType> classesToRetainInnerClassAttributeFor = null;
- try {
+ try (TimingScope ignored = timing.scope("Strip unused code")) {
Set<DexType> missingClasses = appView.appInfo().getMissingClasses();
missingClasses = filterMissingClasses(
missingClasses, options.getProguardConfiguration().getDontWarnPatterns());
@@ -360,9 +360,6 @@
new AnnotationRemover(appView.withLiveness(), classesToRetainInnerClassAttributeFor)
.ensureValid()
.run();
-
- } finally {
- timing.end();
}
assert appView.appInfo().hasLiveness();
diff --git a/src/main/java/com/android/tools/r8/utils/Timing.java b/src/main/java/com/android/tools/r8/utils/Timing.java
index 77df36a..5f7ef67 100644
--- a/src/main/java/com/android/tools/r8/utils/Timing.java
+++ b/src/main/java/com/android/tools/r8/utils/Timing.java
@@ -57,8 +57,8 @@
}
@Override
- public void scope(String title, TimingScope fn) {
- // Ignore.
+ public TimingScope scope(String title) {
+ return () -> {};
}
};
@@ -336,17 +336,14 @@
top.report(0, top);
}
- public void scope(String title, TimingScope fn) {
+ public TimingScope scope(String title) {
begin(title);
- try {
- fn.apply();
- } finally {
- end();
- }
+ return this::end;
}
- public interface TimingScope {
- void apply();
+ public interface TimingScope extends AutoCloseable {
+ @Override
+ void close();
}
private static Map<String, MemInfo> computeMemoryInformation() {