diff options
| author | 2024-07-10 10:47:55 -0400 | |
|---|---|---|
| committer | 2024-07-10 10:47:55 -0400 | |
| commit | b41e2100c214cc983889017009506a9d339b0341 (patch) | |
| tree | 7463758c0178984a71159b5a67785c467859ff36 /examples/lisp/uns_lisp_cheney_c89.c | |
| parent | fix clean (diff) | |
import flatrate lisp, rename to Universal Service LISP
Diffstat (limited to 'examples/lisp/uns_lisp_cheney_c89.c')
| -rw-r--r-- | examples/lisp/uns_lisp_cheney_c89.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/examples/lisp/uns_lisp_cheney_c89.c b/examples/lisp/uns_lisp_cheney_c89.c new file mode 100644 index 0000000..96b49a9 --- /dev/null +++ b/examples/lisp/uns_lisp_cheney_c89.c @@ -0,0 +1,60 @@ +/* Copyright (c) 2024, Peter McGoron + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1) Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2) Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <stdio.h> +#include <stdlib.h> +#include "uns.h" +#include "cheney_c89.h" + +static void after_gc(Uns_GC gc, struct uns_cheney_c89_statistics *stats) +{ + fprintf(stderr, + "cheney_c89 %ld: %lu -> %lu\n", + stats->collection_number, + stats->usage_before, + stats->usage_after + ); + + + if (stats->usage_after >= stats->usage_before * 7/10) { + uns_cheney_c89_set_new_heap_size(gc, + uns_cheney_c89_get_new_heap_size(gc) * 2); + } +} + + +Uns_GC uns_lisp_gc_init(void) +{ + Uns_GC gc = malloc(uns_gc_size); + if (!uns_cheney_c89_init(gc, 512)) { + fprintf(stderr, "Error initializing GC\n"); + exit(1); + } + + uns_cheney_c89_set_collect_callback(gc, after_gc); + uns_cheney_c89_set_new_heap_size(gc, 1024); + + return gc; +} |
