summaryrefslogtreecommitdiff
path: root/ocaml-binary-annot/byterun/minor_gc.h
diff options
context:
space:
mode:
Diffstat (limited to 'ocaml-binary-annot/byterun/minor_gc.h')
-rw-r--r--ocaml-binary-annot/byterun/minor_gc.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/ocaml-binary-annot/byterun/minor_gc.h b/ocaml-binary-annot/byterun/minor_gc.h
new file mode 100644
index 0000000000..8e834129bf
--- /dev/null
+++ b/ocaml-binary-annot/byterun/minor_gc.h
@@ -0,0 +1,58 @@
+/***********************************************************************/
+/* */
+/* Objective Caml */
+/* */
+/* Damien Doligez, projet Para, INRIA Rocquencourt */
+/* */
+/* Copyright 1996 Institut National de Recherche en Informatique et */
+/* en Automatique. All rights reserved. This file is distributed */
+/* under the terms of the GNU Library General Public License, with */
+/* the special exception on linking described in file ../LICENSE. */
+/* */
+/***********************************************************************/
+
+/* $Id$ */
+
+#ifndef CAML_MINOR_GC_H
+#define CAML_MINOR_GC_H
+
+
+#include "misc.h"
+
+CAMLextern char *caml_young_start, *caml_young_ptr;
+CAMLextern char *caml_young_end, *caml_young_limit;
+extern asize_t caml_minor_heap_size;
+extern int caml_in_minor_collection;
+
+struct caml_ref_table {
+ value **base;
+ value **end;
+ value **threshold;
+ value **ptr;
+ value **limit;
+ asize_t size;
+ asize_t reserve;
+};
+CAMLextern struct caml_ref_table caml_ref_table, caml_weak_ref_table;
+
+#define Is_young(val) \
+ (Assert (Is_block (val)), \
+ (addr)(val) < (addr)caml_young_end && (addr)(val) > (addr)caml_young_start)
+
+extern void caml_set_minor_heap_size (asize_t);
+extern void caml_empty_minor_heap (void);
+CAMLextern void caml_minor_collection (void);
+CAMLextern void garbage_collection (void); /* def in asmrun/signals.c */
+extern void caml_realloc_ref_table (struct caml_ref_table *);
+extern void caml_alloc_table (struct caml_ref_table *, asize_t, asize_t);
+extern void caml_oldify_one (value, value *);
+extern void caml_oldify_mopup (void);
+
+#define Oldify(p) do{ \
+ value __oldify__v__ = *p; \
+ if (Is_block (__oldify__v__) && Is_young (__oldify__v__)){ \
+ caml_oldify_one (__oldify__v__, (p)); \
+ } \
+ }while(0)
+
+#endif /* CAML_MINOR_GC_H */