Update of /cvsroot/sbcl/sbcl/src/compiler/generic
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv7298/src/compiler/generic
126.96.36.199: runtime: Current stack and frame pointers are per-thread data.
* Add slots to the thread structure on threaded targets to hold
the control stack and frame pointers.
* Add some macros to thread.h to grab the correct variable or
slot on all builds, and use them everywhere required.
* Conditional-compile out the old global variables for this on
threaded targets (I probably messed this up).
RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/objdef.lisp,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -d -r1.69 -r1.70
--- objdef.lisp 7 Aug 2010 13:45:56 -0000 1.69
+++ objdef.lisp 7 Aug 2010 13:46:26 -0000 1.70
@@ -420,6 +420,14 @@
;; the runtime, but it's clearly a per-thread value.
(foreign-function-call-active :c-type "boolean")
+ ;; Same as above for the location of the current control stack frame.
+ #!+(and sb-thread (not (or x86 x86-64)))
+ (control-frame-pointer :c-type "lispobj *")
+ ;; Same as above for the location of the current control stack
+ ;; pointer. This is also used on threaded x86oids to allow LDB to
+ ;; print an approximation of the CSP as needed.
+ #!+(and sb-thread)
+ (control-stack-pointer :c-type "lispobj *")
;; KLUDGE: On alpha, until STEPPING we have been lucky and the 32
;; bit slots came in pairs. However the C compiler will align
;; interrupt_contexts on a double word boundary. This logic should