Dan Sugalski: # which builds up a native call pmc that can be invoked. W is the new # PMC for the function (we create it), X is a handle to a dlopened # library, Y is the function name, and Z is the signature.
OK, clarification on something please. Is this essentially XS, or something more primitive? # The data's stored in a PMC of type NCI. The data pointer holds a # pointer to the main routine to call, while the struct value holds a # pointer to an ancillary routine. In the starting case the ancillary # routine will be the actual C function, while the main routine is one # that knows how to extract the parameters out of the various # registers, pass them in, and store the result somewhere. Later the # ancillary routine may be nonexistant if we build up the function # headers on the fly and embed the destination function into them. Oh JITters... ;^) If this is going to be the basic XS mechanism, why don't we just ask the user (or, more likely, the preprocessor) to write an argument-handling routine? --Brent Dax <[EMAIL PROTECTED]> @roles=map {"Parrot $_"} qw(embedding regexen Configure) "If you want to propagate an outrageously evil idea, your conclusion must be brazenly clear, but your proof unintelligible." --Ayn Rand, explaining how today's philosophies came to be