[movitz-cvs] CVS update: movitz/losp/los0-gc.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Fri Jun 4 13:35:31 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp
In directory common-lisp.net:/tmp/cvs-serv14164
Modified Files:
los0-gc.lisp
Log Message:
Improving atomically stuff.
Date: Fri Jun 4 06:35:31 2004
Author: ffjeld
Index: movitz/losp/los0-gc.lisp
diff -u movitz/losp/los0-gc.lisp:1.15 movitz/losp/los0-gc.lisp:1.16
--- movitz/losp/los0-gc.lisp:1.15 Wed Jun 2 03:39:54 2004
+++ movitz/losp/los0-gc.lisp Fri Jun 4 06:35:31 2004
@@ -10,7 +10,7 @@
;;;; Author: Frode Vatvedt Fjeld <frodef at acm.org>
;;;; Created at: Sat Feb 21 17:48:32 2004
;;;;
-;;;; $Id: los0-gc.lisp,v 1.15 2004/06/02 10:39:54 ffjeld Exp $
+;;;; $Id: los0-gc.lisp,v 1.16 2004/06/04 13:35:31 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -54,6 +54,13 @@
(defun space-cons-pointer ()
(aref (%run-time-context-slot 'nursery-space) 0))
+(define-primitive-function los0-cons-pointer ()
+ ""
+ (with-inline-assembly (:returns :multiple-values)
+ (:locally (:movl (:edi (:edi-offset nursery-space)) :eax))
+ (:movl (:edx 2) :ecx)))
+
+
(define-primitive-function los0-fast-cons ()
"Allocate a cons cell from nursery-space."
(macrolet
@@ -84,6 +91,7 @@
(:ret))))
(do-it)))
+
(define-primitive-function los0-box-u32-ecx ()
"Make u32 in ECX into a fixnum or bignum."
(macrolet
@@ -95,7 +103,7 @@
(:ret)
not-fixnum
retry-cons
- (:locally (:movl ,(movitz::atomically-status-simple-pf 'fast-cons t)
+ (:locally (:movl ,(movitz::atomically-status-simple-pf 'box-u32-ecx t)
(:edi (:edi-offset atomically-status))))
(:locally (:movl (:edi (:edi-offset nursery-space)) :edx))
(:movl (:edx 2) :eax)
@@ -125,7 +133,7 @@
retry
(:compile-form (:result-mode :ebx) clumps)
(:declare-label-set retry-jumper (retry))
- (:locally (:movl '(:funcall ,(movitz::atomically-status-jumper-fn t)
+ (:locally (:movl '(:funcall ,(movitz::atomically-status-jumper-fn t :esp)
'retry-jumper)
(:edi (:edi-offset atomically-status))))
(:locally (:movl (:edi (:edi-offset nursery-space)) :edx))
@@ -133,11 +141,7 @@
(:leal ((:ebx 2) :ecx) :eax)
(:cmpl #x3fff4 :eax)
(:jge '(:sub-program ()
- (:locally (:movl ,(bt:enum-value 'movitz::atomically-status :inactive)
- (:edi (:edi-offset atomically-status))))
- (:compile-form (:result-mode :ignore)
- (stop-and-copy))
- (:jmp 'retry)))
+ (:int 113)))
(:movl :eax (:edx 2))
(:locally (:movl ,(bt:enum-value 'movitz::atomically-status :inactive)
(:edi (:edi-offset atomically-status))))
@@ -168,11 +172,7 @@
(:leal ((:ebx 2) :ecx) :eax)
(:cmpl #x3fff4 :eax)
(:jge '(:sub-program ()
- (:locally (:movl ,(bt:enum-value 'movitz::atomically-status :inactive)
- (:edi (:edi-offset atomically-status))))
- (:compile-form (:result-mode :ignore)
- (stop-and-copy))
- (:jmp 'retry)))
+ (:int 113)))
(:movl :eax (:edx 2))
(:locally (:movl ,(bt:enum-value 'movitz::atomically-status :inactive)
(:edi (:edi-offset atomically-status))))
@@ -180,11 +180,6 @@
(:movl #.(movitz:tag :infant-object) (:edx :ecx 6))
(:leal (:edx :ecx 8) :eax))))
(do-it)))
-
-(defun los0-handle-out-of-memory (exception interrupt-frame)
- (declare (ignore exception interrupt-frame))
- (format t "~&;; Handling out-of-memory exception..")
- (stop-and-copy))
(defun install-los0-consing ()
(setf (%run-time-context-slot 'nursery-space)
More information about the Movitz-cvs
mailing list