aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/vm/reference-table.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/include/vm/reference-table.h b/include/vm/reference-table.h
new file mode 100644
index 00000000..67d5fafe
--- /dev/null
+++ b/include/vm/reference-table.h
@@ -0,0 +1,23 @@
+#ifndef JATO_VM_REFERENCE_TABLE_H
+#define JATO_VM_REFERENCE_TABLE_H
+
+struct gc_reference_map {
+ /* top of the list */
+ vm_object** top;
+
+ /* bottom of the list */
+ vm_object** bottom;
+
+ /* no. of entries we can accomodate */
+ int left_entrie;
+
+ /* maximum no. of entries */
+ int max_entries;
+};
+
+int gc_init_reftable(struct gc_reference_map* ref_t, int init_count, int max_count);
+
+void gc_clear_reftable(struct gc_reference_table* ref_t);
+
+#define gc_reftable_entries(ref_t) ref_t->top - ref_t->bottom;
+#define is_gc_reftable_full(ref_t) gc_reftable_entries(ref_t) == (size_t)ref_t->left_entries;