aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2017-03-29 11:32:38 +0000
committerJustus Winter <[email protected]>2017-04-10 12:57:13 +0000
commit19a1be5ac3c9f3e26c453cf2ddc6d88af19e2d43 (patch)
tree6d17bc2ac41fe1c533c19a2375069177b5cdf89a
parentgpgscm: Allocate small integers in the rodata section. (diff)
downloadlibgpg-error-19a1be5ac3c9f3e26c453cf2ddc6d88af19e2d43.tar.gz
libgpg-error-19a1be5ac3c9f3e26c453cf2ddc6d88af19e2d43.zip
gpgscm: Merge 'opexe_1'.
* tests/gpgscm/scheme.c (opexe_1): Merge into 'opexe_0'. * tests/gpgscm/opdefines.h: Adapt. -- Having separate functions to execute opcodes reduces our ability to thread the code and prevents the dispatch_table from being moved to rodata. Signed-off-by: Justus Winter <[email protected]>
-rw-r--r--opdefines.h40
-rw-r--r--scheme.c11
2 files changed, 20 insertions, 31 deletions
diff --git a/opdefines.h b/opdefines.h
index 2d17720..affc788 100644
--- a/opdefines.h
+++ b/opdefines.h
@@ -38,26 +38,26 @@
_OP_DEF(opexe_0, 0, 0, 0, 0, OP_LET0AST )
_OP_DEF(opexe_0, 0, 0, 0, 0, OP_LET1AST )
_OP_DEF(opexe_0, 0, 0, 0, 0, OP_LET2AST )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_LET0REC )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_LET1REC )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_LET2REC )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_COND0 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_COND1 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_DELAY )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_AND0 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_AND1 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_OR0 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_OR1 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_C0STREAM )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_C1STREAM )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_MACRO0 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_MACRO1 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_CASE0 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_CASE1 )
- _OP_DEF(opexe_1, 0, 0, 0, 0, OP_CASE2 )
- _OP_DEF(opexe_1, "eval", 1, 2, TST_ANY TST_ENVIRONMENT, OP_PEVAL )
- _OP_DEF(opexe_1, "apply", 1, INF_ARG, TST_NONE, OP_PAPPLY )
- _OP_DEF(opexe_1, "call-with-current-continuation", 1, 1, TST_NONE, OP_CONTINUATION )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_LET0REC )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_LET1REC )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_LET2REC )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_COND0 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_COND1 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_DELAY )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_AND0 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_AND1 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_OR0 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_OR1 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_C0STREAM )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_C1STREAM )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_MACRO0 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_MACRO1 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_CASE0 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_CASE1 )
+ _OP_DEF(opexe_0, 0, 0, 0, 0, OP_CASE2 )
+ _OP_DEF(opexe_0, "eval", 1, 2, TST_ANY TST_ENVIRONMENT, OP_PEVAL )
+ _OP_DEF(opexe_0, "apply", 1, INF_ARG, TST_NONE, OP_PAPPLY )
+ _OP_DEF(opexe_0, "call-with-current-continuation", 1, 1, TST_NONE, OP_CONTINUATION )
#if USE_MATH
_OP_DEF(opexe_2, "inexact->exact", 1, 1, TST_NUMBER, OP_INEX2EX )
_OP_DEF(opexe_2, "exp", 1, 1, TST_NUMBER, OP_EXP )
diff --git a/scheme.c b/scheme.c
index e04394d..c3c88d0 100644
--- a/scheme.c
+++ b/scheme.c
@@ -438,7 +438,6 @@ static pointer reverse_in_place(scheme *sc, pointer term, pointer list);
static pointer revappend(scheme *sc, pointer a, pointer b);
static void dump_stack_mark(scheme *);
static pointer opexe_0(scheme *sc, enum scheme_opcodes op);
-static pointer opexe_1(scheme *sc, enum scheme_opcodes op);
static pointer opexe_2(scheme *sc, enum scheme_opcodes op);
static pointer opexe_3(scheme *sc, enum scheme_opcodes op);
static pointer opexe_4(scheme *sc, enum scheme_opcodes op);
@@ -3744,17 +3743,7 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) {
sc->args = sc->NIL;
s_thread_to(sc,OP_BEGIN);
}
- default:
- snprintf(sc->strbuff,STRBUFFSIZE,"%d: illegal operator", sc->op);
- Error_0(sc,sc->strbuff);
- }
- return sc->T;
-}
-
-static pointer opexe_1(scheme *sc, enum scheme_opcodes op) {
- pointer x, y;
- switch (op) {
CASE(OP_LET0REC): /* letrec */
new_frame_in_env(sc, sc->envir);
sc->args = sc->NIL;