Fix GC memory overhead accounting.
There was some missing null checks.
Bug: 16238192
(cherry picked from commit 2e290fb35ba1959e5a0ac85e87591ab9623808c1)
Change-Id: I4220272ac9c194e30fc307fca9918a4bb725e261
diff --git a/runtime/gc/accounting/gc_allocator.cc b/runtime/gc/accounting/gc_allocator.cc
index 49d84fa..ff6a135 100644
--- a/runtime/gc/accounting/gc_allocator.cc
+++ b/runtime/gc/accounting/gc_allocator.cc
@@ -24,12 +24,18 @@
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);
}
diff --git a/runtime/gc/accounting/gc_allocator.h b/runtime/gc/accounting/gc_allocator.h
index 1d96112..d4142f8 100644
--- a/runtime/gc/accounting/gc_allocator.h
+++ b/runtime/gc/accounting/gc_allocator.h
@@ -30,7 +30,7 @@
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> {