Index: /branches/watchpoints/level-1/x86-trap-support.lisp
===================================================================
--- /branches/watchpoints/level-1/x86-trap-support.lisp	(revision 12880)
+++ /branches/watchpoints/level-1/x86-trap-support.lisp	(revision 12881)
@@ -435,9 +435,14 @@
 			 (setf (%get-ptr a) (%int-to-ptr i))
 			 (%get-object a 0))))
-		(%error (make-condition
-			 'write-to-watched-object
-			 :address addr
-			 :object (%int-to-object other))
-			nil frame-ptr)))))
+		(let ((object (%int-to-object other)))
+		  (restart-case (%error (make-condition
+					 'write-to-watched-object
+					 :address addr
+					 :object object)
+					nil frame-ptr)
+		  (unwatch ()
+		    :report (lambda (s)
+			      (format s "Unwatch ~s and perform the write." object))
+		    (unwatch (%int-to-object other)))))))))
           ((= signal #+win32-target 10 #-win32-target #$SIGBUS)
            (if (= code -1)
@@ -452,2 +457,9 @@
   0)
 
+#||
+(defun analyze-faulting-instruction (xp)
+  (let* ((ds (make-x86-disassembly-state
+              :mode-64 #+x8664-target t #+x8632-target nil))
+	 (insn (make-x86-disassembled-instruction
+		:address (indexed-gpr-integer xp rip-register-offset)
+||#
