Saturday 22 February 2003 16:28, Leopold Toetsch wrote: > Gopal V wrote: > > If memory serves me right, Leopold Toetsch wrote: > > > > > > Ok .. well I sort of understood that the first N registers will > > be the ones MAPped ?. So I thought re-ordering/sorting was the > > operation performed. > > Yep. Register renumbering, so that the top N used (in terms of > score) registers are I0, I1, ..In-1
With your approach there are three levels of parrot "registers": - The first N registers, which in JIT will be mapped to physical registers. - The others 32 - N parrot registers, which will be in memory. - The "spilled" registers, which are also on memory, but will have to be copied to a parrot register (which may be a memory location or a physical registers) before being used. I believe it would be smarter if we instructed IMCC to generate code that only uses N parrot registers (where N is the number of machine register available). This way we avoid the risk of having to copy twice the data. This is also insteresting because it gives the register allocation algorithm all the information about the actual structure of the machine we are going to run in. I am quite confident that code generated this way would run faster. We also need tho have a better procedure for saving and restoring spilled registers. Specially in the case of JIT compilation, where it could be translated to a machine save/restore. What do you think about it? -angel