[movitz-cvs] CVS movitz/losp/muerte

ffjeld ffjeld at common-lisp.net
Sat Mar 15 20:57:15 UTC 2008


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory clnet:/tmp/cvs-serv2859

Modified Files:
	basic-functions.lisp 
Log Message:
Have macros in the run-time.


--- /project/movitz/cvsroot/movitz/losp/muerte/basic-functions.lisp	2008/03/07 23:38:19	1.23
+++ /project/movitz/cvsroot/movitz/losp/muerte/basic-functions.lisp	2008/03/15 20:57:14	1.24
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Sep  4 18:41:57 2001
 ;;;;                
-;;;; $Id: basic-functions.lisp,v 1.23 2008/03/07 23:38:19 ffjeld Exp $
+;;;; $Id: basic-functions.lisp,v 1.24 2008/03/15 20:57:14 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -75,16 +75,22 @@
       (return list))
     (setf list (cdr list))))
 
-(defmacro numargs ()
-  `(with-inline-assembly (:returns :ecx)
-     (:movzxb :cl :ecx)
-     (:shll ,movitz::+movitz-fixnum-shift+ :ecx)))
-
-(defmacro call-function-from-lexical (lexical)
-  `(with-inline-assembly (:returns :multiple-values)
-     (:compile-form (:result-mode :esi) ,lexical)
-     (:xorb :cl :cl)
-     (:call (:esi ,(movitz::slot-offset 'movitz::movitz-funobj 'movitz::code-vector)))))
+(defun verify-macroexpand-call (key name)
+  "Used by macro-expander functions to separate bona fide macro-expansions
+from regular function-calls."
+  (when (eq key name)
+    (error 'undefined-function-call
+	   :name name
+	   :arguments :unknown)))
+
+(defun call-macroexpander (form env expander)
+  "Call a macro-expander for a bona fide macro-expansion."
+  (with-inline-assembly (:returns :multiple-values)
+    (:compile-form (:result-mode :edx) 'verify-macroexpand-call)
+    (:load-lexical (:lexical-binding expander) :esi)
+    (:load-lexical (:lexical-binding form) :eax)
+    (:load-lexical (:lexical-binding env) :ebx)
+    (:call (:esi (:offset movitz-funobj code-vector%2op)))))
 
 (defun funcall%0ops (function)
   (with-inline-assembly (:returns :multiple-values)




More information about the Movitz-cvs mailing list