From 658998221e9e8c3de1b6104a234876f21bcbf6ec Mon Sep 17 00:00:00 2001 From: "csander@caltech.edu" <csander@caltech.edu> Date: Sat, 21 Nov 2020 00:18:13 +0000 Subject: [PATCH] Fix heap clearing being timed --- driver/mdriver.c | 6 +++--- include/memlib.h | 3 ++- src/memlib.c | 8 +++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/driver/mdriver.c b/driver/mdriver.c index f614db3..3b08ca5 100644 --- a/driver/mdriver.c +++ b/driver/mdriver.c @@ -776,7 +776,7 @@ static int eval_mm_valid(trace_t *trace, range_t **ranges) char *p; /* Reset the heap and free any records in the range list */ - mem_reset_brk(); + mem_reset_brk(true); reinit_trace(trace); /* Call the mm package's init function */ @@ -918,7 +918,7 @@ static double eval_mm_util(trace_t *trace, int tracenum) reinit_trace(trace); /* initialize the heap and the mm malloc package */ - mem_reset_brk(); + mem_reset_brk(false); if (!mm_init()) { app_error("trace %d: mm_init failed in eval_mm_util", tracenum); } @@ -1004,7 +1004,7 @@ static void eval_mm_speed(void *ptr) reinit_trace(trace); /* Reset the heap and initialize the mm package */ - mem_reset_brk(); + mem_reset_brk(false); if (!mm_init()) { app_error("mm_init failed in eval_mm_speed"); } diff --git a/include/memlib.h b/include/memlib.h index f87c2e8..f41e6d6 100644 --- a/include/memlib.h +++ b/include/memlib.h @@ -1,10 +1,11 @@ +#include <stdbool.h> #include <stddef.h> #include <sys/types.h> void mem_init(void); void mem_deinit(void); void *mem_sbrk(ssize_t incr); -void mem_reset_brk(void); +void mem_reset_brk(bool clear); void *mem_heap_lo(void); void *mem_heap_hi(void); size_t mem_heapsize(void); diff --git a/src/memlib.c b/src/memlib.c index 85a456a..6f21f61 100644 --- a/src/memlib.c +++ b/src/memlib.c @@ -30,7 +30,7 @@ void mem_init() { ); /* Heap is initially empty. */ - mem_reset_brk(); + mem_reset_brk(true); } /* @@ -43,11 +43,13 @@ void mem_deinit() { /* * mem_reset_brk - reset the simulated brk pointer to make an empty heap */ -void mem_reset_brk() { +void mem_reset_brk(bool clear) { mem_brk = heap; /* Fill heap with garbage since it is uninitialized. */ - memset(heap, 0xCC, MAX_HEAP); + if (clear) { + memset(heap, 0xCC, MAX_HEAP); + } } /* -- GitLab