diff options
| author | Michael Bebenita <[email protected]> | 2010-07-27 23:10:31 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-07-28 20:30:28 -0700 |
| commit | 6afb6c767ed3274359bcac5af5a11851922e3668 (patch) | |
| tree | 090572a274b2c860878863c725bfe93ffad48d52 /src/rt | |
| parent | Log a separator when logging switches between threads. (diff) | |
| download | rust-6afb6c767ed3274359bcac5af5a11851922e3668.tar.xz rust-6afb6c767ed3274359bcac5af5a11851922e3668.zip | |
Move allocation-tracking into rust_srv.
Diffstat (limited to 'src/rt')
| -rw-r--r-- | src/rt/rust.cpp | 21 | ||||
| -rw-r--r-- | src/rt/rust.h | 3 |
2 files changed, 14 insertions, 10 deletions
diff --git a/src/rt/rust.cpp b/src/rt/rust.cpp index 00e709c9..37398655 100644 --- a/src/rt/rust.cpp +++ b/src/rt/rust.cpp @@ -1,13 +1,12 @@ #include "rust_internal.h" -#include "util/array_list.h" -// #define TRACK_ALLOCATIONS +#define TRACK_ALLOCATIONS // For debugging, keeps track of live allocations, so you can find out // exactly what leaked. -#ifdef TRACK_ALLOCATIONS -array_list<void *> allocation_list; -#endif +//#ifdef TRACK_ALLOCATIONS +//array_list<void *> allocation_list; +//#endif rust_srv::rust_srv() : live_allocs(0) @@ -70,16 +69,18 @@ rust_srv::realloc(void *p, size_t bytes) void rust_srv::free(void *p) { - if (live_allocs < 1) { - fatal("live_allocs < 1", __FILE__, __LINE__); - } - live_allocs--; - ::free(p); #ifdef TRACK_ALLOCATIONS if (allocation_list.replace(p, NULL) == NULL) { + printf("ptr 0x%" PRIxPTR " is not in allocation_list\n", + (uintptr_t) p); fatal("not in allocation_list", __FILE__, __LINE__); } #endif + if (live_allocs < 1) { + fatal("live_allocs < 1", __FILE__, __LINE__); + } + live_allocs--; + ::free(p); } void diff --git a/src/rt/rust.h b/src/rt/rust.h index 135a1799..c65d0eb1 100644 --- a/src/rt/rust.h +++ b/src/rt/rust.h @@ -17,8 +17,11 @@ #define CDECL #endif +#include "util/array_list.h" + struct rust_srv { size_t live_allocs; + array_list<void *> allocation_list; virtual void log(char const *); virtual void fatal(char const *, char const *, size_t); |