From f7f73cf5aeed32a484425bfd7410ce866750afb8 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 23 Apr 2019 13:56:38 +0200 Subject: [PATCH] Allow disabling some GC debug checks --- src/libexpr/gc.cc | 10 ++-------- src/libexpr/gc.hh | 10 +++++++++- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/libexpr/gc.cc b/src/libexpr/gc.cc index 8320c64ee..902a4c712 100644 --- a/src/libexpr/gc.cc +++ b/src/libexpr/gc.cc @@ -295,8 +295,10 @@ std::pair GC::Arena::freeUnmarked() obj->unmark(); } else { //debug("FREE OBJECT %x %d %d", obj, obj->type, objSize); + #if GC_DEBUG for (Size i = 0; i < objSize; ++i) ((Word *) obj)[i] = 0xdeadc0dedeadbeefULL; + #endif objectsFreed += 1; wordsFreed += objSize; if (curFree) { @@ -333,14 +335,6 @@ bool GC::isObject(void * p) return false; } -void GC::assertObject(void * p) -{ - if (!isObject(p)) { - printError("object %p is not an object", p); - abort(); - } -} - GC::ArenaList::ArenaList() { static Size initialHeapSize = std::stol(getEnv("GC_INITIAL_HEAP_SIZE", "1000000")) / WORD_SIZE; diff --git a/src/libexpr/gc.hh b/src/libexpr/gc.hh index a0ca3f307..dfd8c1b08 100644 --- a/src/libexpr/gc.hh +++ b/src/libexpr/gc.hh @@ -277,7 +277,15 @@ public: bool isObject(void * p); - void assertObject(void * p); + void assertObject(void * p) + { + #if GC_DEBUG + if (!isObject(p)) { + printError("object %p is not an object", p); + abort(); + } + #endif + } }; extern GC gc;