mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-05 09:31:03 +03:00
D dynamic compilation support
This commit is contained in:
parent
1c2271d00d
commit
42f283c221
41 changed files with 2058 additions and 9 deletions
44
runtime/jit-rt/cpp-so/utils.cpp
Normal file
44
runtime/jit-rt/cpp-so/utils.cpp
Normal file
|
@ -0,0 +1,44 @@
|
|||
#include "utils.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cassert>
|
||||
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/IR/Verifier.h"
|
||||
|
||||
#include "context.h"
|
||||
|
||||
|
||||
void fatal(const Context &context, const std::string &reason)
|
||||
{
|
||||
if (nullptr != context.fatalHandler) {
|
||||
context.fatalHandler(context.fatalHandlerData,
|
||||
reason.c_str());
|
||||
}
|
||||
else {
|
||||
fprintf(stderr, "Runtime compiler fatal: %s\n", reason.c_str());
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
void interruptPoint(const Context &context, const char *desc, const char *object)
|
||||
{
|
||||
assert(nullptr != desc);
|
||||
if (nullptr != context.interruptPointHandler) {
|
||||
context.interruptPointHandler(context.interruptPointHandlerData,
|
||||
desc,
|
||||
object);
|
||||
}
|
||||
}
|
||||
|
||||
void verifyModule(const Context &context, llvm::Module &module)
|
||||
{
|
||||
std::string err;
|
||||
llvm::raw_string_ostream errstream(err);
|
||||
if (llvm::verifyModule(module, &errstream)) {
|
||||
std::string desc = std::string("module verification failed:") +
|
||||
errstream.str();
|
||||
fatal(context, desc);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue