#include "data/symbol.h"
#include "data/integer.h"
#include "data/list.h"
-#include "data/reference.h"
#include "data/closure.h"
#include "data/variable.h"
sbHash_sys_init();
sbSymbol_sys_init();
sbString_sys_init();
- sbRef_sys_init();
sbInteger_sys_init();
sbClosure_sys_init();
sbList_sys_init();
sbList_sys_deinit();
sbClosure_sys_deinit();
sbInteger_sys_deinit();
- sbRef_sys_deinit();
sbString_sys_deinit();
sbSymbol_sys_deinit();
sbHash_sys_deinit();
+++ /dev/null
-#include "data/reference.h"
-
-#include "gc/gcinfo.h"
-
-#define REFERENCES_PER_BLOCK 1024
-
-/* TODO eliminate globals */
-sbPool g_reference_pool = {0};
-
-typedef struct sbRef {
- GCINFO info;
- hVal pointed_to;
-} sbRef;
-
-static sbRef *find_ref_by_handle(hRef handle);
-
-void sbRef_sys_init() {
- sbPool_initialize(&g_reference_pool, sizeof(sbRef), REFERENCES_PER_BLOCK);
-}
-
-void sbRef_sys_deinit() {
- //sbPool_deinitialize(&g_reference_pool);
-}
-
-hRef sbRef_create(hVal *var) {
- usize index;
- sbRef *r = sbPool_alloc(&g_reference_pool, &index);
- sbV_retain(var);
- r->pointed_to = *var;
- return index;
-}
-
-void sbRef_set_ref(hRef ref, hVal *var) {
- sbRef *value = find_ref_by_handle(ref);
- sbV_release(&value->pointed_to);
- sbV_retain(var);
- value->pointed_to = *var;
-}
-
-hVal *sbRef_deref(hRef ref) {
- sbRef *value = find_ref_by_handle(ref);
- return &value->pointed_to;
-}
-
-/* --- */
-
-static sbRef *find_ref_by_handle(hRef handle) {
- return sbPool_get_entry(&g_reference_pool, handle);
-}
+++ /dev/null
-#include "common.h"
-
-void sbRef_sys_init();
-
-void sbRef_sys_deinit();
-
-hRef sbRef_create(hVal *var);
-
-void sbRef_set_ref(hRef ref, hVal *var);
-
-hVal *sbRef_deref(hRef ref);
#include "vm/operations.h"
#include "data/list.h"
-#include "data/reference.h"
#include "data/closure.h"
#include "lib/lib.h"
#include "lib/sentinel.h"