mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-11 13:26:08 +03:00
Jit: better error handling and handle correctly __chkstk function (#3051)
This commit is contained in:
parent
e60df4710c
commit
eaa65fca18
5 changed files with 33 additions and 14 deletions
|
@ -110,8 +110,8 @@ JITContext::JITContext()
|
|||
|
||||
JITContext::~JITContext() {}
|
||||
|
||||
bool JITContext::addModule(std::unique_ptr<llvm::Module> module,
|
||||
llvm::raw_ostream *asmListener) {
|
||||
llvm::Error JITContext::addModule(std::unique_ptr<llvm::Module> module,
|
||||
llvm::raw_ostream *asmListener) {
|
||||
assert(nullptr != module);
|
||||
reset();
|
||||
|
||||
|
@ -122,18 +122,23 @@ bool JITContext::addModule(std::unique_ptr<llvm::Module> module,
|
|||
auto result = compileLayer.addModule(handle, std::move(module));
|
||||
if (result) {
|
||||
execSession.releaseVModule(handle);
|
||||
return true;
|
||||
return result;
|
||||
}
|
||||
if (auto err = compileLayer.emitAndFinalize(handle)) {
|
||||
execSession.releaseVModule(handle);
|
||||
return err;
|
||||
}
|
||||
moduleHandle = handle;
|
||||
#else
|
||||
auto result = compileLayer.addModule(std::move(module), createResolver());
|
||||
if (!result) {
|
||||
return true;
|
||||
return llvm::make_error<llvm::StringError>("addModule failed",
|
||||
llvm::inconvertibleErrorCode());
|
||||
}
|
||||
moduleHandle = result.get();
|
||||
#endif
|
||||
compiled = true;
|
||||
return false;
|
||||
return llvm::Error::success();
|
||||
}
|
||||
|
||||
llvm::JITSymbol JITContext::findSymbol(const std::string &name) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue