Mercurial > projects > ldc
comparison tools/binding/llvm/executionengine.d @ 1274:4ff9ab0d472c
Check in some old changes to the binding, from before I had commit access.
- Add bindings for InsertValue and ExtractValue
- Updates to use new APIs where they were renamed or removed.
- Add generic error messages if LLVM didn't provide one.
- Enable typesafe variadic arguments for GetGEP.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Mon, 27 Apr 2009 22:34:36 +0200 |
parents | 1ba61de8796b |
children |
comparison
equal
deleted
inserted
replaced
1273:1ba61de8796b | 1274:4ff9ab0d472c |
---|---|
98 char* err; | 98 char* err; |
99 if (LLVMCreateExecutionEngine(&ee, mp.ll, &err)) | 99 if (LLVMCreateExecutionEngine(&ee, mp.ll, &err)) |
100 { | 100 { |
101 auto errmsg = from_stringz(err).dup; | 101 auto errmsg = from_stringz(err).dup; |
102 LLVMDisposeMessage(err); | 102 LLVMDisposeMessage(err); |
103 if (errmsg.length == 0) | |
104 errmsg = "Error creating execution engine"; | |
103 throw new LLVMException(errmsg); | 105 throw new LLVMException(errmsg); |
104 } | 106 } |
105 return new ExecutionEngine(ee); | 107 return new ExecutionEngine(ee); |
106 } | 108 } |
107 /// | 109 /// |
111 char* err; | 113 char* err; |
112 if (LLVMCreateInterpreter(&ee, mp.ll, &err)) | 114 if (LLVMCreateInterpreter(&ee, mp.ll, &err)) |
113 { | 115 { |
114 auto errmsg = from_stringz(err).dup; | 116 auto errmsg = from_stringz(err).dup; |
115 LLVMDisposeMessage(err); | 117 LLVMDisposeMessage(err); |
118 if (errmsg.length == 0) | |
119 errmsg = "Error creating interpreter"; | |
116 throw new LLVMException(errmsg); | 120 throw new LLVMException(errmsg); |
117 } | 121 } |
118 return new ExecutionEngine(ee); | 122 return new ExecutionEngine(ee); |
119 } | 123 } |
120 /// | 124 /// |
124 char* err; | 128 char* err; |
125 if (LLVMCreateJITCompiler(&ee, mp.ll, &err)) | 129 if (LLVMCreateJITCompiler(&ee, mp.ll, &err)) |
126 { | 130 { |
127 auto errmsg = from_stringz(err).dup; | 131 auto errmsg = from_stringz(err).dup; |
128 LLVMDisposeMessage(err); | 132 LLVMDisposeMessage(err); |
133 if (errmsg.length == 0) | |
134 errmsg = "Error creating JIT"; | |
129 throw new LLVMException(errmsg); | 135 throw new LLVMException(errmsg); |
130 } | 136 } |
131 return new ExecutionEngine(ee); | 137 return new ExecutionEngine(ee); |
132 } | 138 } |
133 /// | 139 /// |
197 char* err; | 203 char* err; |
198 if (LLVMRemoveModuleProvider(ee, mp.ll, &mod, &err)) | 204 if (LLVMRemoveModuleProvider(ee, mp.ll, &mod, &err)) |
199 { | 205 { |
200 auto errmsg = from_stringz(err).dup; | 206 auto errmsg = from_stringz(err).dup; |
201 LLVMDisposeMessage(err); | 207 LLVMDisposeMessage(err); |
208 if (errmsg.length == 0) | |
209 errmsg = "Error removing ModuleProvider from ExecutionEngine"; | |
202 throw new LLVMException(errmsg); | 210 throw new LLVMException(errmsg); |
203 } | 211 } |
204 return Module.GetExisting(mod); | 212 return Module.GetExisting(mod); |
205 } | 213 } |
206 /// | 214 /// |