4 ms·
It seems like the specializer contains a lot of a compiler back end. (I am not a compiler guy, so my understanding is probably wrong.) Different family member
by kbob 13y ago
It seems like the specializer contains a lot of a compiler back end. (I am not a compiler guy, so my understanding is probably wrong.)
Different family members have different functional unit timings and different numbers and orders of functional units. ("orders" -- the order they drop results onto the belt. What's the right term?) Therefore the specializer has to schedule instructions.
Different family members have different belt lengths. Therefore the specializer has to insert belt spills, which seems to be analogous to register allocation/spills.
Different family members have different encodings, so the specializer has to determine the size of each basic block and link-edit them together. (Probably fast, just a lot of bookkeeping.)
It looks like there's a lot of work between the Mill IR and the actual machine code.
- shawnz 13y agoIt transforms one language into another, so by definition it's a compiler. But what is so scary about that? I would be willing to bet that most people already run JIT'd code every day, in the form of Java, C#, Javascript, etc.
- kbob 13y agoMy question is, how slow is the specializer? It is portrayed as very fast, but it looks like it's doing a significant fraction of a real compiler's work. Then again, if it's mostly used at program installation time, who cares?