From a1ad5d6a30cf72d9b7e7bb449985dc69d5e01c4b Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Wed, 29 Mar 2017 18:05:33 +0200 Subject: [PATCH] gpgscm: Make tags mandatory. * tests/gpgscm/opdefines.h: Make tags mandatory. * tests/gpgscm/scheme.c: Likewise. * tests/gpgscm/scheme.h: Likewise. -- Tags provide a constant-time lookup mechanism for almost every object. This is useful for the interpreter itself, and the code for tags is tiny. Signed-off-by: Justus Winter --- tests/gpgscm/opdefines.h | 2 -- tests/gpgscm/scheme.c | 16 ++-------------- tests/gpgscm/scheme.h | 6 ------ 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/tests/gpgscm/opdefines.h b/tests/gpgscm/opdefines.h index dd32d1e71..61f797138 100644 --- a/tests/gpgscm/opdefines.h +++ b/tests/gpgscm/opdefines.h @@ -154,11 +154,9 @@ _OP_DEF("append", 0, INF_ARG, TST_NONE, _OP_DEF("set-symbol-property!", 3, 3, TST_SYMBOL TST_SYMBOL TST_ANY, OP_SET_SYMBOL_PROPERTY ) _OP_DEF("symbol-property", 2, 2, TST_SYMBOL TST_SYMBOL, OP_SYMBOL_PROPERTY ) #endif -#if USE_TAGS _OP_DEF(0, 0, 0, TST_NONE, OP_TAG_VALUE ) _OP_DEF("make-tagged-value", 2, 2, TST_ANY TST_PAIR, OP_MK_TAGGED ) _OP_DEF("get-tag", 1, 1, TST_ANY, OP_GET_TAG ) -#endif _OP_DEF("quit", 0, 1, TST_NUMBER, OP_QUIT ) _OP_DEF("gc", 0, 0, 0, OP_GC ) _OP_DEF("gc-verbose", 0, 1, TST_NONE, OP_GCVERB ) diff --git a/tests/gpgscm/scheme.c b/tests/gpgscm/scheme.c index f3a99fde9..fa089a065 100644 --- a/tests/gpgscm/scheme.c +++ b/tests/gpgscm/scheme.c @@ -671,8 +671,6 @@ copy_value(scheme *sc, pointer dst, pointer src) /* Tags are like property lists, but can be attached to arbitrary * values. */ -#if USE_TAGS - static pointer mk_tagged_value(scheme *sc, pointer v, pointer tag_car, pointer tag_cdr) { @@ -709,14 +707,6 @@ get_tag(scheme *sc, pointer v) return sc->NIL; } -#else - -#define mk_tagged_value(SC, X, A, B) (X) -#define has_tag(V) 0 -#define get_tag(SC, V) (SC)->NIL - -#endif - /* Low-level allocator. @@ -4718,7 +4708,6 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) { s_return(sc, get_property(sc, car(sc->args), cadr(sc->args))); #endif /* USE_PLIST */ -#if USE_TAGS CASE(OP_TAG_VALUE): { /* not exposed */ /* This tags sc->value with car(sc->args). Useful to tag * results of opcode evaluations. */ @@ -4738,7 +4727,6 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) { CASE(OP_GET_TAG): /* get-tag */ s_return(sc, get_tag(sc, car(sc->args))); -#endif /* USE_TAGS */ CASE(OP_QUIT): /* quit */ if(is_pair(sc->args)) { @@ -4927,12 +4915,12 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) { } else if (sc->tok == TOK_DOT) { Error_0(sc,"syntax error: illegal dot expression"); } else { -#if USE_TAGS && SHOW_ERROR_LINE +#if SHOW_ERROR_LINE pointer filename; pointer lineno; #endif sc->nesting_stack[sc->file_i]++; -#if USE_TAGS && SHOW_ERROR_LINE +#if SHOW_ERROR_LINE filename = sc->load_stack[sc->file_i].filename; lineno = sc->load_stack[sc->file_i].curr_line; diff --git a/tests/gpgscm/scheme.h b/tests/gpgscm/scheme.h index 8560f7d9d..d7481865d 100644 --- a/tests/gpgscm/scheme.h +++ b/tests/gpgscm/scheme.h @@ -44,7 +44,6 @@ extern "C" { # define USE_DL 0 # define USE_PLIST 0 # define USE_SMALL_INTEGERS 0 -# define USE_TAGS 0 # define USE_HISTORY 0 #endif @@ -78,11 +77,6 @@ extern "C" { # define USE_PLIST 0 #endif -/* If set, then every object can be tagged. */ -#ifndef USE_TAGS -# define USE_TAGS 1 -#endif - /* Keep a history of function calls. This enables a feature similar * to stack traces. */ #ifndef USE_HISTORY