Greetings, and thanks!

So, why was it ever faster to write to a global area than to write to
the global lisp value stack, which is just a C array in the static
area (but also optionally on the lisp stack in an unmoveable place if
one does (si::multiply-stacks...) --  might be able to understand how
this latter case could slow down gc.)?  Just wondering.  Another
possibility is that value stack overflow checking was more complete
and time consuming before ths was implemented.  Now, gcl just relies
on segfault trapping to attempt to detect vs overflow (which is much
faster, but still a bit unreliable).

Take care,

Robert Boyer <[EMAIL PROTECTED]> writes:

> > Thanks!  I guess what I really meant was -- is there an easy summary
> > of how it worked before?
> 
> Yes.  Instead of returning multiple values, functions simply always returned
> one value, and the return of the "other values" was faked through global
> locations.  This hack was conceived by Bill Schelter as a return value
> implementation even faster than ACKL's multiple value return mechanism.  He
> added a couple of special features to AKCL to make it run faster than in
> plain ANSI Lisp, though a version of it also ran in plain ANSI Lisp.
> 
> Thus in the old scheme:
> 
>   (macroexpand '(mv 1 2 3 4))  => 
> 
>   (LET ((#:G43165 1)) (SET-MV 1 2) (SET-MV 2 3) (SET-MV 3 4) #:G43165)
> 
> and
> 
>   (macroexpand '(mv-let (x y z w) (foo) fap))  =>
> 
>   (LET ((X (FOO)) (Y (MV-REF 1)) (Z (MV-REF 2)) (W (MV-REF 3))) FAP)
> 
> SET-MV and MV-REF reference fixed global locations, in the simplest sort of
> way.  (This makes them perfectly thread-unsafe!)
> 
> Bob
> 
> P. S.  There is now some evidence that even in GCL, using the ANSI return
> value mechanism can be faster than using Schelter's hack of 10 years ago.
> 
> Don't hesitate to inquire further on any detail or matter.  The short story
> is: ACL2 functions used to always return one value (though appearing
> otherwise), and now they return as many as they seem to, if one has done
> (push :acl2-mv-as-values *features*) before the build.
> 
> 
> 

-- 
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