X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Faliencomp.lisp;fp=src%2Fcompiler%2Faliencomp.lisp;h=be718299bbaf842a56a7a9b208d8d10474d29ba8;hb=34f08eca171fca180a1d75c35c86816acf20a375;hp=56903ce688ca619946dffe0dde317c7b11385bd1;hpb=01f29363993816f6d5fb6139f356df84cfaa1fc6;p=sbcl.git diff --git a/src/compiler/aliencomp.lisp b/src/compiler/aliencomp.lisp index 56903ce..be71829 100644 --- a/src/compiler/aliencomp.lisp +++ b/src/compiler/aliencomp.lisp @@ -610,35 +610,6 @@ `(lambda (function ,@names) (alien-funcall (deref function) ,@names)))) -;;; 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)) -#!+:c-stack-is-control-stack -(defun invoke-with-saved-fp-and-pc (fn) - (declare #-sb-xc-host (muffle-conditions compiler-note) - (optimize (speed 3))) - (let* ((fp-and-pc (cons (%caller-frame) - (sap-int (%caller-pc))))) - (declare (truly-dynamic-extent fp-and-pc)) - (let ((*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 *saved-fp-and-pcs*)) - (funcall fn)))) - -(defun find-saved-fp-and-pc (fp) - (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) * * :node node :important t) (let ((type (lvar-type function))) (unless (alien-type-type-p type)