On Mon, Jul 15, 2013 at 6:17 PM, Jonathan S. Shapiro <[email protected]> wrote: > On Mon, Jul 15, 2013 at 3:03 PM, Jon Zeppieri <[email protected]> wrote: >> > > That's what I thought. Basically, they've integrated the technique that > Fergus Henderson proposed. It's actually not as bad as it sounds, since > those registers tend to get spilled anyway. > > The issue isn't spilling the registers, so much as it is ensuring that the > registers get reloaded. > > The essential requirement on the optimizer is to know the types of values in > registers. LLVM doesn't do that. Implementors of managed languages have been > complaining about that for years, but it isn't a priority at Apple. >
I'm not sure I follow. By "register," I'm referring to an LLVM virtual register, or an SSA value. As far as I know, most optimizations in LLVM only pertain to SSA values, so the effect of keeping these on the stack is to disable most optimizations. The downside of this might not be so bad in a language like BitC, where the type system plus escape analysis may be able to prevent many variables from being tagged as GC roots. (My own investigation was in the context of a language where most values would need to be GC roots.) _______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
