about summary refs log tree commit diff
path: root/src/rustc/lib
diff options
context:
space:
mode:
authorZack Corr <zack@z0w0.me>2012-09-11 16:05:51 +1000
committerZack Corr <zack@z0w0.me>2012-09-27 12:57:58 +1000
commit887b59b7bea4d795ebe30655ac051f7872aa6a44 (patch)
tree9106ca5de37a2ae972ae65dbf41b226f593e1b13 /src/rustc/lib
parent996ec62cbfce9f25ecc8b573a0b9eb7f4a1b6db9 (diff)
jit: Separate JIT execution into two functions and load crates before main lookup
Diffstat (limited to 'src/rustc/lib')
-rw-r--r--src/rustc/lib/llvm.rs22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/rustc/lib/llvm.rs b/src/rustc/lib/llvm.rs
index 031ce219308..c16fe31f933 100644
--- a/src/rustc/lib/llvm.rs
+++ b/src/rustc/lib/llvm.rs
@@ -990,15 +990,19 @@ extern mod llvm {
         call. */
     fn LLVMRustGetLastError() -> *c_char;
 
-    /** Load a shared library to resolve symbols against. */
-    fn LLVMRustLoadLibrary(Filename: *c_char) -> bool;
-
-    /** Create and execute the JIT engine. */
-    fn LLVMRustJIT(__morestack: *(),
-                   PM: PassManagerRef,
-                   M: ModuleRef,
-                   OptLevel: c_int,
-                   EnableSegmentedStacks: bool) -> *();
+    /** Prepare the JIT. Returns a memory manager that can load crates. */
+    fn LLVMRustPrepareJIT(__morestack: *()) -> *();
+
+    /** Load a crate into the memory manager. */
+    fn LLVMRustLoadCrate(MM: *(),
+                         Filename: *c_char) -> bool;
+
+    /** Execute the JIT engine. */
+    fn LLVMRustExecuteJIT(MM: *(),
+                          PM: PassManagerRef,
+                          M: ModuleRef,
+                          OptLevel: c_int,
+                          EnableSegmentedStacks: bool) -> *();
 
     /** Parses the bitcode in the given memory buffer. */
     fn LLVMRustParseBitcode(MemBuf: MemoryBufferRef) -> ModuleRef;