I would expect a large majority of parrot subroutines to *not* use all four register types.
How difficult would it be to make imcc detect when less than 4 register types were used in a subroutine, and replace a call to "saveall" with an appropriate combination of "pushi", "pushs", "pushp", and "pushn" (and likewise with "restoreall")? I've been looking at the optomizer, and it hurts my head to try and understand it. Perhaps more importantly, could continuations be made to *not* save/restore all four register types, and instead only save/restore those types that we ask it to save/restore? This will become even more important if we add a fifth register type for 64 bit ints. -- $a=24;split//,240513;s/\B/ => /for@@=qw(ac ab bc ba cb ca );{push(@b,$a),($a-=6)^=1 for 2..$a/6x--$|;print "[EMAIL PROTECTED] ]\n";((6<=($a-=6))?$a+=$_[$a%6]-$a%6:($a=pop @b))&&redo;}