mymemory: implement snapshot_*() allocations on model-checker's heap
authorBrian Norris <banorris@uci.edu>
Mon, 8 Oct 2012 20:26:57 +0000 (13:26 -0700)
committerBrian Norris <banorris@uci.edu>
Mon, 8 Oct 2012 20:29:43 +0000 (13:29 -0700)
mymemory.cc
mymemory.h

index 387d6de..08bd4e4 100644 (file)
@@ -73,19 +73,31 @@ void *model_malloc(size_t size)
 /** @brief Snapshotting malloc, for use by model-checker (not user progs) */
 void * snapshot_malloc(size_t size)
 {
 /** @brief Snapshotting malloc, for use by model-checker (not user progs) */
 void * snapshot_malloc(size_t size)
 {
-       return malloc(size);
+       void *tmp = mspace_malloc(model_snapshot_space, size);
+       ASSERT(tmp);
+       return tmp;
 }
 
 /** @brief Snapshotting calloc, for use by model-checker (not user progs) */
 void * snapshot_calloc(size_t count, size_t size)
 {
 }
 
 /** @brief Snapshotting calloc, for use by model-checker (not user progs) */
 void * snapshot_calloc(size_t count, size_t size)
 {
-       return calloc(count, size);
+       void *tmp = mspace_calloc(model_snapshot_space, count, size);
+       ASSERT(tmp);
+       return tmp;
+}
+
+/** @brief Snapshotting realloc, for use by model-checker (not user progs) */
+void *snapshot_realloc(void *ptr, size_t size)
+{
+       void *tmp = mspace_realloc(model_snapshot_space, ptr, size);
+       ASSERT(tmp);
+       return tmp;
 }
 
 /** @brief Snapshotting free, for use by model-checker (not user progs) */
 void snapshot_free(void *ptr)
 {
 }
 
 /** @brief Snapshotting free, for use by model-checker (not user progs) */
 void snapshot_free(void *ptr)
 {
-       free(ptr);
+       mspace_free(model_snapshot_space, ptr);
 }
 
 /** Non-snapshotting free for our use. */
 }
 
 /** Non-snapshotting free for our use. */
index b224206..d7c4f99 100644 (file)
@@ -47,6 +47,7 @@ void model_free(void *ptr);
 
 void * snapshot_malloc(size_t size);
 void * snapshot_calloc(size_t count, size_t size);
 
 void * snapshot_malloc(size_t size);
 void * snapshot_calloc(size_t count, size_t size);
+void * snapshot_realloc(void *ptr, size_t size);
 void snapshot_free(void *ptr);
 
 /** @brief Provides a non-snapshotting allocator for use in STL classes.
 void snapshot_free(void *ptr);
 
 /** @brief Provides a non-snapshotting allocator for use in STL classes.