--- parser3/src/main/pa_memory.C 2003/04/01 13:48:32 1.1.2.5.2.9 +++ parser3/src/main/pa_memory.C 2003/04/02 07:29:21 1.1.2.5.2.11 @@ -5,14 +5,14 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_MEMORY_C="$Date: 2003/04/01 13:48:32 $"; +static const char* IDENT_MEMORY_C="$Date: 2003/04/02 07:29:21 $"; #include "pa_sapi.h" #include "pa_common.h" void *pa_fail_alloc(const char* what, size_t size) { #ifdef PA_DEBUG_DISABLE_GC - SAPI::abort("xx"); + SAPI::abort("out of memory (in pa_fail_alloc)"); #else SAPI::abort("out of memory: failed to %s %u bytes. " "heap_used=%lu, heap_free=%lu, bytes_since_gc=%lu, total_bytes=%lu", @@ -30,8 +30,6 @@ void *pa_fail_alloc(const char* what, si #ifdef PA_DEBUG_GC_MEMORY -void bug() {} - const size_t HEADTAIL_SIZE=4; static size_t debug_size(size_t user_size) { @@ -52,6 +50,9 @@ static void* fill_return_user(void* aptr for(size_t i=pure_size; i=(char*)0x01c357e40 && ptr<=((char*)0x01c357e4+100)) + //printf("valid:0x%p\n", ptr); + return ptr+HEADTAIL_SIZE; } static void* check_return_debug(void* auser_ptr) { @@ -59,17 +60,14 @@ static void* check_return_debug(void* au char* ptr=user_ptr-HEADTAIL_SIZE; size_t raw_size=GC_size(ptr); - if(raw_size==0) - bug(); + assert(raw_size!=0); size_t pure_size=raw_size; while(ptr[pure_size-1]==PAD_MARK) pure_size--; - if(memcmp(ptr, &BEFORE_MARK, HEADTAIL_SIZE)!=0) - bug(); - if(memcmp(ptr+pure_size-HEADTAIL_SIZE, &AFTER_MARK, HEADTAIL_SIZE)!=0) - bug(); + assert(memcmp(ptr, &BEFORE_MARK, HEADTAIL_SIZE)==0); + assert(memcmp(ptr+pure_size-HEADTAIL_SIZE, &AFTER_MARK, HEADTAIL_SIZE)==0); return ptr; } @@ -86,8 +84,8 @@ void* pa_gc_malloc_atomic(size_t size) { } void* pa_gc_realloc(void* user_ptr, size_t size) { - if(!GC_is_visible(user_ptr)) - bug(); + assert(1<0);//GC_is_visible(user_ptr)); + //printf("realloc: 0x%p -> %u\n", ptr, size); size=debug_size(size); return fill_return_user(