Version 0.4 may be described in three words: jit that works.
It means that jit should provide eqal or better performance on almost all typical tasks excluding heavy usage of reflection and/or dyanmic method generation. Current jit code is created in assumption that class and method hierarchy will not change over time. Of course this is a temporary limitation that should be fixed in later versions.
Another complex issue is fast evaluation of block return instruction. Current implementation uses exception API to perform far jump. This work OK but is terribly slow. I mean REALLY slow, 10 times slower than the software implementation and 40 times slower than implementation proposed in the fast_block_return branch. Latter uses -freg-struct-return technique which is uncommon in UNIX world and it's calling conventions. More portable implementation should pass return value using the stack (sret in terms of LLVM).
Related features
[x] Merge #32 Graph based code generation
[x] Helper codegen functions
[x] Instruction API
[x] Tests for instruction API
[x] Benchmarks
[x] #74 Implement Jit once: [ ] to be used in command line
[x] #61 Cmake improvements
[x] #62 Man page
[x] #64 GC logging (don't forget to add wiki page made of @vlastachu comment)
Version 0.4 may be described in three words: jit that works.
It means that jit should provide eqal or better performance on almost all typical tasks excluding heavy usage of reflection and/or dyanmic method generation. Current jit code is created in assumption that class and method hierarchy will not change over time. Of course this is a temporary limitation that should be fixed in later versions.
Another complex issue is fast evaluation of block return instruction. Current implementation uses exception API to perform far jump. This work OK but is terribly slow. I mean REALLY slow, 10 times slower than the software implementation and 40 times slower than implementation proposed in the fast_block_return branch. Latter uses
-freg-struct-return
technique which is uncommon in UNIX world and it's calling conventions. More portable implementation should pass return value using the stack (sret
in terms of LLVM).Related features
Jit once: [ ]
to be used in command lineRelated bugs and known issues
Jit>>once:
vs exceptionsMisc