forked from OSchip/llvm-project
Break out OrcError and RPC
Summary: When createing an ORC remote JIT target the current library split forces the target process to link large portions of LLVM (Core, Execution Engine, JITLink, Object, MC, Passes, RuntimeDyld, Support, Target, and TransformUtils). This occurs because the ORC RPC interfaces rely on the static globals the ORC Error types require, which starts a cycle of pulling in more and more. This patch breaks the ORC RPC Error implementations out into an "OrcError" library which only depends on LLVM Support. It also pulls the ORC RPC headers into their own subdirectory. With this patch code can include the Orc/RPC/*.h headers and will only incur link dependencies on LLVMOrcError and LLVMSupport. Reviewers: lhames Reviewed By: lhames Subscribers: mgorny, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68732
This commit is contained in:
parent
cbb3104b1c
commit
a34680a33e
llvm
examples/Kaleidoscope/BuildingAJIT/Chapter5
include/llvm/ExecutionEngine/Orc
lib/ExecutionEngine
tools/lli
unittests/ExecutionEngine/Orc
|
@ -13,7 +13,7 @@
|
|||
#ifndef LLVM_TOOLS_LLI_REMOTEJITUTILS_H
|
||||
#define LLVM_TOOLS_LLI_REMOTEJITUTILS_H
|
||||
|
||||
#include "llvm/ExecutionEngine/Orc/RawByteChannel.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RawByteChannel.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
#include <cassert>
|
||||
#include <cerrno>
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
#define LLVM_EXECUTIONENGINE_ORC_ORCREMOTETARGETRPCAPI_H
|
||||
|
||||
#include "llvm/ExecutionEngine/JITSymbol.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPCUtils.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RawByteChannel.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RPCUtils.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RawByteChannel.h"
|
||||
|
||||
namespace llvm {
|
||||
namespace orc {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//===- llvm/ExecutionEngine/Orc/RPCSerialization.h --------------*- C++ -*-===//
|
||||
//===- llvm/ExecutionEngine/Orc/RPC/RPCSerialization.h --------------*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
|
@ -9,7 +9,7 @@
|
|||
#ifndef LLVM_EXECUTIONENGINE_ORC_RPCSERIALIZATION_H
|
||||
#define LLVM_EXECUTIONENGINE_ORC_RPCSERIALIZATION_H
|
||||
|
||||
#include "OrcError.h"
|
||||
#include "llvm/ExecutionEngine/Orc/OrcError.h"
|
||||
#include "llvm/Support/thread.h"
|
||||
#include <map>
|
||||
#include <mutex>
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ExecutionEngine/Orc/OrcError.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPCSerialization.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RPCSerialization.h"
|
||||
#include "llvm/Support/MSVCErrorWorkarounds.h"
|
||||
|
||||
#include <future>
|
|
@ -1,4 +1,4 @@
|
|||
//===- llvm/ExecutionEngine/Orc/RawByteChannel.h ----------------*- C++ -*-===//
|
||||
//===- llvm/ExecutionEngine/Orc/RPC/RawByteChannel.h ----------------*- C++ -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
|
@ -10,7 +10,7 @@
|
|||
#define LLVM_EXECUTIONENGINE_ORC_RAWBYTECHANNEL_H
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPCSerialization.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RPCSerialization.h"
|
||||
#include "llvm/Support/Endian.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
#include <cstdint>
|
|
@ -21,6 +21,7 @@ endif()
|
|||
add_subdirectory(Interpreter)
|
||||
add_subdirectory(JITLink)
|
||||
add_subdirectory(MCJIT)
|
||||
add_subdirectory(OrcError)
|
||||
add_subdirectory(Orc)
|
||||
add_subdirectory(RuntimeDyld)
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
[common]
|
||||
subdirectories = Interpreter MCJIT JITLink RuntimeDyld IntelJITEvents
|
||||
OProfileJIT Orc PerfJITEvents
|
||||
OProfileJIT Orc OrcError PerfJITEvents
|
||||
|
||||
[component_0]
|
||||
type = Library
|
||||
|
|
|
@ -16,9 +16,7 @@ add_llvm_library(LLVMOrcJIT
|
|||
ObjectTransformLayer.cpp
|
||||
OrcABISupport.cpp
|
||||
OrcCBindings.cpp
|
||||
OrcError.cpp
|
||||
OrcMCJITReplacement.cpp
|
||||
RPCUtils.cpp
|
||||
RTDyldObjectLinkingLayer.cpp
|
||||
ThreadSafeModule.cpp
|
||||
Speculation.cpp
|
||||
|
|
|
@ -18,5 +18,5 @@
|
|||
type = Library
|
||||
name = OrcJIT
|
||||
parent = ExecutionEngine
|
||||
required_libraries = Core ExecutionEngine JITLink Object MC Passes RuntimeDyld
|
||||
Support Target TransformUtils
|
||||
required_libraries = Core ExecutionEngine JITLink Object OrcError MC Passes
|
||||
RuntimeDyld Support Target TransformUtils
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
add_llvm_library(LLVMOrcError
|
||||
OrcError.cpp
|
||||
RPCError.cpp
|
||||
ADDITIONAL_HEADER_DIRS
|
||||
${LLVM_MAIN_INCLUDE_DIR}/llvm/ExecutionEngine/Orc
|
||||
)
|
|
@ -0,0 +1,21 @@
|
|||
;===- ./lib/ExecutionEngine/OrcError/LLVMBuild.txt -------------*- Conf -*--===;
|
||||
;
|
||||
; Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
; See https://llvm.org/LICENSE.txt for license information.
|
||||
; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
;
|
||||
;===------------------------------------------------------------------------===;
|
||||
;
|
||||
; This is an LLVMBuild description file for the components in this subdirectory.
|
||||
;
|
||||
; For more information on the LLVMBuild system, please see:
|
||||
;
|
||||
; http://llvm.org/docs/LLVMBuild.html
|
||||
;
|
||||
;===------------------------------------------------------------------------===;
|
||||
|
||||
[component_0]
|
||||
type = Library
|
||||
name = OrcError
|
||||
parent = ExecutionEngine
|
||||
required_libraries = Support
|
|
@ -1,4 +1,4 @@
|
|||
//===--------------- RPCUtils.cpp - RPCUtils implementation ---------------===//
|
||||
//===--------------- RPCError.cpp - RPCERror implementation ---------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
|
@ -6,11 +6,11 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// RPCUtils implementation.
|
||||
// RPC Error type implmentations.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ExecutionEngine/Orc/RPCUtils.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RPCUtils.h"
|
||||
|
||||
char llvm::orc::rpc::RPCFatalError::ID = 0;
|
||||
char llvm::orc::rpc::ConnectionClosed::ID = 0;
|
|
@ -13,7 +13,7 @@
|
|||
#ifndef LLVM_TOOLS_LLI_REMOTEJITUTILS_H
|
||||
#define LLVM_TOOLS_LLI_REMOTEJITUTILS_H
|
||||
|
||||
#include "llvm/ExecutionEngine/Orc/RawByteChannel.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RawByteChannel.h"
|
||||
#include "llvm/ExecutionEngine/RTDyldMemoryManager.h"
|
||||
#include <mutex>
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#ifndef LLVM_UNITTESTS_EXECUTIONENGINE_ORC_QUEUECHANNEL_H
|
||||
#define LLVM_UNITTESTS_EXECUTIONENGINE_ORC_QUEUECHANNEL_H
|
||||
|
||||
#include "llvm/ExecutionEngine/Orc/RawByteChannel.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RawByteChannel.h"
|
||||
#include "llvm/Support/Error.h"
|
||||
|
||||
#include <atomic>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ExecutionEngine/Orc/RPCUtils.h"
|
||||
#include "llvm/ExecutionEngine/Orc/RPC/RPCUtils.h"
|
||||
#include "QueueChannel.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
|
|
Loading…
Reference in New Issue