Re: A less controvertial API addition
Dan Sugalski [EMAIL PROTECTED] wrote: We probably need two API entries. One, a vararg version, that just takes a bunch of PMC pointers (or some sort of (ick) parameter signature), and a second that assumes you've set the registers up properly already. Done both now. The (ick) signature variant is Parrot_runops_fromc_args() needs some testing though, and some clarifaction WRT return conventions. It could also preserve registers if a flag is given or setup an exception handler, but its for sure somewhat slower then the direct calls in delegate.pmc. Dan leo
A less controvertial API addition
While we're fighting^Wdiscussing the freezing system, there's a simpler thing we need to have added in. We need an API entry point that allows C code to invoke a sub/method PMC. This needs to be done both for the embedding API (we'll wrap it) where the embedding app will call in, but also for things like vtable functions where the actual function is parrot bytecode. Calling straight into runops looks a little too simplistic, but this'd be a good place to poke around and see what you can come up with. Dan
Re: A less controvertial API addition
Dan Sugalski [EMAIL PROTECTED] wrote: While we're fighting^Wdiscussing the freezing system, there's a simpler thing we need to have added in. We need an API entry point that allows C code to invoke a sub/method PMC. What about params? I already thought about that a bit, and when looking at extent.c:Parrot_call(), it seems that this needs another thunk (the reverse of NCI), that sets up needed registers depending on a function signature. Dan leo
Re: A less controvertial API addition
On Tue, 21 Oct 2003, Leopold Toetsch wrote: Dan Sugalski [EMAIL PROTECTED] wrote: While we're fighting^Wdiscussing the freezing system, there's a simpler thing we need to have added in. We need an API entry point that allows C code to invoke a sub/method PMC. What about params? I already thought about that a bit, and when looking at extent.c:Parrot_call(), it seems that this needs another thunk (the reverse of NCI), that sets up needed registers depending on a function signature. We probably need two API entries. One, a vararg version, that just takes a bunch of PMC pointers (or some sort of (ick) parameter signature), and a second that assumes you've set the registers up properly already. Dan