From c3075a639606275807dcb3debcd5807e464916d7 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Sun, 20 Dec 2020 22:39:28 -0500 Subject: [PATCH] Added record_tag --- gc.c | 1 + include/cyclone/runtime.h | 6 ++++++ include/cyclone/types.h | 1 + runtime.c | 9 +++++++++ 4 files changed, 17 insertions(+) diff --git a/gc.c b/gc.c index 00fcfc0a..9aeb2931 100644 --- a/gc.c +++ b/gc.c @@ -967,6 +967,7 @@ char *gc_copy_obj(object dest, char *obj, gc_thread_data * thd) return (char *)forward(obj); case eof_tag: case void_tag: + case record_tag: case primitive_tag: case boolean_tag: case symbol_tag: diff --git a/include/cyclone/runtime.h b/include/cyclone/runtime.h index da68fcd0..e0b3c271 100644 --- a/include/cyclone/runtime.h +++ b/include/cyclone/runtime.h @@ -37,6 +37,12 @@ extern const object Cyc_EOF; */ extern const object Cyc_VOID; +/** + * The record marker value. + * \ingroup objects + */ +extern const object Cyc_RECORD_MARKER; + /** * \ingroup gc_minor */ diff --git a/include/cyclone/types.h b/include/cyclone/types.h index 540387e9..1c79dbf8 100644 --- a/include/cyclone/types.h +++ b/include/cyclone/types.h @@ -70,6 +70,7 @@ enum object_tag { , complex_num_tag = 21 , atomic_tag = 22 , void_tag = 23 + , record_tag = 24 }; /** diff --git a/runtime.c b/runtime.c index 55c64654..8e17ab44 100644 --- a/runtime.c +++ b/runtime.c @@ -50,6 +50,7 @@ const char *tag_names[] = { /*complex_num_tag*/ , "complex number" /*atomic_tag*/ , "atomic" /*void_tag*/ , "void" + /*record_tag*/ , "record" , "Reserved for future use" }; @@ -192,9 +193,11 @@ char **_cyc_argv = NULL; static symbol_type __EOF = { {0}, eof_tag, ""}; // symbol_type in lieu of custom type static symbol_type __VOID = { {0}, void_tag, ""}; // symbol_type in lieu of custom type +static symbol_type __RECORD = { {0}, record_tag, ""}; // symbol_type in lieu of custom type const object Cyc_EOF = &__EOF; const object Cyc_VOID = &__VOID; +const object Cyc_RECORD_MARKER = &__RECORD; static ck_hs_t lib_table; static ck_hs_t symbol_table; static int symbol_table_initial_size = 4096; @@ -1042,6 +1045,9 @@ object Cyc_display(void *data, object x, FILE * port) break; case void_tag: break; + case record_tag: + fprintf(port, ""); + break; case port_tag: fprintf(port, "", ((port_type *) x)->fp); break; @@ -5879,6 +5885,7 @@ static char *gc_move(char *obj, gc_thread_data * thd, int *alloci, int *heap_gro return (char *)forward(obj); case eof_tag: case void_tag: + case record_tag: break; case primitive_tag: break; @@ -6057,6 +6064,7 @@ int gc_minor(void *data, object low_limit, object high_limit, closure cont, // These types are not heap-allocated case eof_tag: case void_tag: + case record_tag: case primitive_tag: case symbol_tag: case boolean_tag: @@ -6124,6 +6132,7 @@ void Cyc_make_shared_object(void *data, object k, object obj) // closure0_tag = 3 // eof_tag = 9 // void_tag + // record_tag // macro_tag = 13 // primitive_tag = 17