/*
-Copyright (C) 2017 Keziah Wesley
+Copyright (C) 2017-2018 Keziah Wesley
You can redistribute and/or modify this file under the terms of the
GNU Affero General Public License as published by the Free Software
#include <unistd.h>
// TODO: put these in interpreter-wide ctx object
-char *pool;
+pool_object *pool;
+pool_ptr ptop;
char *vhp_base;
char *vhp;
main ()
{
// The REST pool (in low mem).
- char *pool_base =
+ pool =
mmap (0, POOL_OBJCT * sizeof (object), PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0);
- pool = pool_base;
+ ptop = 1; // 0 is null
// The CONTROL STACKs (TODO: per-PROCESS).
object *cst_base =
while ((n = read (STDIN_FILENO, buf, sizeof (buf))) > 0)
{
// mock GC (no object persistence)
- pool = pool_base;
+ ptop = 1;
vhp = vhp_base;
// terminate input
assert (buf[n - 1] == '\n');
}
assert (p);
if (!st.framelen)
- continue;
+ continue;
assert (st.framelen == 1);
- /*
// Eval the thing
+ cf->prevcst = cst;
push_frame (eval, new_tuple (st.pos, 1), 0);
while (cf->cont.fn)
{
}
// Print the thing
print_object (&ret);
- */
- // debugging: print without eval
- print_object (st.pos);
printf ("\n");
// Loop!
}
munmap (cst_base, STACK_OBJCT * sizeof (object));
munmap (vhp_base, VECTOR_OBJCT * sizeof (object));
- munmap (pool_base, POOL_OBJCT * sizeof (object));
+ munmap (pool, POOL_OBJCT * sizeof (object));
return 0;
}