[metrics] Reset metrics at zygote fork

This is needed to prevent metrics in the zygote from being counted
towards child processes. This is especially important as the zygote
can be a very long running process.

Test: libartbase_gtests
Bug: 170149255
Change-Id: I5c34d44c55381dd976b83e81517145f7e23d061f
diff --git a/libartbase/base/metrics/metrics_common.cc b/libartbase/base/metrics/metrics_common.cc
index 0c2ec09..89d003a 100644
--- a/libartbase/base/metrics/metrics_common.cc
+++ b/libartbase/base/metrics/metrics_common.cc
@@ -70,7 +70,7 @@
 
 #define ART_METRIC(name, Kind, ...) name()->Report(backend);
   ART_METRICS(ART_METRIC)
-#undef ART_METRICS
+#undef ART_METRIC
 
   backend->EndReport();
 }
@@ -81,6 +81,13 @@
   os << backend.GetAndResetBuffer();
 }
 
+void ArtMetrics::Reset() {
+  beginning_timestamp_ = MilliTime();
+#define ART_METRIC(name, kind, ...) name##_.Reset();
+  ART_METRICS(ART_METRIC);
+#undef ART_METRIC
+}
+
 StringBackend::StringBackend() {}
 
 std::string StringBackend::GetAndResetBuffer() {