[movitz-cvs] CVS update: movitz/compiler-protocol.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Sat Aug 20 20:30:06 UTC 2005
Update of /project/movitz/cvsroot/movitz
In directory common-lisp.net:/tmp/cvs-serv26187
Modified Files:
compiler-protocol.lisp
Log Message:
Re-worked several aspects of binding/environments: assignment,
type-inference, etc.
Date: Sat Aug 20 22:30:04 2005
Author: ffjeld
Index: movitz/compiler-protocol.lisp
diff -u movitz/compiler-protocol.lisp:1.3 movitz/compiler-protocol.lisp:1.4
--- movitz/compiler-protocol.lisp:1.3 Thu Feb 12 18:51:02 2004
+++ movitz/compiler-protocol.lisp Sat Aug 20 22:30:03 2005
@@ -1,6 +1,6 @@
;;;;------------------------------------------------------------------
;;;;
-;;;; Copyright (C) 2001-2004,
+;;;; Copyright (C) 2001-2005,
;;;; Department of Computer Science, University of Tromso, Norway.
;;;;
;;;; For distribution policy, see the accompanying file COPYING.
@@ -10,7 +10,7 @@
;;;; Author: Frode Vatvedt Fjeld <frodef at acm.org>
;;;; Created at: Wed Oct 10 13:02:03 2001
;;;;
-;;;; $Id: compiler-protocol.lisp,v 1.3 2004/02/12 17:51:02 ffjeld Exp $
+;;;; $Id: compiler-protocol.lisp,v 1.4 2005/08/20 20:30:03 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -159,26 +159,29 @@
((&funobj funobj-var) (copy-symbol 'funobj) funobj-p)
((&env env-var) (copy-symbol 'env) env-p)
((&top-level-p top-level-p-var) (copy-symbol 'top-level-p) top-level-p-p)
- ((&result-mode result-mode-var) (copy-symbol 'result-mode) result-mode-p))
+ ((&result-mode result-mode-var) (copy-symbol 'result-mode) result-mode-p)
+ ((&extent extent-var) (copy-symbol 'extent) extent-p))
&body defun-body)
(multiple-value-bind (body docstring)
(if (and (cdr defun-body)
(stringp (car defun-body)))
(values (cdr defun-body) (list (car defun-body)))
(values defun-body nil))
- `(defun ,name (,form-var ,funobj-var ,env-var ,top-level-p-var ,result-mode-var)
+ `(defun ,name (,form-var ,funobj-var ,env-var ,top-level-p-var ,result-mode-var ,extent-var)
, at docstring
(declare (,(if all-p 'ignorable 'ignore)
,@(unless form-p (list form-var))
,@(unless funobj-p (list funobj-var))
,@(unless env-p (list env-var))
,@(unless top-level-p-p (list top-level-p-var))
- ,@(unless result-mode-p (list result-mode-var))))
+ ,@(unless result-mode-p (list result-mode-var))
+ ,@(unless extent-p (list extent-var))))
(macrolet ((default-compiler-values-producer () '',name)
,@(when all-p
`((,all-var (v) (ecase v (:form ',form-var) (:funobj ',funobj-var)
(:env ',env-var) (:top-level-p ',top-level-p-var)
- (:result-mode ',result-mode-var))))))
+ (:result-mode ',result-mode-var)
+ (:extent ',extent-var))))))
, at body))))
(defmacro compiler-call (compiler-name &rest all-keys
@@ -186,6 +189,7 @@
((:form form-var) nil form-p)
((:funobj funobj-var) nil funobj-p)
((:env env-var) nil env-p)
+ ((:extent extent-var) nil extent-p)
((:top-level-p top-level-p-var) nil top-level-p-p)
((:result-mode result-mode-var) :ignore result-mode-p))
(assert (not (and defaults forward)) ()
@@ -208,7 +212,8 @@
,(if funobj-p funobj-var `(,defaults :funobj))
inner-env
,(when top-level-p-p top-level-p-var) ; default to nil, no forwarding.
- ,(if result-mode-p result-mode-var `(,defaults :result-mode)))))
+ ,(if result-mode-p result-mode-var `(,defaults :result-mode))
+ ,(if extent-p extent-var `(,defaults :extent)))))
(forward
`(let* ((outer-env ,(if env-p env-var `(,forward :env)))
(inner-env ,(if (not with-stack-used)
@@ -222,15 +227,17 @@
,(if funobj-p funobj-var `(,forward :funobj))
inner-env
,(if top-level-p-p top-level-p-var `(,forward :top-level-p))
- ,(if result-mode-p result-mode-var `(,forward :result-mode)))))
+ ,(if result-mode-p result-mode-var `(,forward :result-mode))
+ ,(if extent-p extent-var `(,forward :extent)))))
((not with-stack-used)
- `(funcall ,compiler-name ,form-var ,funobj-var ,env-var ,top-level-p-var ,result-mode-var))
+ `(funcall ,compiler-name ,form-var ,funobj-var ,env-var
+ ,top-level-p-var ,result-mode-var ,extent-var))
(t (assert env-p () ":env is required when with-stack-used is given.")
`(funcall ,compiler-name ,form-var ,funobj-var
(make-instance 'with-things-on-stack-env
:uplink ,env-var :stack-used ,with-stack-used
:funobj (movitz-environment-funobj ,env-var))
- ,top-level-p-var ,result-mode-var))))
+ ,top-level-p-var ,result-mode-var ,extent-var))))
(defmacro define-special-operator (name formals &body body)
(let* ((movitz-name (intern (symbol-name (translate-program name :cl :muerte.cl))
More information about the Movitz-cvs
mailing list