Dan Sugalski <[EMAIL PROTECTED]> wrote:

> It's possible to get the register allocator in what is essentially an
> infinite loop, where it runs forever or until it blows memory and
> dies. It needs to have a means to check for too many iterations and
> fall back to a slow-but-working version with too much spilling.

Ok. After some (useless) spill iterations, the strategy could be to just
spill everything in one run and be done with it. But this is a bit
suboptimal.

A better strategy would be to discard the life range of lexicals and
globals and emit only a fetch for these variables. But that needs some
HLL (or programmer) support for denoting lexicals and globals, e.g.

  .lexical "foo"
  .global pmc bar   # current syntax but unimplemented

I'm not quite sure, if the current C<.global> syntax is useful (it
allows non-PMC types). Anyway, if imcc knows, that the variable is a
global or lexical, the register allocator can do a better job.

leo

Reply via email to