[movitz-cvs] CVS update: movitz/losp/muerte/interrupt.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Nov 23 16:06:00 UTC 2004


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv7318

Modified Files:
	interrupt.lisp 
Log Message:
Recognize the INTO unbound-variable protocol.

Date: Tue Nov 23 17:05:59 2004
Author: ffjeld

Index: movitz/losp/muerte/interrupt.lisp
diff -u movitz/losp/muerte/interrupt.lisp:1.32 movitz/losp/muerte/interrupt.lisp:1.33
--- movitz/losp/muerte/interrupt.lisp:1.32	Fri Nov 19 21:16:15 2004
+++ movitz/losp/muerte/interrupt.lisp	Tue Nov 23 17:05:59 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Wed Apr  7 01:50:03 2004
 ;;;;                
-;;;; $Id: interrupt.lisp,v 1.32 2004/11/19 20:16:15 ffjeld Exp $
+;;;; $Id: interrupt.lisp,v 1.33 2004/11/23 16:05:59 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -286,7 +286,15 @@
 	(case vector
 	  (0 (error 'division-by-zero))
 	  (3 (break "Break instruction at ~@Z." $eip))
-	  (4 (error "Primitive overflow assertion failed."))
+	  (4 (warn "into ~@Z" $eax)
+	     (if (not (eq (load-global-constant new-unbound-value)
+			  (dereference $eax)))
+		 (error "Primitive overflow assertion failed.")
+	       (let ((name (dereference $ebx)))
+		 (with-simple-restart (new-value "Set the value of ~S." name)
+		   (error 'unbound-variable :name name))
+		 (format *query-io* "~&Enter a value for ~S: " name)
+		 (setf (dereference $eax) (read *query-io*)))))
 	  (6 (error "Illegal instruction at ~@Z." $eip))
 	  (13  (error "General protection error. EIP=~@Z, error-code: #x~X, EAX: ~@Z, EBX: ~@Z, ECX: ~@Z"
 		     $eip
@@ -360,10 +368,6 @@
 	   (let ((name (dereference $edx)))
 	     (when (symbolp name)
 	       (error 'undefined-function :name name))))
-	  (99
-	   (let ((name (dereference $edx)))
-	     (when (symbolp name)
-	       (error 'unbound-variable :name name))))
 	  ((100);; 101 102 103 104 105)
 	   (let ((funobj (dereference (+ dit-frame (dit-frame-index :esi))))
 		 (code (dit-frame-ref nil dit-frame :ecx :unsigned-byte8)))





More information about the Movitz-cvs mailing list