Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv23821
Modified Files:
basic-macros.lisp
Log Message:
This rather substantial check-in is a clean-up of all things related
to dynamic memory allocation. In particular, the separation between
the muerte kernel with its 'default' memory management (which simply
allocates objects consecutively until it runs out) and the los0 GC
implementation is improved.
Date: Thu Jul 15 14:06:46 2004
Author: ffjeld
Index: movitz/losp/muerte/basic-macros.lisp
diff -u movitz/losp/muerte/basic-macros.lisp:1.26 movitz/losp/muerte/basic-macros.lisp:1.27
--- movitz/losp/muerte/basic-macros.lisp:1.26 Sun Jul 11 16:04:14 2004
+++ movitz/losp/muerte/basic-macros.lisp Thu Jul 15 14:06:46 2004
@@ -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.26 2004/07/11 23:04:14 ffjeld Exp $
+;;;; $Id: basic-macros.lisp,v 1.27 2004/07/15 21:06:46 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -434,7 +434,7 @@
`(eq ',x ,y))
(t `(with-inline-assembly (:returns :boolean-zf=1)
(:compile-two-forms (:eax :ebx) ,x ,y)
- (:call-global-constant fast-eql)))))
+ (:call-global-pf fast-eql)))))
(define-compiler-macro values (&rest sub-forms)
`(inline-values ,@sub-forms))
@@ -523,23 +523,6 @@
:cl :muerte.cl)))))
',symbol))
-
-
-(defmacro inline-malloc (size &key (tag :other) other-tag wide-other-tag)
- (assert (not (and (not other-tag) wide-other-tag)))
- `(with-inline-assembly (:returns :eax :side-effects t)
- ,@(if (integerp size)
- `((:movl ,size :ebx))
- `((:compile-form (:result-mode :ebx) ,size)
- (:shrl ,movitz::+movitz-fixnum-shift+ :ebx)))
- (:globally (:call (:edi (:edi-offset malloc))))
- (:addl ,(if (integerp tag) tag (movitz::tag tag)) :eax)
- ,@(when (and (eq tag :other) other-tag (not wide-other-tag))
- `((:movb ,(movitz::tag other-tag) (:eax ,movitz:+other-type-offset+))))
- ,@(when (and (eq tag :other) other-tag wide-other-tag)
- `((:movw ,(dpb wide-other-tag (byte 8 8) (movitz:tag other-tag))
- (:eax ,movitz:+other-type-offset+))))))
-
(defmacro check-type (place type &optional type-string)
(if (not (stringp type-string))
`(let ((place-value ,place))
@@ -1051,7 +1034,7 @@
(:compile-form (:result-mode :eax) ,symbol)
(:cmpl :edi :eax)
(:je 'boundp-done) ; if ZF=0, then CF=0
- (:call-global-constant dynamic-find-binding)
+ (:call-local-pf dynamic-find-binding)
(:jc 'boundp-done)
(:movl (:eax #.(bt:slot-offset 'movitz:movitz-symbol 'movitz::value)) :eax)
(:globally (:cmpl (:edi (:edi-offset unbound-value)) :eax))