=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/gc_risa.c,v retrieving revision 1.10 retrieving revision 1.13 diff -u -p -r1.10 -r1.13 --- OpenXM_contrib2/asir2000/parse/gc_risa.c 2011/05/11 06:03:53 1.10 +++ OpenXM_contrib2/asir2000/parse/gc_risa.c 2013/06/13 18:40:31 1.13 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/parse/gc_risa.c,v 1.9 2009/02/16 17:23:52 ohara Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/parse/gc_risa.c,v 1.12 2013/06/13 07:45:28 ohara Exp $ */ #if defined(VISUAL) #include "private/gcconfig.h" @@ -7,14 +7,19 @@ #include void error(char *); +void int_handler(); int *StackBottom; +int in_gc, caught_intr; void *Risa_GC_malloc(size_t d) { void *ret; + in_gc = 1; ret = (void *)GC_malloc(d); + in_gc = 0; + if ( caught_intr ) { caught_intr = 0; int_handler(); } if ( !ret ) error("GC_malloc : failed to allocate memory"); return ret; @@ -24,23 +29,50 @@ void *Risa_GC_malloc_atomic(size_t d) { void *ret; + in_gc = 1; ret = (void *)GC_malloc_atomic(d); + in_gc = 0; + if ( caught_intr ) { caught_intr = 0; int_handler(); } if ( !ret ) error("GC_malloc_atomic : failed to allocate memory"); return ret; } +void *Risa_GC_malloc_atomic_ignore_off_page(size_t d) +{ + void *ret; + + in_gc = 1; + ret = (void *)GC_malloc_atomic_ignore_off_page(d); + in_gc = 0; + if ( caught_intr ) { caught_intr = 0; int_handler(); } + if ( !ret ) + error("GC_malloc_atomic_ignore_off_page : failed to allocate memory"); + return ret; +} + void *Risa_GC_realloc(void *p,size_t d) { void *ret; + in_gc = 1; ret = (void *)GC_realloc(p,d); + in_gc = 0; + if ( caught_intr ) { caught_intr = 0; int_handler(); } if ( !ret ) error("GC_realloc : failed to reallocate memory"); return ret; } -int get_heapsize() +void Risa_GC_free(void *p) +{ + in_gc = 1; + GC_free(p); + in_gc = 0; + if ( caught_intr ) { caught_intr = 0; int_handler(); } +} + +size_t get_heapsize() { return GC_get_heap_size(); }