[movitz-cvs] CVS movitz/losp/muerte
ffjeld
ffjeld at common-lisp.net
Thu Feb 22 21:03:10 UTC 2007
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory clnet:/tmp/cvs-serv13062
Modified Files:
basic-macros.lisp
Log Message:
Tweak check-type compiler-macro to support retry restart.
--- /project/movitz/cvsroot/movitz/losp/muerte/basic-macros.lisp 2007/02/20 23:11:22 1.68
+++ /project/movitz/cvsroot/movitz/losp/muerte/basic-macros.lisp 2007/02/22 21:03:10 1.69
@@ -9,7 +9,7 @@
;;;; Created at: Wed Nov 8 18:44:57 2000
;;;; Distribution: See the accompanying file COPYING.
;;;;
-;;;; $Id: basic-macros.lisp,v 1.68 2007/02/20 23:11:22 ffjeld Exp $
+;;;; $Id: basic-macros.lisp,v 1.69 2007/02/22 21:03:10 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -558,14 +558,16 @@
(t (if (member type '(standard-gf-instance function pointer atom
integer fixnum positive-fixnum cons symbol character null list
string vector simple-vector vector-u8 vector-u16))
- `(with-inline-assembly (:returns :nothing :labels (fail))
+ `(with-inline-assembly (:returns :nothing :labels (check-type-failed retry-check-type))
+ retry-check-type
(:compile-form (:result-mode (:boolean-branch-on-false . check-type-failed))
(typep ,place ',type))
- (() () '(:sub-program (check-type-failed) (:int 66))))
- #+ignore
- `(unless (typep ,place ',type)
- (with-inline-assembly (:returns :non-local-exit)
- (:int 66)))
+ (:jnever '(:sub-program (check-type-failed)
+ (:compile-form (:result-mode :edx) (quote ,type))
+ (:compile-form (:result-mode :ignore)
+ (setf ,place (with-inline-assembly (:returns :eax)
+ (:int 60))))
+ (:jmp 'retry-check-type))))
form))))
(defmacro assert (test-form &optional places datum-form &rest argument-forms)
More information about the Movitz-cvs
mailing list