aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikhil <nikhil@MrSlave.(none)>2012-03-02 03:15:28 -0500
committerPekka Enberg <penberg@kernel.org>2012-03-02 14:25:17 +0200
commitc9229efc3902dd7994f0be70883881be35847ac6 (patch)
treea6368243e859953c8d4a07ef68813c60f63d086d
parent05625ee26fbfacb146b7fc94631f56bae58affcb (diff)
downloadjato-c9229efc3902dd7994f0be70883881be35847ac6.tar.gz
gc: Added a reference table.
Signed-off-by: Nikhil Sarda <nikhilsarda.iitkgp@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
-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;