From 66bd059eeeeb2935353a860446e8040f53f8329a Mon Sep 17 00:00:00 2001 From: wlott <wlott> Date: Mon, 12 Mar 1990 22:39:11 +0000 Subject: [PATCH] Made the undefined function signal a continuable error. --- assembly/mips/assem-rtns.lisp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/assembly/mips/assem-rtns.lisp b/assembly/mips/assem-rtns.lisp index a42949070..61251e8a0 100644 --- a/assembly/mips/assem-rtns.lisp +++ b/assembly/mips/assem-rtns.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/assem-rtns.lisp,v 1.1 1990/03/05 21:13:52 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/assembly/mips/assem-rtns.lisp,v 1.2 1990/03/12 22:39:11 wlott Exp $ ;;; ;;; (in-package "C") @@ -21,15 +21,34 @@ ;;; there is no real function to call. (define-assembly-routine (undefined-function (:arg name :sc any-reg - :offset cname-offset)) + :offset cname-offset) + (:temp lexenv :sc any-reg + :offset lexenv-offset) + (:temp function :sc any-reg + :offset code-offset) + (:temp nargs :sc any-reg + :offset nargs-offset) + (:temp lip :sc interior-reg) + (:temp temp + :sc non-descriptor-reg)) ;; Allocate function header. (align vm:lowtag-bits) (inst word vm:function-header-type) (dotimes (i (1- vm:function-header-code-offset)) (nop)) ;; Cause the error. - (error-call di:undefined-symbol-error name)) + (cerror-call continue di:undefined-symbol-error name) + continue + + (let ((not-sym (generate-cerror-code 'undefined-function + di:object-not-symbol-error + cname))) + (test-simple-type cname name not-sym t vm:symbol-header-type)) + + (loadw lexenv cname vm:symbol-function-slot vm:other-pointer-type) + (loadw function lexenv vm:closure-function-slot vm:function-pointer-type) + (lisp-jump function lip)) ;;;; Non-local exit noise. -- GitLab