Update of /project/movitz/cvsroot/movitz/losp/muerte In directory common-lisp.net:/tmp/cvs-serv22259
Modified Files: basic-macros.lisp Log Message: Two fixes: Changed some uses of "unspecified type error" to not-a-list-type-error, and the rather nasty bug in the compiler-macros for funcall%3ops that didn't restore the stack-pointer after the call.
Date: Fri Jul 23 07:36:47 2004 Author: ffjeld
Index: movitz/losp/muerte/basic-macros.lisp diff -u movitz/losp/muerte/basic-macros.lisp:1.32 movitz/losp/muerte/basic-macros.lisp:1.33 --- movitz/losp/muerte/basic-macros.lisp:1.32 Wed Jul 21 18:00:47 2004 +++ movitz/losp/muerte/basic-macros.lisp Fri Jul 23 07:36:47 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.32 2004/07/22 01:00:47 ffjeld Exp $ +;;;; $Id: basic-macros.lisp,v 1.33 2004/07/23 14:36:47 ffjeld Exp $ ;;;; ;;;;------------------------------------------------------------------
@@ -608,13 +608,15 @@ (:compile-form (:result-mode :eax) ,cell) (:leal (:eax -1) :ecx) (:testb 7 :cl) - (:jnz '(:sub-program () (:int 66))) + (:jnz '(:sub-program () (:int 61))) (:movl :edi (:eax -1))) `(with-inline-assembly (:returns :eax) (:compile-two-forms (:eax :ebx) ,value ,cell) (:leal (:ebx -1) :ecx) (:testb 7 :cl) - (:jnz '(:sub-program () (:int 66))) + (:jnz '(:sub-program () + (:movl :ebx :eax) + (:int 61))) (:movl :eax (:ebx -1)))))
(define-compiler-macro (setf cdr) (value cell &environment env) @@ -624,13 +626,15 @@ (:compile-form (:result-mode :eax) ,cell) (:leal (:eax -1) :ecx) (:testb 7 :cl) - (:jnz '(:sub-program () (:int 66))) + (:jnz '(:sub-program () (:int 61))) (:movl :edi (:eax 3))) `(with-inline-assembly (:returns :eax) (:compile-two-forms (:eax :ebx) ,value ,cell) (:leal (:ebx -1) :ecx) (:testb 7 :cl) - (:jnz '(:sub-program () (:int 66))) + (:jnz '(:sub-program () + (:movl :ebx :eax) + (:int 61))) (:movl :eax (:ebx 3)))))
(define-compiler-macro rplaca (cons object) @@ -638,7 +642,7 @@ (:compile-two-forms (:eax :ebx) ,cons ,object) (:leal (:eax -1) :ecx) (:testb 7 :cl) - (:jnz '(:sub-program () (:int 66))) + (:jnz '(:sub-program () (:int 61))) (:movl :ebx (:eax -1))))
(define-compiler-macro rplacd (cons object) @@ -646,7 +650,7 @@ (:compile-two-forms (:eax :ebx) ,cons ,object) (:leal (:eax -1) :ecx) (:testb 7 :cl) - (:jnz '(:sub-program () (:int 66))) + (:jnz '(:sub-program () (:int 61))) (:movl :ebx (:eax 3))))
(define-compiler-macro endp (x) @@ -795,7 +799,8 @@ (:jne 'not-funobj) (:movl :edx :esi) funobj-ok - (:call (:esi ,(bt:slot-offset 'movitz::movitz-funobj 'movitz::code-vector%3op)))))))) + (:call (:esi ,(bt:slot-offset 'movitz::movitz-funobj 'movitz::code-vector%3op))) + (:leal (:esp 4) :esp))))))
(define-compiler-macro funcall%unsafe%1ops (function arg0) `(with-inline-assembly (:returns :multiple-values) @@ -813,14 +818,9 @@ `(let ((fn ,function)) (with-inline-assembly (:returns :multiple-values) (:compile-arglist () ,arg0 ,arg1 ,arg2) -;;; (:compile-form (:result-mode :push) ,function) -;;; (:compile-form (:result-mode :push) ,arg0) -;;; (:compile-two-forms (:ebx :ecx) ,arg1 ,arg2) -;;; (:popl :eax) -;;; (:popl :esi) -;;; (:pushl :ecx) (:compile-form (:result-mode :esi) fn) - (:call (:esi ,(bt:slot-offset 'movitz::movitz-funobj 'movitz::code-vector%3op)))))) + (:call (:esi ,(bt:slot-offset 'movitz::movitz-funobj 'movitz::code-vector%3op))) + (:leal (:esp 4) :esp))))
(define-compiler-macro funcall%unsafe (function &rest args) (case (length args)