diff options
-rw-r--r-- | asmrun/.depend | 26 | ||||
-rw-r--r-- | asmrun/signals.c | 2 | ||||
-rw-r--r-- | byterun/.depend | 14 | ||||
-rw-r--r-- | byterun/memory.h | 10 | ||||
-rw-r--r-- | byterun/minor_gc.c | 4 | ||||
-rw-r--r-- | byterun/minor_gc.h | 2 |
6 files changed, 34 insertions, 24 deletions
diff --git a/asmrun/.depend b/asmrun/.depend index b144218046..a46cd2c4f7 100644 --- a/asmrun/.depend +++ b/asmrun/.depend @@ -41,11 +41,12 @@ hash.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/str.h -intern.o: intern.c ../byterun/fail.h ../byterun/misc.h \ +intern.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ - ../byterun/mlvalues.h ../byterun/gc.h ../byterun/intext.h \ - ../byterun/io.h ../byterun/memory.h ../byterun/major_gc.h \ - ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/reverse.h + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \ + ../byterun/intext.h ../byterun/io.h ../byterun/memory.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/reverse.h ints.o: ints.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ @@ -71,12 +72,12 @@ memory.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/memory.h \ - ../byterun/minor_gc.h + ../byterun/minor_gc.h ../byterun/signals.h minor_gc.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \ - ../byterun/minor_gc.h ../byterun/roots.h + ../byterun/minor_gc.h ../byterun/roots.h ../byterun/signals.h misc.o: misc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/misc.h obj.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ @@ -153,11 +154,12 @@ hash.d.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/str.h -intern.d.o: intern.c ../byterun/fail.h ../byterun/misc.h \ +intern.d.o: intern.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ - ../byterun/mlvalues.h ../byterun/gc.h ../byterun/intext.h \ - ../byterun/io.h ../byterun/memory.h ../byterun/major_gc.h \ - ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/reverse.h + ../byterun/mlvalues.h ../byterun/fail.h ../byterun/gc.h \ + ../byterun/intext.h ../byterun/io.h ../byterun/memory.h \ + ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \ + ../byterun/reverse.h ints.d.o: ints.c ../byterun/alloc.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \ @@ -183,12 +185,12 @@ memory.d.o: memory.c ../byterun/fail.h ../byterun/misc.h \ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/memory.h \ - ../byterun/minor_gc.h + ../byterun/minor_gc.h ../byterun/signals.h minor_gc.d.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \ ../byterun/mlvalues.h ../byterun/gc.h ../byterun/gc_ctrl.h \ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \ - ../byterun/minor_gc.h ../byterun/roots.h + ../byterun/minor_gc.h ../byterun/roots.h ../byterun/signals.h misc.d.o: misc.c ../byterun/config.h ../byterun/../config/m.h \ ../byterun/../config/s.h ../byterun/misc.h obj.d.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \ diff --git a/asmrun/signals.c b/asmrun/signals.c index 8ff5c081f3..691683ebf3 100644 --- a/asmrun/signals.c +++ b/asmrun/signals.c @@ -25,7 +25,6 @@ static Volatile int async_signal_mode = 0; Volatile int pending_signal = 0; Volatile int force_major_slice = 0; value signal_handlers = 0; -char * young_limit; extern char * caml_last_return_address; /* Call the handler for the given signal */ @@ -299,6 +298,5 @@ void init_signals() act.sa_flags = SA_SIGINFO; sigaction(SIGILL, &act, NULL); #endif - young_limit = young_start; } diff --git a/byterun/.depend b/byterun/.depend index 12c3fadb9d..e59057830f 100644 --- a/byterun/.depend +++ b/byterun/.depend @@ -24,8 +24,8 @@ gc_ctrl.o: gc_ctrl.c alloc.h misc.h config.h ../config/m.h \ hash.o: hash.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h \ memory.h gc.h major_gc.h freelist.h minor_gc.h str.h instrtrace.o: instrtrace.c -intern.o: intern.c fail.h misc.h config.h ../config/m.h ../config/s.h \ - mlvalues.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ +intern.o: intern.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ minor_gc.h reverse.h interp.o: interp.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ mlvalues.h fail.h fix_code.h instruct.h interp.h memory.h gc.h \ @@ -45,7 +45,8 @@ major_gc.o: major_gc.c config.h ../config/m.h ../config/s.h fail.h \ md5.o: md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ mlvalues.h fail.h io.h memory.o: memory.c fail.h misc.h config.h ../config/m.h ../config/s.h \ - mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h + mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h \ + signals.h meta.o: meta.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ mlvalues.h fix_code.h interp.h major_gc.h freelist.h memory.h gc.h \ minor_gc.h prims.h stacks.h @@ -100,8 +101,8 @@ hash.d.o: hash.c mlvalues.h config.h ../config/m.h ../config/s.h misc.h \ memory.h gc.h major_gc.h freelist.h minor_gc.h str.h instrtrace.d.o: instrtrace.c instruct.h misc.h config.h ../config/m.h \ ../config/s.h mlvalues.h opnames.h -intern.d.o: intern.c fail.h misc.h config.h ../config/m.h ../config/s.h \ - mlvalues.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ +intern.d.o: intern.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ + mlvalues.h fail.h gc.h intext.h io.h memory.h major_gc.h freelist.h \ minor_gc.h reverse.h interp.d.o: interp.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ mlvalues.h fail.h fix_code.h instruct.h interp.h memory.h gc.h \ @@ -121,7 +122,8 @@ major_gc.d.o: major_gc.c config.h ../config/m.h ../config/s.h fail.h \ md5.d.o: md5.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ mlvalues.h fail.h io.h memory.d.o: memory.c fail.h misc.h config.h ../config/m.h ../config/s.h \ - mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h + mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h minor_gc.h \ + signals.h meta.d.o: meta.c alloc.h misc.h config.h ../config/m.h ../config/s.h \ mlvalues.h fix_code.h interp.h major_gc.h freelist.h memory.h gc.h \ minor_gc.h prims.h stacks.h diff --git a/byterun/memory.h b/byterun/memory.h index 08c48af567..ea514e68ab 100644 --- a/byterun/memory.h +++ b/byterun/memory.h @@ -33,11 +33,17 @@ void stat_free P((char *)); char * stat_resize P((char *, asize_t)); /* Size in bytes. */ +#ifdef NATIVE_CODE +#define Garbage_collection_function garbage_collection +#else +#define Garbage_collection_function minor_collection +#endif + #define Alloc_small(result, wosize, tag) { \ young_ptr -= Bhsize_wosize (wosize); \ - if (young_ptr < young_start){ \ + if (young_ptr < young_limit){ \ Setup_for_gc; \ - minor_collection (); \ + Garbage_collection_function (); \ Restore_after_gc; \ young_ptr -= Bhsize_wosize (wosize); \ } \ diff --git a/byterun/minor_gc.c b/byterun/minor_gc.c index 2bf53b036c..647ac43968 100644 --- a/byterun/minor_gc.c +++ b/byterun/minor_gc.c @@ -25,7 +25,8 @@ #include "signals.h" asize_t minor_heap_size; -char *young_start = NULL, *young_end = NULL, *young_ptr = NULL; +char *young_start = NULL, *young_end = NULL; +char *young_ptr = NULL, *young_limit = NULL; static value **ref_table = NULL, **ref_table_end, **ref_table_threshold; value **ref_table_ptr = NULL, **ref_table_limit; static asize_t ref_table_size, ref_table_reserve; @@ -48,6 +49,7 @@ void set_minor_heap_size (size) } young_start = new_heap; young_end = new_heap + size; + young_limit = young_start; young_ptr = young_end; minor_heap_size = size; diff --git a/byterun/minor_gc.h b/byterun/minor_gc.h index 07098ac293..d6348f2971 100644 --- a/byterun/minor_gc.h +++ b/byterun/minor_gc.h @@ -17,7 +17,7 @@ #include "misc.h" -extern char *young_start, *young_ptr, *young_end; +extern char *young_start, *young_ptr, *young_end, *young_limit; extern value **ref_table_ptr, **ref_table_limit; extern asize_t minor_heap_size; extern int in_minor_collection; |