X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fparse.c;h=1edfe1849a8e1430ceaacf07d901bc07bca6943b;hb=35ab27e7aab71c94aa6be12da15603c7fd87fca8;hp=a74b11f906edddb744119db60ab95e4e8d62634f;hpb=077b294463eb6819c0eba67bb8ce71ec66d61ba8;p=sbcl.git diff --git a/src/runtime/parse.c b/src/runtime/parse.c index a74b11f..1edfe18 100644 --- a/src/runtime/parse.c +++ b/src/runtime/parse.c @@ -12,10 +12,15 @@ */ #include +#include #include -#include #include "sbcl.h" +#if defined(LISP_FEATURE_WIN32) && defined(LISP_FEATURE_SB_THREAD) +#include "pthreads_win32.h" +#else +#include +#endif #include "runtime.h" #if defined(LISP_FEATURE_SB_LDB) @@ -31,6 +36,7 @@ #include "arch.h" #include "search.h" #include "thread.h" +#include "pseudo-atomic.h" #include "genesis/simple-fun.h" #include "genesis/fdefn.h" @@ -43,10 +49,10 @@ static void skip_ws(char **ptr) (*ptr)++; } -static boolean string_to_long(char *token, long *value) +static boolean string_to_long(char *token, uword_t *value) { int base, digit; - long num; + uword_t num; char *ptr; if (token == 0) @@ -190,11 +196,11 @@ char *token; } #endif -long parse_number(ptr) +uword_t parse_number(ptr) char **ptr; { char *token = parse_token(ptr); - long result; + uword_t result; if (token == NULL) { printf("expected a number\n"); @@ -227,7 +233,7 @@ char **ptr; result &= ~7; } else { - long value; + uword_t value; if (!string_to_long(token, &value)) { printf("invalid number: ``%s''\n", token); throw_to_monitor(); @@ -259,13 +265,14 @@ static boolean lookup_symbol(char *name, lispobj *result) } /* Search dynamic space. */ -#ifndef LISP_FEATURE_GENCGC +#if defined(LISP_FEATURE_GENCGC) + headerptr = (lispobj *)DYNAMIC_SPACE_START; + count = (lispobj *)get_alloc_pointer() - headerptr; +#else headerptr = (lispobj *)current_dynamic_space; count = dynamic_space_free_pointer - headerptr; -#else - headerptr = (lispobj *)DYNAMIC_SPACE_START; - count = ((lispobj *)SymbolValue(ALLOCATION_POINTER,0)) - headerptr; #endif + if (search_for_symbol(name, &headerptr, &count)) { *result = make_lispobj(headerptr, OTHER_POINTER_LOWTAG); return 1; @@ -309,9 +316,9 @@ char **ptr; { struct thread *thread=arch_os_get_current_thread(); char *token = parse_token(ptr); - long pointer; + uword_t pointer; lispobj result; - long value; + uword_t value; if (token == NULL) { printf("expected an object\n");