0.9.0.37:
[sbcl.git] / src / runtime / parse.c
index bd5cc92..fd89930 100644 (file)
@@ -15,8 +15,8 @@
 #include <ctype.h>
 #include <signal.h>
 
-#include "runtime.h"
 #include "sbcl.h"
+#include "runtime.h"
 
 #if defined(LISP_FEATURE_SB_LDB)
 
 #include "monitor.h"
 #include "arch.h"
 #include "search.h"
+#include "thread.h"
+
+#include "genesis/simple-fun.h"
+#include "genesis/fdefn.h"
+#include "genesis/symbol.h"
+#include "genesis/static-symbols.h"
 
 static void skip_ws(char **ptr)
 {
@@ -243,26 +249,26 @@ static boolean lookup_symbol(char *name, lispobj *result)
     /* Search static space. */
     headerptr = (lispobj *)STATIC_SPACE_START;
     count =
-       (lispobj *)SymbolValue(STATIC_SPACE_FREE_POINTER) -
+       (lispobj *)SymbolValue(STATIC_SPACE_FREE_POINTER,0) -
        (lispobj *)STATIC_SPACE_START;
     if (search_for_symbol(name, &headerptr, &count)) {
-        *result = (lispobj)headerptr | OTHER_POINTER_LOWTAG;
+        *result = make_lispobj(headerptr,OTHER_POINTER_LOWTAG);
         return 1;
     }
 
     /* Search dynamic space. */
     headerptr = (lispobj *)DYNAMIC_SPACE_START;
-#if !defined(__i386__)
+#if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64))
     count =
        dynamic_space_free_pointer -
        (lispobj *)DYNAMIC_SPACE_START;
 #else
     count =
-       (lispobj *)SymbolValue(ALLOCATION_POINTER) -
+       (lispobj *)SymbolValue(ALLOCATION_POINTER,0) -
        (lispobj *)DYNAMIC_SPACE_START;
 #endif
     if (search_for_symbol(name, &headerptr, &count)) {
-        *result = (lispobj)headerptr | OTHER_POINTER_LOWTAG;
+        *result = make_lispobj(headerptr, OTHER_POINTER_LOWTAG);
         return 1;
     }
 
@@ -289,7 +295,7 @@ parse_regnum(char *s)
 
        for (i = 0; i < NREGS ; i++)
            if (strcasecmp(s + 1, lisp_register_names[i]) == 0)
-#ifdef __i386__
+#ifdef LISP_FEATURE_X86
                return i*2;
 #else
        return i;
@@ -302,6 +308,7 @@ parse_regnum(char *s)
 lispobj parse_lispobj(ptr)
 char **ptr;
 {
+    struct thread *thread=arch_os_get_current_thread();
     char *token = parse_token(ptr);
     long pointer;
     lispobj result;
@@ -315,14 +322,14 @@ char **ptr;
            int regnum;
            os_context_t *context;
 
-           free = SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX)>>2;
+           free = SymbolValue(FREE_INTERRUPT_CONTEXT_INDEX,thread)>>2;
 
            if (free == 0) {
                printf("Variable ``%s'' is not valid -- there is no current interrupt context.\n", token);
                throw_to_monitor();
            }
 
-           context = lisp_interrupt_contexts[free - 1];
+           context = thread->interrupt_contexts[free - 1];
 
            regnum = parse_regnum(token);
            if (regnum < 0) {