I did not read your question properly, sorry! Thanks for the clarification,
I didn't know foreign-lambda were the one that had to do the
CPS-conversion. Does that mean there is a small performance overhead when
using foreign-lambda as opposed to just foreign-primitive?

K.


On Thu, Jun 6, 2013 at 11:59 AM, Thomas Chust <ch...@web.de> wrote:

> On 2013-06-06 11:46, Kristian Lein-Mathisen wrote:
> > [...]
> > From what I understand, this is exactly what foreign-primitive does:
> > wraps C_return in a CPS, keeping the stack-allocation alive.
> > [...]
>
> Hello,
>
> well, kind of.
>
> Since compiled CHICKEN code is fully CPS transformed you don't wrap
> something in a CPS context, you wrap anything that isn't natively in CPS
> with a function that calls it and passes the result to the values
> continuation.
>
> foreign-lambda and friends create such wrappers, foreign-primitive
> doesn't create a wrapper, it just expects the code to be in CPS style,
> which means that the code may never return at all. C_return is, in that
> case, just syntactic sugar for invoking the values continuation.
>
> Since the code in a foreign-primitive never returns, things allocated in
> the nursery (ie. on the stack) live on "forever", or rather until the
> next minor garbage collection comes around, transfers anything that's
> still referenced into the second generation heap and throws away the
> nursery (ie. almost the entire stack).
>
> Therefore foreign-primitive can do allocation in the nursery, but
> foreign-lambda can't. However, foreign-lambda could still allocate
> directly in the second generation heap or transfer nursery-allocated
> values directly into the heap upon return before the stack context is
> destroyed. The question is whether such magic is present for
> foreign-safe-lambda, as the documentation may indicate, or whether that
> is not the case, as Felix has indicated with his earlier message :-)
>
> Ciao,
> Thomas
>
>
> --
> When C++ is your hammer, every problem looks like your thumb.
>
>
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to