WebKit Classic and JIT
  • Order of the Butterfly
    Order of the Butterfly
    Samurai_Crow
    Posts: 189 from 2009/12/10
    From: Minnesota, USA
    I've been looking into code generation improvements for EEC, my AmigaE compiler and creating a QBE based SSA optimization backend as a shared library looks like it might happen. Noting that the new library might resemble part of the B3 JIT for JavaScript, I might be able to make something work.

    CodeGen.library is the proposed name for the QBE (Quick Back-End) optimizer and there should be 2 other library handles passed in as final code generation. The ABI library will generate native code using the ISA library to supply the instruction set specific code generation.

    QBE (and the derived LibQBE library) are written in C99. The other 2 are classes supplied in the source code of the self-hosted (written in E) AmigaE compiler.

    The JIT/AOT compilation strategy will need to be written for the ABI plug-in to work. The default ABI for MorphOS is ELF based on SYS-V but that is for disk-based compilation.

    The existing C99 backends for QBE are presently all 64-bit and include x86_64. They all use an external assembler for their current ABI support. If memory is cheap on 64-bit systems, wrapping LLVM-JIT (as older versions of WebKit did) might be a better option, not to mention making it follow the same conventions as the small version of CodeGen.library using the stable, C-based API in LLVM for easier maintenance.

    I'm bringing this up because there is always "a little more glue than one bottle can hold" regarding manpower when trying to splice together different code bases. If someone familiar with JIT compilation wants to step up, this could mean faster operations in the future of our web browser and other compilers.
  • »01.08.25 - 18:26
    Profile