At 7:12 AM +0000 12/16/02, Piers Cawley wrote:
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?
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.

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

Reply via email to