[Bf-blender-cvs] [c1e014f2a18] temp-llvm-testing: enable object cache code path
Jacques Lucke
noreply at git.blender.org
Wed Dec 29 21:45:49 CET 2021
Commit: c1e014f2a18fb64fefcccf8b0f6b7d8137d8d59e
Author: Jacques Lucke
Date: Wed Dec 29 21:44:40 2021 +0100
Branches: temp-llvm-testing
https://developer.blender.org/rBc1e014f2a18fb64fefcccf8b0f6b7d8137d8d59e
enable object cache code path
===================================================================
M source/blender/functions/intern/llvm.cc
===================================================================
diff --git a/source/blender/functions/intern/llvm.cc b/source/blender/functions/intern/llvm.cc
index e8cf3a3e998..d8ebb43538a 100644
--- a/source/blender/functions/intern/llvm.cc
+++ b/source/blender/functions/intern/llvm.cc
@@ -23,9 +23,9 @@
#include <llvm/IR/LLVMContext.h>
#include <llvm/IR/Type.h>
#include <llvm/IR/Verifier.h>
+#include <llvm/Object/ObjectFile.h>
#include <llvm/Support/CommandLine.h>
#include <llvm/Support/TargetRegistry.h>
-#include <llvm/Object/ObjectFile.h>
#include <llvm/Support/TargetSelect.h>
#include "FN_llvm.hh"
@@ -34,7 +34,7 @@
namespace blender::fn {
- const std::string object_file_path = "C:\\Users\\jacques\\Documents\\my_object.o";
+const std::string object_file_path = "C:\\Users\\jacques\\Documents\\my_object.o";
class MyObjectCache : public llvm::ObjectCache {
void notifyObjectCompiled(const llvm::Module *module, llvm::MemoryBufferRef obj) override
@@ -43,7 +43,7 @@ class MyObjectCache : public llvm::ObjectCache {
<< module->getModuleIdentifier() << "\n";
std::cout << "Size: " << obj.getBufferSize() << "\n";
- std::ofstream f;
+ std::ofstream f;
f.open(object_file_path, std::ofstream::out | std::ofstream::binary);
f.write(obj.getBufferStart(), obj.getBufferSize());
f.close();
@@ -51,10 +51,11 @@ class MyObjectCache : public llvm::ObjectCache {
std::unique_ptr<llvm::MemoryBuffer> getObject(const llvm::Module *module) override
{
- //return {};
+ // return {};
std::cout << "Request Cache: " << module->getName().str() << " - "
<< module->getModuleIdentifier() << "\n";
- llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> buffer_err = llvm::MemoryBuffer::getFile(object_file_path);
+ llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> buffer_err = llvm::MemoryBuffer::getFile(
+ object_file_path);
std::unique_ptr<llvm::MemoryBuffer> buffer = std::move(*buffer_err);
return buffer;
}
@@ -91,7 +92,8 @@ void playground()
MyObjectCache object_cache;
- llvm::Expected<llvm::object::OwningBinary<llvm::object::ObjectFile>> object_file_ex = llvm::object::ObjectFile::createObjectFile(object_file_path);
+ llvm::Expected<llvm::object::OwningBinary<llvm::object::ObjectFile>> object_file_ex =
+ llvm::object::ObjectFile::createObjectFile(object_file_path);
if (!object_file_ex) {
return;
}
@@ -99,7 +101,7 @@ void playground()
llvm::Module *module_ptr = &*module;
std::unique_ptr<llvm::ExecutionEngine> ee{llvm::EngineBuilder(std::move(module)).create()};
ee->addObjectFile(std::move(*object_file_ex));
- //ee->setObjectCache(&object_cache);
+ ee->setObjectCache(&object_cache);
ee->finalizeObject();
const uint64_t function_ptr = ee->getFunctionAddress(function->getName().str());
More information about the Bf-blender-cvs
mailing list