Greetings!  Here is an example of the stack allocation in the child
idea:

>(defvar *a* '( 1 2 3 4 5 6 7))

*A*

>(defun bar nil (si::p-let ((a (member 3 *a*)) (b (member 6 *a*))) (values a 
>b)))

BAR

>(compile 'bar)

;; Compiling ./gazonk11.lsp.
;; End of Pass 1.  
;; End of Pass 2.  
;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, 
(Debug quality ignored)
;; Finished compiling ./gazonk11.o.
Loading /fix/t1/camm/debian/gcl/tmp/tmp/foo/unixport/gazonk11.o
start address -T 0x1193ff0 Finished loading 
/fix/t1/camm/debian/gcl/tmp/tmp/foo/unixport/gazonk11.o
#<compiled-function BAR>
NIL
NIL

>(bar)
got (nil)
got (nil)

(3 4 5 6 7)
(6 7)

>(let ((si::*child-stack-alloc* 10)) (bar))
got 0x196dea8
got 0x196de68

(3 4 5 6 7)
(6 7)

>si::*child-stack-alloc*

NIL

>(eq (member 3 *a*) (bar))
got (nil)
got (nil)

NIL

>(equal (member 3 *a*) (bar))
got (nil)
got (nil)

T

>(eq (member 3 *a*) (let ((si::*child-stack-alloc* 10)) (bar)))
got 0x196dea8
got 0x196de68

T

>

More testing needed.

Take care,
-- 
Camm Maguire                                            [EMAIL PROTECTED]
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah


_______________________________________________
Gcl-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gcl-devel

Reply via email to