Add missing WaitForConcurrentGcToComplete calls.

Some calls to WaitForConcurrentGcToComplete were missing. This was enabling recursive GCs to occasionally occur.

Change-Id: I0dcce50ae1ebfb03681990ec3bffa7b227981383
diff --git a/src/heap.h b/src/heap.h
index 96a9ee6..23053f5 100644
--- a/src/heap.h
+++ b/src/heap.h
@@ -120,8 +120,9 @@
   // from the system. Doesn't allow the space to exceed its growth limit.
   void SetIdealFootprint(size_t max_allowed_footprint);
 
-  // Blocks the caller until the garbage collector becomes idle.
-  void WaitForConcurrentGcToComplete();
+  // Blocks the caller until the garbage collector becomes idle and returns
+  // true if we waited for the GC to complete.
+  bool WaitForConcurrentGcToComplete();
 
   pid_t GetLockOwner(); // For SignalCatcher.
   void AssertLockHeld() {