0.8.6.28:
[sbcl.git] / src / runtime / backtrace.c
index a4cbc11..c4840cc 100644 (file)
@@ -26,8 +26,9 @@
 #endif
 #include "genesis/static-symbols.h"
 #include "genesis/primitive-objects.h"
+#include "thread.h"
 
-#ifndef __i386__
+#ifndef LISP_FEATURE_X86
 
 /* KLUDGE: Sigh ... I know what the call frame looks like and it had
  * better not change. */
@@ -78,7 +79,6 @@ code_pointer(lispobj object)
             break;
         case RETURN_PC_HEADER_WIDETAG:
         case SIMPLE_FUN_HEADER_WIDETAG:
-        case CLOSURE_FUN_HEADER_WIDETAG:
             len = HEADER_LENGTH(header);
             if (len == 0)
                 headerp = NULL;
@@ -95,7 +95,8 @@ code_pointer(lispobj object)
 static boolean
 cs_valid_pointer_p(struct call_frame *pointer)
 {
-    return (((char *) CONTROL_STACK_START <= (char *) pointer) &&
+    struct thread *thread=arch_os_get_current_thread();
+    return (((char *) thread->control_stack_start <= (char *) pointer) &&
            ((char *) pointer < (char *) current_control_stack_pointer));
 }
 
@@ -237,7 +238,7 @@ backtrace(int nframes)
                         symbol = (struct symbol *) object;
                         object = (lispobj *) native_pointer(symbol->name);
                     }
-                    if (widetag_of(*object) == SIMPLE_STRING_WIDETAG) {
+                    if (widetag_of(*object) == SIMPLE_BASE_STRING_WIDETAG) {
                         struct vector *string;
 
                         string = (struct vector *) object;
@@ -269,6 +270,8 @@ backtrace(int nframes)
 
 #else
 
+
+
 void
 backtrace(int nframes)
 {