At 7:12 AM +0000 12/16/02, Piers Cawley wrote:
Nope. There's nothing wrong with having a set of more stringent rules. Since invoke is for C functions that we know are C functions and thus we can't tail-call into them (and they aren't likely to use any parrot registers) it seems a reasonable optimization.Dan Sugalski <[EMAIL PROTECTED]> writes:At 4:45 PM +0000 12/5/02, Leon Brocard wrote:Leon Brocard sent the following bits through the ether:Now to get the hand of the signatures...Ah, well, I gave up on SDL as it was a little complicated. Instead, I played with curses. Please find attached a cute little curses life program loading and calling curses at runtime with dlfunc. Oh, and I made the shape a small spaceship as it's more interesting.Leon, you're really scary, y'know that? :)[It's a bit of the pain the way it stomps over registers all the time, though ;-]There are ways to get around that, and there are some inefficiencies in the implementation there. I think we can work around some of those--I am rather tempted to have invoke promise not to alter non-parameter registers or something so you don't have to pushall every time you make a call to what could be assumed to be an atomic and non-parrot function.Doesn't that rather invalidate the whole 'caller saves' principle?
I think the general rule is "When you cross an interpreter/C boundary, you must assume the caller has no clue what you might do and you must be careful" or something like that.
--
Dan
--------------------------------------"it's like this"-------------------
Dan Sugalski even samurai
[EMAIL PROTECTED] have teddy bears and even
teddy bears get drunk