JITs, programmer shit
re: JITs, programmer shit
@Moon @icedquinn One pattern that I keep seeing over and over again is how people would first do their JIT compiler w/ something like LLVM because "we can tolerate longer compile times and it produces more optimized code anyway" yet would move away from it (or adds tiered compilation w/ LLVM being the last tier) eventually because it turns out to be too slow for their purposes or something...
So I suppose compile times still matter to some extent? ![]()
@icedquinn @Moon @koakuma the go compiler is pretty interesting, it also uses something like IL as it's assembler. i think it would be pretty interesting to see other languages targeting the go assembler.
> The most important thing to know about Go's assembler is that it is not a direct representation of the underlying machine. Some of the details map precisely to the machine, but some do not. This is because the compiler suite (see this description) needs no assembler pass in the usual pipeline. Instead, the compiler operates on a kind of semi-abstract instruction set, and instruction selection occurs partly after code generation. The assembler works on the semi-abstract form, so when you see an instruction like MOV what the toolchain actually generates for that operation might not be a move instruction at all, perhaps a clear or load. Or it might correspond exactly to the machine instruction with that name. In general, machine-specific operations tend to appear as themselves, while more general concepts like memory move and subroutine call and return are more abstract. The details vary with architecture, and we apologize for the imprecision; the situation is not well-defined.
@confusedelectron @icedquinn @Moon @koakuma iirc the go/plan9 compilers are pretty simple compared to other compilers http://doc.cat-v.org/plan_9/4th_edition/papers/compiler