mini-mes: Include and enable gc.
* scaffold/mini-mes.c: Set MES_GC=1. (ARENA_SIZE)[MES_GC]: Reduce to 10,000 cells (WAS: 1,000,000,000 chars). (g_news): New global. (NTYPE, NCAR, NVALUE, NLENGTH, NCDR, NVECTOR): New macros. (mes_symbols)[MES_GC]: Call gc_init_news. (mes_builtins): Include gc.i, gc.environment.i.
This commit is contained in:
parent
934260fc27
commit
773efafd8f
|
@ -26,8 +26,15 @@
|
|||
#define MES_MINI 1
|
||||
#define FIXED_PRIMITIVES 1
|
||||
|
||||
//int ARENA_SIZE = 4000000;
|
||||
#define MES_GC 1
|
||||
#if MES_GC
|
||||
int ARENA_SIZE = 100000;
|
||||
#else
|
||||
int ARENA_SIZE = 1000000000;
|
||||
#endif
|
||||
int MAX_ARENA_SIZE = 20000000;
|
||||
int GC_SAFETY = 5000;
|
||||
|
||||
char *arena = 0;
|
||||
|
||||
typedef int SCM;
|
||||
|
@ -61,13 +68,15 @@ struct function {
|
|||
char *name;
|
||||
};
|
||||
|
||||
//FIXME
|
||||
char *foobar = 0;
|
||||
|
||||
#if __GNUC__
|
||||
struct scm *g_cells = 0;
|
||||
//struct scm *g_news = 0;
|
||||
struct scm *g_news = 0;
|
||||
#else
|
||||
int *foobar = 0;
|
||||
struct scm *g_cells = foobar;
|
||||
//struct scm *g_news = foobar;
|
||||
struct scm *g_news = foobar;
|
||||
#endif
|
||||
|
||||
struct scm scm_nil = {TSPECIAL, "()",0};
|
||||
|
@ -158,6 +167,7 @@ SCM tmp_num2;
|
|||
struct function g_functions[200];
|
||||
int g_function = 0;
|
||||
|
||||
#include "gc.h"
|
||||
// #include "lib.h"
|
||||
// #include "math.h"
|
||||
#include "mini-mes.h"
|
||||
|
@ -182,6 +192,15 @@ int g_function = 0;
|
|||
#define VALUE(x) g_cells[x].cdr
|
||||
#define VECTOR(x) g_cells[x].cdr
|
||||
|
||||
#define NTYPE(x) g_news[x].type
|
||||
|
||||
#define NCAR(x) g_news[x].car
|
||||
#define NLENGTH(x) g_news[x].car
|
||||
|
||||
#define NCDR(x) g_news[x].cdr
|
||||
#define NVALUE(x) g_news[x].cdr
|
||||
#define NVECTOR(x) g_news[x].cdr
|
||||
|
||||
#define MAKE_CHAR(n) make_cell_ (tmp_num_ (TCHAR), 0, tmp_num2_ (n))
|
||||
#define MAKE_CONTINUATION(n) make_cell_ (tmp_num_ (TCONTINUATION), n, g_stack)
|
||||
#define MAKE_NUMBER(n) make_cell_ (tmp_num_ (TNUMBER), 0, tmp_num2_ (n))
|
||||
|
@ -635,9 +654,10 @@ SCM
|
|||
eval_apply ()
|
||||
{
|
||||
eval_apply:
|
||||
// if (g_free + GC_SAFETY > ARENA_SIZE)
|
||||
// gc_pop_frame (gc (gc_push_frame ()));
|
||||
|
||||
#if MES_GC
|
||||
if (g_free + GC_SAFETY > ARENA_SIZE)
|
||||
gc_pop_frame (gc (gc_push_frame ()));
|
||||
#endif
|
||||
switch (r3)
|
||||
{
|
||||
case cell_vm_evlis: goto evlis;
|
||||
|
@ -1506,7 +1526,9 @@ SCM
|
|||
mes_symbols () ///((internal))
|
||||
{
|
||||
gc_init_cells ();
|
||||
// gc_init_news ();
|
||||
#if MES_GC
|
||||
gc_init_news ();
|
||||
#endif
|
||||
|
||||
#include "mini-mes.symbols.i"
|
||||
|
||||
|
@ -1556,12 +1578,15 @@ mes_builtins (SCM a) ///((internal))
|
|||
{
|
||||
#include "mini-mes.i"
|
||||
|
||||
// Do not sort: Order of these includes define builtins
|
||||
// #include "lib.i"
|
||||
// #include "math.i"
|
||||
// #include "posix.i"
|
||||
// #include "reader.i"
|
||||
#include "vector.i"
|
||||
#include "gc.i"
|
||||
// #include "reader.i"
|
||||
|
||||
#include "gc.environment.i"
|
||||
// #include "lib.environment.i"
|
||||
// #include "math.environment.i"
|
||||
#include "mini-mes.environment.i"
|
||||
|
@ -1638,16 +1663,20 @@ bload_env (SCM a) ///((internal))
|
|||
// #include "lib.c"
|
||||
// #include "reader.c"
|
||||
#include "vector.c"
|
||||
// #include "gc.c"
|
||||
#include "gc.c"
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
eputs ("Hello mini-mes!\n");
|
||||
#if __GNUC__
|
||||
//g_debug = getenv ("MES_DEBUG");
|
||||
#if _POSIX_SOURCE
|
||||
g_debug = getenv ("MES_DEBUG");
|
||||
eputs ("g_debug=");
|
||||
eputs (itoa (g_debug));
|
||||
eputs ("\n");
|
||||
if (getenv ("MES_ARENA")) ARENA_SIZE = atoi (getenv ("MES_ARENA"));
|
||||
#endif
|
||||
//if (getenv ("MES_ARENA")) ARENA_SIZE = atoi (getenv ("MES_ARENA"));
|
||||
g_debug = 1;
|
||||
if (argc > 1 && !strcmp (argv[1], "--help")) return eputs ("Usage: mes [--dump|--load] < FILE");
|
||||
#if __GNUC__
|
||||
if (argc > 1 && !strcmp (argv[1], "--version")) {eputs ("Mes ");return eputs (VERSION);};
|
||||
|
|
Loading…
Reference in a new issue