003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/include/llvm/ExecutionEngine/Orc
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
include
/
llvm
/
ExecutionEngine
/
Orc
/
📁
..
📄
CompileOnDemandLayer.h
(27.24 KB)
📄
CompileUtils.h
(3.29 KB)
📄
Core.h
(55.04 KB)
📄
DebugUtils.h
(4.59 KB)
📄
ExecutionUtils.h
(14.17 KB)
📄
GlobalMappingLayer.h
(4.02 KB)
📄
IRCompileLayer.h
(5.87 KB)
📄
IRTransformLayer.h
(4.85 KB)
📄
IndirectionUtils.h
(20.75 KB)
📄
JITTargetMachineBuilder.h
(5.01 KB)
📄
LLJIT.h
(15.66 KB)
📄
LambdaResolver.h
(3.16 KB)
📄
Layer.h
(6.29 KB)
📄
LazyEmittingLayer.h
(10.08 KB)
📄
LazyReexports.h
(6.64 KB)
📄
Legacy.h
(7.73 KB)
📄
MachOPlatform.h
(5.27 KB)
📄
Mangling.h
(2.31 KB)
📄
NullResolver.h
(1.47 KB)
📄
ObjectLinkingLayer.h
(7.25 KB)
📄
ObjectTransformLayer.h
(5.02 KB)
📄
OrcABISupport.h
(14.54 KB)
📄
OrcError.h
(2.04 KB)
📄
OrcRemoteTargetClient.h
(25.06 KB)
📄
OrcRemoteTargetRPCAPI.h
(11.49 KB)
📄
OrcRemoteTargetServer.h
(17.19 KB)
📁
RPC
📄
RTDyldObjectLinkingLayer.h
(18.95 KB)
📄
RemoteObjectLayer.h
(19.84 KB)
📄
SpeculateAnalyses.h
(2.87 KB)
📄
Speculation.h
(7.31 KB)
📄
SymbolStringPool.h
(5.39 KB)
📄
ThreadSafeModule.h
(5.53 KB)
Editing: ObjectTransformLayer.h
//===- ObjectTransformLayer.h - Run all objects through functor -*- C++ -*-===// // // 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 // //===----------------------------------------------------------------------===// // // Run all objects passed in through a user supplied functor. // //===----------------------------------------------------------------------===// #ifndef LLVM_EXECUTIONENGINE_ORC_OBJECTTRANSFORMLAYER_H #define LLVM_EXECUTIONENGINE_ORC_OBJECTTRANSFORMLAYER_H #include "llvm/ExecutionEngine/JITSymbol.h" #include "llvm/ExecutionEngine/Orc/Layer.h" #include <algorithm> #include <memory> #include <string> namespace llvm { namespace orc { class ObjectTransformLayer : public ObjectLayer { public: using TransformFunction = std::function<Expected<std::unique_ptr<MemoryBuffer>>( std::unique_ptr<MemoryBuffer>)>; ObjectTransformLayer(ExecutionSession &ES, ObjectLayer &BaseLayer, TransformFunction Transform = TransformFunction()); void emit(MaterializationResponsibility R, std::unique_ptr<MemoryBuffer> O) override; void setTransform(TransformFunction Transform) { this->Transform = std::move(Transform); } private: ObjectLayer &BaseLayer; TransformFunction Transform; }; /// Object mutating layer. /// /// This layer accepts sets of ObjectFiles (via addObject). It /// immediately applies the user supplied functor to each object, then adds /// the set of transformed objects to the layer below. template <typename BaseLayerT, typename TransformFtor> class LegacyObjectTransformLayer { public: /// Construct an ObjectTransformLayer with the given BaseLayer LLVM_ATTRIBUTE_DEPRECATED( LegacyObjectTransformLayer(BaseLayerT &BaseLayer, TransformFtor Transform = TransformFtor()), "ORCv1 layers (layers with the 'Legacy' prefix) are deprecated. Please " "use " "the ORCv2 ObjectTransformLayer instead"); /// Legacy layer constructor with deprecation acknowledgement. LegacyObjectTransformLayer(ORCv1DeprecationAcknowledgement, BaseLayerT &BaseLayer, TransformFtor Transform = TransformFtor()) : BaseLayer(BaseLayer), Transform(std::move(Transform)) {} /// Apply the transform functor to each object in the object set, then /// add the resulting set of objects to the base layer, along with the /// memory manager and symbol resolver. /// /// @return A handle for the added objects. template <typename ObjectPtr> Error addObject(VModuleKey K, ObjectPtr Obj) { return BaseLayer.addObject(std::move(K), Transform(std::move(Obj))); } /// Remove the object set associated with the VModuleKey K. Error removeObject(VModuleKey K) { return BaseLayer.removeObject(K); } /// Search for the given named symbol. /// @param Name The name of the symbol to search for. /// @param ExportedSymbolsOnly If true, search only for exported symbols. /// @return A handle for the given named symbol, if it exists. JITSymbol findSymbol(const std::string &Name, bool ExportedSymbolsOnly) { return BaseLayer.findSymbol(Name, ExportedSymbolsOnly); } /// Get the address of the given symbol in the context of the set of /// objects represented by the VModuleKey K. This call is forwarded to /// the base layer's implementation. /// @param K The VModuleKey associated with the object set to search in. /// @param Name The name of the symbol to search for. /// @param ExportedSymbolsOnly If true, search only for exported symbols. /// @return A handle for the given named symbol, if it is found in the /// given object set. JITSymbol findSymbolIn(VModuleKey K, const std::string &Name, bool ExportedSymbolsOnly) { return BaseLayer.findSymbolIn(K, Name, ExportedSymbolsOnly); } /// Immediately emit and finalize the object set represented by the /// given VModuleKey K. Error emitAndFinalize(VModuleKey K) { return BaseLayer.emitAndFinalize(K); } /// Map section addresses for the objects associated with the /// VModuleKey K. void mapSectionAddress(VModuleKey K, const void *LocalAddress, JITTargetAddress TargetAddr) { BaseLayer.mapSectionAddress(K, LocalAddress, TargetAddr); } /// Access the transform functor directly. TransformFtor &getTransform() { return Transform; } /// Access the mumate functor directly. const TransformFtor &getTransform() const { return Transform; } private: BaseLayerT &BaseLayer; TransformFtor Transform; }; template <typename BaseLayerT, typename TransformFtor> LegacyObjectTransformLayer<BaseLayerT, TransformFtor>:: LegacyObjectTransformLayer(BaseLayerT &BaseLayer, TransformFtor Transform) : BaseLayer(BaseLayer), Transform(std::move(Transform)) {} } // end namespace orc } // end namespace llvm #endif // LLVM_EXECUTIONENGINE_ORC_OBJECTTRANSFORMLAYER_H
Upload File
Create Folder