diff options
| author | Michael Bebenita <mbebenita@mozilla.com> | 2010-08-16 14:13:08 -0700 |
|---|---|---|
| committer | Michael Bebenita <mbebenita@mozilla.com> | 2010-08-16 15:05:57 -0700 |
| commit | b40a9fa787dd3b7d979cdf3e156284d6667fe9d2 (patch) | |
| tree | 27b18e7280feed3adc368a0d98053f84d4fe2215 /src/rt/rust.cpp | |
| parent | 7e62aa68018c94bcfc3fd6beab90cf7b87f91cbf (diff) | |
| download | rust-b40a9fa787dd3b7d979cdf3e156284d6667fe9d2.tar.gz rust-b40a9fa787dd3b7d979cdf3e156284d6667fe9d2.zip | |
Pulled rust_srv in its own file. Some cleanup, and added varargs to assertion macros.
Diffstat (limited to 'src/rt/rust.cpp')
| -rw-r--r-- | src/rt/rust.cpp | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/src/rt/rust.cpp b/src/rt/rust.cpp index d0215edc18b..905b0c8a359 100644 --- a/src/rt/rust.cpp +++ b/src/rt/rust.cpp @@ -1,110 +1,5 @@ #include "rust_internal.h" -#define TRACK_ALLOCATIONS - -rust_srv::rust_srv() : - live_allocs(0) -{ -} - -rust_srv::~rust_srv() -{ - if (live_allocs != 0) { - char msg[128]; - snprintf(msg, sizeof(msg), - "leaked memory in rust main loop (%" PRIuPTR " objects)", - live_allocs); -#ifdef TRACK_ALLOCATIONS - for (size_t i = 0; i < allocation_list.size(); i++) { - if (allocation_list[i] != NULL) { - printf("allocation 0x%" PRIxPTR " was not freed\n", - (uintptr_t) allocation_list[i]); - } - } -#endif - fatal(msg, __FILE__, __LINE__); - } -} - -void -rust_srv::log(char const *str) -{ - printf("rt: %s\n", str); -} - - - -void * -rust_srv::malloc(size_t bytes) -{ - ++live_allocs; - void * val = ::malloc(bytes); -#ifdef TRACK_ALLOCATIONS - allocation_list.append(val); -#endif - return val; -} - -void * -rust_srv::realloc(void *p, size_t bytes) -{ - if (!p) { - live_allocs++; - } - void * val = ::realloc(p, bytes); -#ifdef TRACK_ALLOCATIONS - if (allocation_list.replace(p, val) == false) { - printf("realloc: ptr 0x%" PRIxPTR " is not in allocation_list\n", - (uintptr_t) p); - fatal("not in allocation_list", __FILE__, __LINE__); - } -#endif - return val; -} - -void -rust_srv::free(void *p) -{ -#ifdef TRACK_ALLOCATIONS - if (allocation_list.replace(p, NULL) == false) { - printf("free: 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 -rust_srv::fatal(char const *expr, char const *file, size_t line) -{ - char buf[1024]; - snprintf(buf, sizeof(buf), - "fatal, '%s' failed, %s:%d", - expr, file, (int)line); - log(buf); - exit(1); -} - -void -rust_srv::warning(char const *expr, char const *file, size_t line) -{ - char buf[1024]; - snprintf(buf, sizeof(buf), - "warning: '%s', at: %s:%d", - expr, file, (int)line); - log(buf); -} - -rust_srv * -rust_srv::clone() -{ - return new rust_srv(); -} struct command_line_args |
