[movitz-cvs] CVS update: movitz/losp/muerte/primitive-functions.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Tue Nov 23 16:09:00 UTC 2004


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv7425

Modified Files:
	primitive-functions.lisp 
Log Message:
New dynamic-variable protocol.

Date: Tue Nov 23 17:08:58 2004
Author: ffjeld

Index: movitz/losp/muerte/primitive-functions.lisp
diff -u movitz/losp/muerte/primitive-functions.lisp:1.54 movitz/losp/muerte/primitive-functions.lisp:1.55
--- movitz/losp/muerte/primitive-functions.lisp:1.54	Wed Nov 17 14:33:34 2004
+++ movitz/losp/muerte/primitive-functions.lisp	Tue Nov 23 17:08:58 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Oct  2 21:02:18 2001
 ;;;;                
-;;;; $Id: primitive-functions.lisp,v 1.54 2004/11/17 13:33:34 ffjeld Exp $
+;;;; $Id: primitive-functions.lisp,v 1.55 2004/11/23 16:08:58 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -162,53 +162,53 @@
     ;; Default binding strategy is naive deep binding, so this is a NOP.
     (:ret)))
     
-(define-primitive-function dynamic-variable-lookup (symbol)
-  "Load the dynamic value of SYMBOL into EAX."
-  (with-inline-assembly (:returns :multiple-values)
-    (:locally (:movl (:edi (:edi-offset dynamic-env)) :ecx))
-    (:jecxz 'no-stack-binding)
-    ;; Be defensive: Verify that ECX is within stack.
-    (:locally (:bound (:edi (:edi-offset stack-bottom)) :ecx))
-    (:cmpl :eax (:ecx))
-    (:je 'success)
-   search-loop
-    (:movl (:ecx 12) :ecx)		; parent
-    (:jecxz 'no-stack-binding)
-    ;; Be defensive: Verify that ECX is within stack.
-    (:locally (:bound (:edi (:edi-offset stack-bottom)) :ecx))
-    (:cmpl :eax (:ecx))			; compare name
-    (:jne 'search-loop)
-    ;; fall through on success
-   success
-    (:movl :eax :edx)			; Keep symbol in case it's unbound.
-    (:movl (:ecx 8) :eax)
-    (:globally (:cmpl (:edi (:edi-offset unbound-value)) :eax))
-    (:je '(:sub-program (unbound) (:int 99)))
-    (:ret)
-   no-stack-binding
-    ;; take the global value of SYMBOL, compare it against unbond-value
-    (:movl :eax :edx)			; Keep symbol in case it's unbound.
-    (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
-     :movl (:eax (:offset movitz-symbol value)) :eax)
-    (:globally (:cmpl (:edi (:edi-offset unbound-value)) :eax))
-    (:je '(:sub-program (unbound) (:int 99)))
-    (:ret)))
+;;;(define-primitive-function dynamic-variable-lookup (symbol)
+;;;  "Load the dynamic value of SYMBOL into EAX."
+;;;  (with-inline-assembly (:returns :multiple-values)
+;;;    (:locally (:movl (:edi (:edi-offset dynamic-env)) :ecx))
+;;;    (:jecxz 'no-stack-binding)
+;;;    ;; Be defensive: Verify that ECX is within stack.
+;;;    (:locally (:bound (:edi (:edi-offset stack-bottom)) :ecx))
+;;;    (:cmpl :eax (:ecx))
+;;;    (:je 'success)
+;;;   search-loop
+;;;    (:movl (:ecx 12) :ecx)		; parent
+;;;    (:jecxz 'no-stack-binding)
+;;;    ;; Be defensive: Verify that ECX is within stack.
+;;;    (:locally (:bound (:edi (:edi-offset stack-bottom)) :ecx))
+;;;    (:cmpl :eax (:ecx))			; compare name
+;;;    (:jne 'search-loop)
+;;;    ;; fall through on success
+;;;   success
+;;;    (:movl :eax :edx)			; Keep symbol in case it's unbound.
+;;;    (:movl (:ecx 8) :eax)
+;;;    (:globally (:cmpl (:edi (:edi-offset unbound-value)) :eax))
+;;;    (:je '(:sub-program (unbound) (:int 99)))
+;;;    (:ret)
+;;;   no-stack-binding
+;;;    ;; take the global value of SYMBOL, compare it against unbond-value
+;;;    (:movl :eax :edx)			; Keep symbol in case it's unbound.
+;;;    (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
+;;;     :movl (:eax (:offset movitz-symbol value)) :eax)
+;;;    (:globally (:cmpl (:edi (:edi-offset unbound-value)) :eax))
+;;;    (:je '(:sub-program (unbound) (:int 99)))
+;;;    (:ret)))
 
-(define-primitive-function dynamic-variable-lookup-unbound (symbol)
-  "Load the dynamic value of SYMBOL into EAX. If unbound, return unbound-value."
+(define-primitive-function dynamic-variable-lookup (symbol)
+  "Load the dynamic value of SYMBOL/EBX into EAX. If unbound, return unbound-value."
   (with-inline-assembly (:returns :multiple-values)
     (:locally (:movl (:edi (:edi-offset dynamic-env)) :ecx))
     (:jecxz 'no-stack-binding)
     ;; Be defensive: Verify that ECX is within stack.
     (:locally (:bound (:edi (:edi-offset stack-bottom)) :ecx))
-    (:cmpl :eax (:ecx))
+    (:cmpl :ebx (:ecx))
     (:je 'success)
    search-loop
     (:movl (:ecx 12) :ecx)		; parent
     (:jecxz 'no-stack-binding)
     ;; Be defensive: Verify that ECX is within stack.
     (:locally (:bound (:edi (:edi-offset stack-bottom)) :ecx))
-    (:cmpl :eax (:ecx))			; compare name
+    (:cmpl :ebx (:ecx))			; compare name
     (:jne 'search-loop)
     ;; fall through on success
    success
@@ -217,7 +217,7 @@
    no-stack-binding
     ;; take the global value of SYMBOL, compare it against unbond-value
     (#.movitz:*compiler-nonlocal-lispval-read-segment-prefix*
-     :movl (:eax (:offset movitz-symbol value)) :eax)
+     :movl (:ebx (:offset movitz-symbol value)) :eax)
     (:ret)))
 
 (define-primitive-function dynamic-variable-store (symbol value)





More information about the Movitz-cvs mailing list