|
@@ -10,7 +10,7 @@ Introduction
|
|
|
|
|
|
This document aims to provide a high-level overview of the design and
|
|
|
implementation of the ORC JIT APIs. Except where otherwise stated, all
|
|
|
-discussion applies to the design of the APIs as of LLVM verison 9 (ORCv2).
|
|
|
+discussion applies to the design of the APIs as of LLVM version 9 (ORCv2).
|
|
|
|
|
|
Use-cases
|
|
|
=========
|
|
@@ -19,7 +19,7 @@ ORC provides a modular API for building JIT compilers. There are a range
|
|
|
of use cases for such an API. For example:
|
|
|
|
|
|
1. The LLVM tutorials use a simple ORC-based JIT class to execute expressions
|
|
|
-compiled from a toy languge: Kaleidoscope.
|
|
|
+compiled from a toy language: Kaleidoscope.
|
|
|
|
|
|
2. The LLVM debugger, LLDB, uses a cross-compiling JIT for expression
|
|
|
evaluation. In this use case, cross compilation allows expressions compiled
|
|
@@ -31,7 +31,7 @@ optimizations within an existing JIT infrastructure.
|
|
|
|
|
|
4. In interpreters and REPLs, e.g. Cling (C++) and the Swift interpreter.
|
|
|
|
|
|
-By adoping a modular, library-based design we aim to make ORC useful in as many
|
|
|
+By adopting a modular, library-based design we aim to make ORC useful in as many
|
|
|
of these contexts as possible.
|
|
|
|
|
|
Features
|
|
@@ -237,7 +237,7 @@ but they may also wrap a jit-linker directly (if the program representation
|
|
|
backing the definitions is an object file), or may even be a class that writes
|
|
|
bits directly into memory (for example, if the definitions are
|
|
|
stubs). Materialization is the blanket term for any actions (compiling, linking,
|
|
|
-splatting bits, registering with runtimes, etc.) that are requried to generate a
|
|
|
+splatting bits, registering with runtimes, etc.) that are required to generate a
|
|
|
symbol definition that is safe to call or access.
|
|
|
|
|
|
As each materializer completes its work it notifies the JITDylib, which in turn
|
|
@@ -495,7 +495,7 @@ or creating any Modules attached to it. E.g.
|
|
|
TP.wait();
|
|
|
|
|
|
To make exclusive access to Modules easier to manage the ThreadSafeModule class
|
|
|
-provides a convenince function, ``withModuleDo``, that implicitly (1) locks the
|
|
|
+provides a convenience function, ``withModuleDo``, that implicitly (1) locks the
|
|
|
associated context, (2) runs a given function object, (3) unlocks the context,
|
|
|
and (3) returns the result generated by the function object. E.g.
|
|
|
|