X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Finterr.lisp;h=3e8f95f4f2e93e775d7d1568123391624345a407;hb=492dce07cf27b3cbee8ce4800c938fcb884aa53e;hp=e00663d5006aa6dc2291addb4ca8e01f95943ba4;hpb=a0238f83af553a3ff662824fc73aca3ba01112f6;p=sbcl.git diff --git a/src/code/interr.lisp b/src/code/interr.lisp index e00663d..3e8f95f 100644 --- a/src/code/interr.lisp +++ b/src/code/interr.lisp @@ -393,6 +393,23 @@ (/show0 "trapped DEBUG-CONDITION") (values "" nil))))) + +(defun find-caller-of-named-frame (name) + (unless *finding-name* + (handler-case + (let ((*finding-name* t)) + (do ((frame (sb!di:top-frame) (sb!di:frame-down frame))) + ((null frame)) + (when (and (sb!di::compiled-frame-p frame) + (eq name (sb!di:debug-fun-name + (sb!di:frame-debug-fun frame)))) + (let ((caller (sb!di:frame-down frame))) + (sb!di:flush-frames-above caller) + (return caller))))) + ((or error sb!di:debug-condition) () + nil) + (sb!di:debug-condition () + nil)))) ;;;; INTERNAL-ERROR signal handler @@ -496,7 +513,7 @@ (error 'undefined-alien-function-error)) #!-win32 -(define-alien-variable current-memory-fault-address unsigned-long) +(define-alien-variable current-memory-fault-address unsigned) #!-win32 (defun memory-fault-error ()