On Oct 20, 2004, at 11:24 PM, Leopold Toetsch wrote:
Bill Coffman <[EMAIL PROTECTED]> wrote:
And of course, lexicals and globals already have a storage, you don't need to spill them.
I'm not sure that's true. If there's no 'eval' in scope, lexicals don't have to live in pads--they could purely exist in registers. And with tied namespaces and such, it may not be legitimate to re-fetch a global (ie, to fetch it multiple times, if the code appears to only fetch it once) -- one could pathologically have a global whose value appears to increase each time it's fetched, for instance, or you could end up with multiple round-trips to a database.
... Another thing that might be worth checking, after parrot gets out of "alpha", is if reducing or increasing the number of registers will help performance. Just a thought.
The 4 x 32 is pretty good. It matches recent hardware too. But if a good
register algorithm shows that 4 x 16 is enough, we can of course
decrease the register number. Increasing shouldn't be necessary.
Matching hardware is probably not too significant--even though the PPC has 32 int registers, we can't map to all of them in JIT (some are dedicated to holding the interpreter pointer, etc.), and we'd really need 3 x 32 hardware int registers to accommodate all we'd like (I, S, and P registers). So even currently it's a loose match.
JEff