-;;; A per-thread list of frame pointer, program counter conses.
-(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)
- (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*)))
- (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))))))
-
-(deftransform alien-funcall ((function &rest args) * * :important t)