Use AutoProfiler in the Bazel codebase.

--
MOS_MIGRATED_REVID=102584924
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index 8a9c9c3..9c18133 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -76,6 +76,7 @@
 import com.google.devtools.build.lib.exec.SingleBuildFileCache;
 import com.google.devtools.build.lib.exec.SymlinkTreeStrategy;
 import com.google.devtools.build.lib.packages.Rule;
+import com.google.devtools.build.lib.profiler.AutoProfiler;
 import com.google.devtools.build.lib.profiler.ProfilePhase;
 import com.google.devtools.build.lib.profiler.Profiler;
 import com.google.devtools.build.lib.profiler.ProfilerTask;
@@ -89,7 +90,6 @@
 import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
 import com.google.devtools.build.lib.syntax.Label;
 import com.google.devtools.build.lib.util.AbruptExitException;
-import com.google.devtools.build.lib.util.BlazeClock;
 import com.google.devtools.build.lib.util.ExitCode;
 import com.google.devtools.build.lib.util.LoggingUtil;
 import com.google.devtools.build.lib.util.io.OutErr;
@@ -472,11 +472,11 @@
         saveCaches(actionCache);
       }
 
-      long startTime = Profiler.nanoTimeMaybe();
-      determineSuccessfulTargets(buildResult, configuredTargets, builtTargets, timer);
-      showBuildResult(request, buildResult, configuredTargets, analysisResult.getAspects());
-      Preconditions.checkNotNull(buildResult.getSuccessfulTargets());
-      Profiler.instance().logSimpleTask(startTime, ProfilerTask.INFO, "Show results");
+      try (AutoProfiler p = AutoProfiler.profiled("Show results", ProfilerTask.INFO)) {
+        determineSuccessfulTargets(buildResult, configuredTargets, builtTargets, timer);
+        showBuildResult(request, buildResult, configuredTargets, analysisResult.getAspects());
+        Preconditions.checkNotNull(buildResult.getSuccessfulTargets());
+      }
       if (explanationHandler != null) {
         uninstallExplanationHandler(explanationHandler);
       }
@@ -541,9 +541,7 @@
    * Prepare for a local output build.
    */
   private void startLocalOutputBuild() throws ExecutorInitException {
-    long startTime = Profiler.nanoTimeMaybe();
-
-    try {
+    try (AutoProfiler p = AutoProfiler.profiled("Starting local output build", ProfilerTask.INFO)) {
       Path outputPath = runtime.getOutputPath();
       Path localOutputPath = runtime.getDirectories().getLocalOutputPath();
 
@@ -559,9 +557,6 @@
           throw new ExecutorInitException("Couldn't handle local output directory symlinks", e);
         }
       }
-    } finally {
-      Profiler.instance().logSimpleTask(startTime, ProfilerTask.INFO,
-          "Starting local output build");
     }
   }
 
@@ -879,21 +874,14 @@
     long actionCacheSizeInBytes = 0;
     long actionCacheSaveTime;
 
-    long startTime = BlazeClock.nanoTime();
+    AutoProfiler p = AutoProfiler.profiledAndLogged("Saving action cache", ProfilerTask.INFO, LOG);
     try {
-      LOG.info("saving action cache...");
       actionCacheSizeInBytes = actionCache.save();
-      LOG.info("action cache saved");
     } catch (IOException e) {
       getReporter().handle(Event.error("I/O error while writing action log: " + e.getMessage()));
     } finally {
-      long stopTime = BlazeClock.nanoTime();
-      actionCacheSaveTime =
-          TimeUnit.MILLISECONDS.convert(stopTime - startTime, TimeUnit.NANOSECONDS);
-      Profiler.instance().logSimpleTask(startTime, stopTime,
-                                        ProfilerTask.INFO, "Saving action cache");
+      actionCacheSaveTime = p.completeAndGetElapsedTimeNanos();
     }
-
     runtime.getEventBus().post(new CachesSavedEvent(
         actionCacheSaveTime, actionCacheSizeInBytes));
   }