3 ms·
Oh man, block-argument-SSA makes so much more sense to me than Φ-SSA. That alone is going to change my life. Thank you, Max! A lot of this process is the same
by kragen 1y ago
Oh man, block-argument-SSA makes so much more sense to me than Φ-SSA. That alone is going to change my life. Thank you, Max!
A lot of this process is the same as graph-coloring register allocation on SSA, of which I found an extensive explanation in Appel's textbook. I think it's maybe time for me to go back to it and do the exercises so I really understand it. The book unfortunately predates the linear allocator age.
The link to https://brrt-to-the-future.blogspot.com/2019/03/reverse-linear-scan-allocation-is.html?m=1 https://brrt-to-the-future.blogspot.com/2019/03/reverse-line..., which is a learner's introduction to the LuaJIT reverse linear scan allocator, also seems valuable.
- xorvoid 1y agoBecause block-argument is actually the “right way”. The phi-node is very un-natural.. in the same sort of way that pi should have been tau. Also, notice the connection here between Phi nodes and Continuation Passing Style (CPS). It because obvious with the block-arg form because it’s just the same thing. Jumps to blocks are just calls that don’t return.
- kragen 1y agoYes, I'd never understood what people meant when they said that SSA was the same thing as CPS, but with block-argument SSA it's clear.