[movitz-cvs] CVS update: movitz/losp/muerte/basic-macros.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Fri Nov 19 23:07:56 UTC 2004
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv26502
Modified Files:
basic-macros.lisp
Log Message:
Compiler-macro eql => eql%b.
Date: Sat Nov 20 00:07:50 2004
Author: ffjeld
Index: movitz/losp/muerte/basic-macros.lisp
diff -u movitz/losp/muerte/basic-macros.lisp:1.48 movitz/losp/muerte/basic-macros.lisp:1.49
--- movitz/losp/muerte/basic-macros.lisp:1.48 Fri Nov 19 00:49:13 2004
+++ movitz/losp/muerte/basic-macros.lisp Sat Nov 20 00:07:49 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.48 2004/11/18 23:49:13 ffjeld Exp $
+;;;; $Id: basic-macros.lisp,v 1.49 2004/11/19 23:07:49 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -446,50 +446,12 @@
(:compile-two-forms (:eax :ebx) ,x ,y)
(:cmpl :eax :ebx)))))
-#+ignore
-(define-compiler-macro eql (&whole form x y &environment env)
+(define-compiler-macro eql (x y)
`(let ((x ,x) (y ,y))
- (with-inline-assembly (:returns :boolean-zf=1)
- (:eql (:lexical-binding x) (:lexical-binding y)))))
-
-(define-compiler-macro eql (&whole form x y &environment env)
- (cond
- ((and (movitz:movitz-constantp x env)
- (movitz:movitz-constantp y env))
- (eql (movitz:movitz-eval x env)
- (movitz:movitz-eval y env)))
- ((movitz:movitz-constantp y env)
- `(eql ,y ,x))
- ((and (movitz:movitz-constantp x env)
- (not (typep (movitz:movitz-eval x env)
- '(and number (not fixnum)))))
- `(eq ',(movitz:movitz-eval x env) ,y))
- (t `(with-inline-assembly (:returns :boolean-zf=1 :labels (eql-done))
- (:compile-two-forms (:eax :ebx) ,x ,y)
- (:cmpl :eax :ebx)
- (:je 'eql-done)
- (:globally (:movl (:edi (:edi-offset complicated-eql)) :esi))
- (:call (:esi (:offset movitz-funobj code-vector%2op)))
- eql-done))))
+ (eql%b x y)))
(define-compiler-macro values (&rest sub-forms)
`(inline-values , at sub-forms))
-
-#+ignore
-(define-compiler-macro values (&whole form &rest sub-forms)
- (case (length sub-forms)
- (0 `(with-inline-assembly (:returns :multiple-values :side-effects nil :type (values))
- (:movl :edi :eax)
- (:xorl :ecx :ecx)
- (:stc)))
- (1 `(with-inline-assembly (:returns :eax :side-effects nil :type (values t))
- (:compile-form (:result-mode :eax) ,(first sub-forms))))
- (2 `(with-inline-assembly (:returns :multiple-values :side-effects nil :type (values t t))
- (:compile-two-forms (:eax :ebx) ,(first sub-forms) ,(second sub-forms))
- (:xorl :ecx :ecx)
- (:movb 2 :cl)
- (:stc)))
- (t form)))
(defmacro multiple-value-list (form)
`(multiple-value-call #'list ,form))
More information about the Movitz-cvs
mailing list