mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-03 12:11:33 +01:00
gpgscm: Merge 'opexe_6'.
* tests/gpgscm/scheme.c (opexe_6): 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 <justus@g10code.com>
This commit is contained in:
parent
1379df4453
commit
ddf444828b
@ -196,11 +196,11 @@
|
||||
_OP_DEF(opexe_0, 0, 0, 0, 0, OP_P0LIST )
|
||||
_OP_DEF(opexe_0, 0, 0, 0, 0, OP_P1LIST )
|
||||
_OP_DEF(opexe_0, 0, 0, 0, 0, OP_PVECFROM )
|
||||
_OP_DEF(opexe_6, "length", 1, 1, TST_LIST, OP_LIST_LENGTH )
|
||||
_OP_DEF(opexe_6, "assq", 2, 2, TST_NONE, OP_ASSQ )
|
||||
_OP_DEF(opexe_6, "get-closure-code", 1, 1, TST_NONE, OP_GET_CLOSURE )
|
||||
_OP_DEF(opexe_6, "closure?", 1, 1, TST_NONE, OP_CLOSUREP )
|
||||
_OP_DEF(opexe_6, "macro?", 1, 1, TST_NONE, OP_MACROP )
|
||||
_OP_DEF(opexe_6, "*vm-history*", 0, 0, TST_NONE, OP_VM_HISTORY )
|
||||
_OP_DEF(opexe_0, "length", 1, 1, TST_LIST, OP_LIST_LENGTH )
|
||||
_OP_DEF(opexe_0, "assq", 2, 2, TST_NONE, OP_ASSQ )
|
||||
_OP_DEF(opexe_0, "get-closure-code", 1, 1, TST_NONE, OP_GET_CLOSURE )
|
||||
_OP_DEF(opexe_0, "closure?", 1, 1, TST_NONE, OP_CLOSUREP )
|
||||
_OP_DEF(opexe_0, "macro?", 1, 1, TST_NONE, OP_MACROP )
|
||||
_OP_DEF(opexe_0, "*vm-history*", 0, 0, TST_NONE, OP_VM_HISTORY )
|
||||
|
||||
#undef _OP_DEF
|
||||
|
@ -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_6(scheme *sc, enum scheme_opcodes op);
|
||||
static void Eval_Cycle(scheme *sc, enum scheme_opcodes op);
|
||||
static void assign_syntax(scheme *sc, char *name);
|
||||
static int syntaxnum(pointer p);
|
||||
@ -5158,27 +5157,14 @@ static pointer opexe_0(scheme *sc, enum scheme_opcodes op) {
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
snprintf(sc->strbuff,STRBUFFSIZE,"%d: illegal operator", sc->op);
|
||||
Error_0(sc,sc->strbuff);
|
||||
|
||||
}
|
||||
return sc->T;
|
||||
}
|
||||
|
||||
static pointer opexe_6(scheme *sc, enum scheme_opcodes op) {
|
||||
pointer x, y;
|
||||
long v;
|
||||
|
||||
switch (op) {
|
||||
CASE(OP_LIST_LENGTH): /* length */ /* a.k */
|
||||
v=list_length(sc,car(sc->args));
|
||||
if(v<0) {
|
||||
CASE(OP_LIST_LENGTH): { /* length */ /* a.k */
|
||||
long l = list_length(sc, car(sc->args));
|
||||
if(l<0) {
|
||||
Error_1(sc,"length: not a list:",car(sc->args));
|
||||
}
|
||||
gc_disable(sc, 1);
|
||||
s_return_enable_gc(sc, mk_integer(sc, v));
|
||||
|
||||
s_return_enable_gc(sc, mk_integer(sc, l));
|
||||
}
|
||||
CASE(OP_ASSQ): /* assq */ /* a.k */
|
||||
x = car(sc->args);
|
||||
for (y = cadr(sc->args); is_pair(y); y = cdr(y)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user