mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-23 17:32:49 +00:00
a2fe1f3137
The version of the tutorial uses the new compile callbacks API to inject stubs that trigger IRGen & Codegen of their respective function bodies when they are first called. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229466 91177308-0d34-0410-b5e6-96231b3b80d8
22 lines
1.3 KiB
Plaintext
22 lines
1.3 KiB
Plaintext
//===----------------------------------------------------------------------===/
|
|
// Kaleidoscope with Orc - Lazy IRGen Version
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
This version of Kaleidoscope with Orc demonstrates fully lazy IR-generation.
|
|
Building on the lazy-irgen version of the tutorial, this version injects JIT
|
|
callbacks to defer the bulk of IR-generation and code-generation of functions until
|
|
they are first called.
|
|
|
|
When a function definition is entered, a JIT callback is created and a stub
|
|
function is built that will call the body of the function indirectly. The body of
|
|
the function is *not* IRGen'd at this point. Instead, the function pointer for
|
|
the indirect call is initialized to point at the JIT callback, and the compile
|
|
action for the callback is initialized with a lambda that IRGens the body of the
|
|
function and adds it to the JIT. The function pointer is updated by the JIT
|
|
callback's update action to point at the newly emitted function body, so future
|
|
calls to the stub will go straight to the body, not through the JIT.
|
|
|
|
This directory contains a Makefile that allows the code to be built in a
|
|
standalone manner, independent of the larger LLVM build infrastructure. To build
|
|
the program you will need to have 'clang++' and 'llvm-config' in your path.
|