LLVM
22.0.0git
lib
ExecutionEngine
Orc
ObjectLinkingLayer.cpp
Go to the documentation of this file.
1
//===------- ObjectLinkingLayer.cpp - JITLink backed ORC ObjectLayer ------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "
llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h
"
10
#include "
llvm/ExecutionEngine/Orc/DebugUtils.h
"
11
#include "
llvm/Support/MemoryBuffer.h
"
12
13
#define DEBUG_TYPE "orc"
14
15
namespace
llvm::orc
{
16
17
char
ObjectLinkingLayer::ID
;
18
19
void
ObjectLinkingLayer::emit
(std::unique_ptr<MaterializationResponsibility> R,
20
std::unique_ptr<MemoryBuffer> O) {
21
assert
(O &&
"Object must not be null"
);
22
MemoryBufferRef
ObjBuffer = O->getMemBufferRef();
23
24
if
(
auto
G
=
jitlink::createLinkGraphFromObject
(
25
ObjBuffer,
getExecutionSession
().getSymbolStringPool())) {
26
emit
(std::move(R), std::move(*
G
), std::move(O));
27
}
else
{
28
R->getExecutionSession().reportError(
G
.takeError());
29
R->failMaterialization();
30
return
;
31
}
32
}
33
34
}
// namespace llvm::orc
assert
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
DebugUtils.h
G
#define G(x, y, z)
Definition
MD5.cpp:56
MemoryBuffer.h
ObjectLinkingLayer.h
llvm::MemoryBufferRef
Definition
MemoryBufferRef.h:23
llvm::orc::LinkGraphLayer::getExecutionSession
ExecutionSession & getExecutionSession()
Definition
LinkGraphLayer.h:33
llvm::orc::ObjectLinkingLayer::emit
void emit(std::unique_ptr< MaterializationResponsibility > R, std::unique_ptr< MemoryBuffer > O) override
Emit an object file.
Definition
ObjectLinkingLayer.cpp:19
llvm::orc::ObjectLinkingLayer::ID
static char ID
Definition
ObjectLinkingLayer.h:49
llvm::jitlink::createLinkGraphFromObject
LLVM_ABI Expected< std::unique_ptr< LinkGraph > > createLinkGraphFromObject(MemoryBufferRef ObjectBuffer, std::shared_ptr< orc::SymbolStringPool > SSP)
Create a LinkGraph from the given object buffer.
Definition
JITLink.cpp:501
llvm::orc
Definition
AbsoluteSymbols.h:19
Generated on
for LLVM by
1.14.0