guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Question on mutability of argument lists


From: Niels Möller
Subject: Re: Question on mutability of argument lists
Date: Wed, 19 Mar 2014 20:56:58 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (usg-unix-v)

Mark H Weaver <address@hidden> writes:

> Marco Maggi <address@hidden> writes:
>
>> Yes,  but it  depends  on  what is  "natural"  for you.   In
>> Vicare, when  calling a  Scheme function, all  the arguments
>> are pushed on the Scheme stack segment (similar to calling a
>> C  function) and  then the  function is  called; the  callee
>> takes  the leftover  arguments and  puts them  into a  newly
>> allocated  list.
>
> Indeed, and Guile 2 also does this in compiled code.

I see. So the allocation of the new list is the responsibility of the
function prologue of functions defined with rest arguments.

Thanks for the explanation.

And somthing similar could be done even if the calling convention is the
"natural" one, that the caller conses the arguments onto a list as they
are evaluated, and passes that list to the implementation of the
procedure. The function prologue in the callee would then extract
arguments from that list, and only in the case that the function is
defined with a rest argument, the prologue calls list-copy. And the
compiler could even omit that list-copy in cases where it can infer that
the list cannot be subject to any mutations.

(It's long time since I played with lisp/scheme implementation, but then
I considered a calling convention where each procedure (and
continuation) would have two entry points, one with a single argument
passed in a register, and a second entry point where a pointer to an
argument list is passed in that register. The first entry point would be
used in the common case that there's a single argument or a single
return value. While the second entry point would be used when the number
of arguments is different from 1. Depending on number of arguments
accepted, one or the other of the entry points may point directly to
code raising an error).

Regards,
/Niels

-- 
Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26.
Internet email is subject to wholesale government surveillance.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]