OSDN Git Service

Fix GC memory overhead accounting.
authorMathieu Chartier <mathieuc@google.com>
Thu, 21 Aug 2014 19:21:48 +0000 (12:21 -0700)
committerMathieu Chartier <mathieuc@google.com>
Fri, 22 Aug 2014 18:48:07 +0000 (11:48 -0700)
There was some missing null checks.

Bug: 16238192

Change-Id: Iaf8d752db5f21e76f668c0066a063239ff374eee

runtime/gc/accounting/gc_allocator.cc
runtime/gc/accounting/gc_allocator.h

index 49d84fa..ff6a135 100644 (file)
@@ -24,12 +24,18 @@ namespace gc {
 namespace accounting {
 
 void* RegisterGcAllocation(size_t bytes) {
-  Runtime::Current()->GetHeap()->RegisterGCAllocation(bytes);
+  gc::Heap* heap = Runtime::Current()->GetHeap();
+  if (heap != nullptr) {
+    heap->RegisterGCAllocation(bytes);
+  }
   return malloc(bytes);
 }
 
 void RegisterGcDeallocation(void* p, size_t bytes) {
-  Runtime::Current()->GetHeap()->RegisterGCDeAllocation(bytes);
+  gc::Heap* heap = Runtime::Current()->GetHeap();
+  if (heap != nullptr) {
+    heap->RegisterGCDeAllocation(bytes);
+  }
   free(p);
 }
 
index 1d96112..d4142f8 100644 (file)
@@ -30,7 +30,7 @@ namespace accounting {
 void* RegisterGcAllocation(size_t bytes);
 void RegisterGcDeallocation(void* p, size_t bytes);
 
-static const bool kMeasureGcMemoryOverhead = false;
+static constexpr bool kMeasureGcMemoryOverhead = false;
 
 template <typename T>
 class GcAllocatorImpl : public std::allocator<T> {