X-Git-Url: http://demsky.eecs.uci.edu/git/?p=model-checker.git;a=blobdiff_plain;f=mymemory.cc;h=9e05c369235dadb077b6d09b1cfb7b2ece92180f;hp=ea8670d60ccdf7250307b7ae4bb55bc89f5507c5;hb=2d0d4ac38e05905a6633b3f2d5112ccadd45c27f;hpb=db2c4ca161b4cba9e453431517af86798c0e9bdb diff --git a/mymemory.cc b/mymemory.cc index ea8670d..9e05c36 100644 --- a/mymemory.cc +++ b/mymemory.cc @@ -8,6 +8,8 @@ #include "mymemory.h" #include "snapshot.h" #include "common.h" +#include "threads-model.h" +#include "model.h" #define REQUESTS_BEFORE_ALLOC 1024 @@ -176,9 +178,11 @@ static void * user_malloc(size_t size) */ void *malloc(size_t size) { - if (user_snapshot_space) + if (user_snapshot_space) { + /* Only perform user allocations from user context */ + ASSERT(!model || thread_current()); return user_malloc(size); - else + } else return HandleEarlyAllocationRequest(size); } @@ -246,4 +250,19 @@ void operator delete[](void *p, size_t size) { free(p); } -#endif /* USE_MPROTECT_SNAPSHOT */ + +#else /* !USE_MPROTECT_SNAPSHOT */ + +/** @brief Snapshotting allocation function for use by the Thread class only */ +void * Thread_malloc(size_t size) +{ + return malloc(size); +} + +/** @brief Snapshotting free function for use by the Thread class only */ +void Thread_free(void *ptr) +{ + free(ptr); +} + +#endif /* !USE_MPROTECT_SNAPSHOT */