=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/gc_risa.c,v retrieving revision 1.10 retrieving revision 1.15 diff -u -p -r1.10 -r1.15 --- OpenXM_contrib2/asir2000/parse/gc_risa.c 2011/05/11 06:03:53 1.10 +++ OpenXM_contrib2/asir2000/parse/gc_risa.c 2015/08/06 10:55:52 1.15 @@ -1,20 +1,25 @@ -/* $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.14 2015/08/06 10:01:53 fujimoto Exp $ */ -#if defined(VISUAL) +#if defined(VISUAL) || defined(__MINGW32__) || defined(__MINGW64__) #include "private/gcconfig.h" #endif #include "gc.h" #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,24 +29,51 @@ 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(); } @@ -76,7 +108,7 @@ double get_rtime() return get_current_time() - asir_start_time; } -#if defined(VISUAL) +#if defined(VISUAL) || defined(__MINGW32__) || defined(__MINGW64__) #include extern int recv_intr,doing_batch; @@ -212,7 +244,7 @@ double GC_get_gctime() { } #endif -#if defined(MSWIN32) && !defined(VISUAL) +#if defined(MSWIN32) && !defined(VISUAL) && !defined(__MINGW32__) && !defined(__MINGW64__) #include void process_events() { if ( check_break() ) @@ -245,7 +277,7 @@ void process_events() { } #endif -#if defined(VISUAL) && !defined(MSWIN32) +#if (defined(VISUAL) || defined(__MINGW32__) || defined(__MINGW64__)) && !defined(MSWIN32) int sigsetmask(mask) int mask; { return 0; } void process_events() {