update tiny/lisp.c for 64-bit
This commit is contained in:
parent
2bc8ab38fd
commit
71a1cb6f09
|
@ -26,8 +26,13 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#ifdef __LP64__
|
||||||
|
typedef u_int64_t value_t;
|
||||||
|
typedef int64_t number_t;
|
||||||
|
#else
|
||||||
typedef u_int32_t value_t;
|
typedef u_int32_t value_t;
|
||||||
typedef int32_t number_t;
|
typedef int32_t number_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
value_t car;
|
value_t car;
|
||||||
|
@ -496,7 +501,7 @@ void print(FILE *f, value_t v)
|
||||||
value_t cd;
|
value_t cd;
|
||||||
|
|
||||||
switch (tag(v)) {
|
switch (tag(v)) {
|
||||||
case TAG_NUM: fprintf(f, "%d", numval(v)); break;
|
case TAG_NUM: fprintf(f, "%ld", numval(v)); break;
|
||||||
case TAG_SYM: fprintf(f, "%s", ((symbol_t*)ptr(v))->name); break;
|
case TAG_SYM: fprintf(f, "%s", ((symbol_t*)ptr(v))->name); break;
|
||||||
case TAG_BUILTIN: fprintf(f, "#<builtin %s>",
|
case TAG_BUILTIN: fprintf(f, "#<builtin %s>",
|
||||||
builtin_names[intval(v)]); break;
|
builtin_names[intval(v)]); break;
|
||||||
|
@ -558,7 +563,7 @@ value_t eval_sexpr(value_t e, value_t *penv)
|
||||||
lerror("eval: error: variable %s has no value\n", sym->name);
|
lerror("eval: error: variable %s has no value\n", sym->name);
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
if ((unsigned)(char*)&nargs < (unsigned)stack_bottom || SP>=(N_STACK-100))
|
if ((unsigned long)(char*)&nargs < (unsigned long)stack_bottom || SP>=(N_STACK-100))
|
||||||
lerror("eval: error: stack overflow\n");
|
lerror("eval: error: stack overflow\n");
|
||||||
saveSP = SP;
|
saveSP = SP;
|
||||||
PUSH(e);
|
PUSH(e);
|
||||||
|
|
Loading…
Reference in New Issue