summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asmrun/.depend26
-rw-r--r--asmrun/signals.c2
-rw-r--r--byterun/.depend14
-rw-r--r--byterun/memory.h10
-rw-r--r--byterun/minor_gc.c4
-rw-r--r--byterun/minor_gc.h2
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;