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

Re: when GC is permitted

This page is part of the web mail archives of SRFI 50 from before July 7th, 2015. The new archives for SRFI 50 contain all messages, not just those from before July 7th, 2015.

    > From: Jim Blandy <jimb@xxxxxxxxxx>

    > But you need to be clear about exactly what JNI-style really
    > implies. [....]
    > Here's the implementation of mn_car, with run-time typechecking
    > removed:

    >     mn_ref *
    >     mn_car (mn_call *call, mn_ref *pair)
    >     {
    >         result = mn__make_local_ref (mn__untag_pair (pair->obj)->car);
    >     }

    > mn__make_local_ref is an allocation.  

Pika-style doesn't have that problem.

    > (BTW, Tom will be quite disappointed with what GCC's optimizer
    > will do to Pika-style code; go and try it.)

You need to be much more specific.  

I doubt I have any illusions there.  I doubt it is significantly
different from what _correct_use_ of the draft-style interfaces will
do.  In some cases it may be better (as for example, when passing
through parameters to a called function -- the draft requires a
separate GCPROtection of those parameters).  And in implementations
using conservative stack scanning or otherwise don't require barriers,
I think Pika-style will do quite well indeed.