[RFC] removing library NCI signatures from core

Peter Lobsinger plobsing at gmail.com
Wed Feb 17 19:39:22 UTC 2010


On Wed, Feb 17, 2010 at 12:22 PM, Andrew Whitworth
<wknight8111 at gmail.com> wrote:
> On Wed, Feb 17, 2010 at 11:22 AM, Peter Lobsinger <plobsing at gmail.com> wrote:
>> As an aside, methods on C-based PMCs use NCI thunks, so unless you can
>> shoehorn an API into vtables, you're no further ahead by trying to use
>> PMCs in the current system.
>
> Is that still the case? I thought that the PCC refactors changed that.
> At the very least argument handling is done differently, so it should
> be possible to avoid NCI thunks (or, most of them) when calling
> C-based methods.

Seems you're right. pmc2c generates the pcc boilerplate and doesn't
delegate to nci. I was confused by references to pmc methods in
config/gen/call_list/* and the fact that pmc2c calls these functions
"Parrot_${pmc_name}_nci_${method_name}".

What this means (or should mean) then, is that PMC methods should be
more restricted in signature type to avoid complete duplication (or
worse: incorrect duplication) of functionality. We don't want to
maintain 3 C<=>PCC mappings in parallel (we already have nativecall
and nci.pmc). We aren't even managing 2 well (nci.pmc is out of sync
and we don't have tests to complain at us about it).


More information about the parrot-dev mailing list