diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/docs/tutorial/BuildingAJIT4.rst | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/llvm/docs/tutorial/BuildingAJIT4.rst b/llvm/docs/tutorial/BuildingAJIT4.rst new file mode 100644 index 00000000000..39d9198a85c --- /dev/null +++ b/llvm/docs/tutorial/BuildingAJIT4.rst @@ -0,0 +1,48 @@ +=========================================================================== +Building a JIT: Extreme Laziness - Using Compile Callbacks to JIT from ASTs +=========================================================================== + +.. contents:: + :local: + +**This tutorial is under active development. It is incomplete and details may +change frequently.** Nonetheless we invite you to try it out as it stands, and +we welcome any feedback. + +Chapter 4 Introduction +====================== + +Welcome to Chapter 4 of the "Building an ORC-based JIT in LLVM" tutorial. This +chapter introduces the Compile Callbacks and Indirect Stubs APIs and shows how +they can be used to replace the CompileOnDemand layer from +`Chapter 3 <BuildingAJIT3.html>`_ with a custom lazy-JITing scheme that JITs +directly from Kaleidoscope ASTs. + +**To be done:** + +**(1) Describe the drawbacks of JITing from IR (have to compile to IR first, +which reduces the benefits of laziness).** + +**(2) Describe CompileCallbackManagers and IndirectStubManagers in detail.** + +**(3) Run through the implementation of addFunctionAST.** + +Full Code Listing +================= + +Here is the complete code listing for our running example that JITs lazily from +Kaleidoscope ASTS. To build this example, use: + +.. code-block:: bash + + # Compile + clang++ -g toy.cpp `llvm-config --cxxflags --ldflags --system-libs --libs core orc native` -O3 -o toy + # Run + ./toy + +Here is the code: + +.. literalinclude:: ../../examples/Kaleidoscope/BuildingAJIT/Chapter4/KaleidoscopeJIT.h + :language: c++ + +`Next: Remote-JITing -- Process-isolation and laziness-at-a-distance <BuildingAJIT5.html>`_ |