From 70c6facc145eaf5ca368528b04df63f730746b1f Mon Sep 17 00:00:00 2001 From: Gabor Melis Date: Tue, 21 Oct 2008 14:41:59 +0000 Subject: [PATCH] 1.0.21.34: fix build on x86/x86-64 lutex platforms --- src/code/target-thread.lisp | 1 - src/compiler/aliencomp.lisp | 24 ++++++++++++++---------- version.lisp-expr | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/code/target-thread.lisp b/src/code/target-thread.lisp index bb7dbec..c534ca0 100644 --- a/src/code/target-thread.lisp +++ b/src/code/target-thread.lisp @@ -731,7 +731,6 @@ around and can be retrieved by JOIN-THREAD." (*restart-clusters* nil) (*handler-clusters* (sb!kernel::initial-handler-clusters)) (*condition-restarts* nil) - (sb!c::*saved-fp-and-pcs* ()) (sb!impl::*deadline* nil) (sb!impl::*step-out* nil) ;; internal printer variables diff --git a/src/compiler/aliencomp.lisp b/src/compiler/aliencomp.lisp index 75dcf1b..3635cb4 100644 --- a/src/compiler/aliencomp.lisp +++ b/src/compiler/aliencomp.lisp @@ -613,8 +613,9 @@ `(lambda (function ,@names) (alien-funcall (deref function) ,@names)))) -;;; A per-thread list of frame pointer, program counter conses. -(defvar *saved-fp-and-pcs* ()) +;;; Frame pointer, program counter conses. In each thread it's bound +;;; locally or not bound at all. +(defvar *saved-fp-and-pcs*) #!+:c-stack-is-control-stack (declaim (inline invoke-with-saved-fp-and-pc)) @@ -623,18 +624,21 @@ (let* ((fp-and-pc (multiple-value-bind (fp pc) (%caller-frame-and-pc) (cons fp pc))) - (*saved-fp-and-pcs* (cons fp-and-pc *saved-fp-and-pcs*))) + (*saved-fp-and-pcs* (if (boundp '*saved-fp-and-pcs*) + (cons fp-and-pc *saved-fp-and-pcs*) + (list fp-and-pc)))) (declare (truly-dynamic-extent fp-and-pc *saved-fp-and-pcs*)) (funcall fn))) (defun find-saved-fp-and-pc (fp) - (dolist (x *saved-fp-and-pcs*) - (when (#!+:stack-grows-downward-not-upward - sap> - #!-:stack-grows-downward-not-upward - sap< - (int-sap (get-lisp-obj-address (car x))) fp) - (return (values (car x) (cdr x)))))) + (when (boundp '*saved-fp-and-pcs*) + (dolist (x *saved-fp-and-pcs*) + (when (#!+:stack-grows-downward-not-upward + sap> + #!-:stack-grows-downward-not-upward + sap< + (int-sap (get-lisp-obj-address (car x))) fp) + (return (values (car x) (cdr x))))))) (deftransform alien-funcall ((function &rest args) * * :important t) (let ((type (lvar-type function))) diff --git a/version.lisp-expr b/version.lisp-expr index dd190d7..c294b05 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.21.33" +"1.0.21.34" -- 1.7.10.4