Posts

Posts uit maart, 2017 tonen

Function Call Milestone

Hi everybody. It's high time for another update, and this time I have good news. The 'expression' JIT compiler can now compile native ('C') function calls (although it's not able to use the results). This is a major milestone because function calls are hard! (At least from the perspective of a compiler, and especially from the perspective of the register allocator). Also because native function calls are really very important in MoarVM. Most of its 'primitive' operations (like hash table access, string equality, big integer arithmetic) are implemented by invoking native functions, and so to compile almost any program the JIT has to compile many function calls. What makes function calls 'hard' is that they must implement the 'calling convention' of the relevant ' application binary interface ' (ABI). In short, the ABI specifies the locations of function call parameters.  A small number of parameters (on Windows , the first 4, for