protected:
- /// @brief Holds a set of objects to be allocated/linked as a unit in the JIT.
+ /// @brief Holds an object to be allocated/linked as a unit in the JIT.
///
- /// An instance of this class will be created for each set of objects added
+ /// An instance of this class will be created for each object added
/// via JITObjectLayer::addObject. Deleting the instance (via
/// removeObject) frees its memory, removing all symbol definitions that
/// had been provided by this instance. Higher level layers are responsible
using LinkedObjectListT = std::list<std::unique_ptr<LinkedObject>>;
public:
- /// @brief Handle to a set of loaded objects.
+ /// @brief Handle to a loaded object.
using ObjHandleT = LinkedObjectListT::iterator;
};
this->ProcessAllSections = ProcessAllSections;
}
- /// @brief Add a set of objects (or archives) that will be treated as a unit
- /// for the purposes of symbol lookup and memory management.
+ /// @brief Add an object to the JIT.
///
- /// @return A handle that can be used to refer to the loaded objects (for
+ /// @return A handle that can be used to refer to the loaded object (for
/// symbol searching, finalization, freeing memory, etc.).
Expected<ObjHandleT> addObject(ObjectPtr Obj,
std::shared_ptr<JITSymbolResolver> Resolver) {
return Handle;
}
- /// @brief Remove the set of objects associated with handle H.
+ /// @brief Remove the object associated with handle H.
///
- /// All memory allocated for the objects will be freed, and the sections and
- /// symbols they provided will no longer be available. No attempt is made to
+ /// All memory allocated for the object will be freed, and the sections and
+ /// symbols it provided will no longer be available. No attempt is made to
/// re-emit the missing symbols, and any use of these symbols (directly or
/// indirectly) will result in undefined behavior. If dependence tracking is
/// required to detect or resolve such issues it should be added at a higher
return nullptr;
}
- /// @brief Search for the given named symbol in the context of the set of
- /// loaded objects represented by the handle H.
- /// @param H The handle for the object set to search in.
+ /// @brief Search for the given named symbol in the context of the loaded
+ /// object represented by the handle H.
+ /// @param H The handle for the object 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.
+ /// given object.
JITSymbol findSymbolIn(ObjHandleT H, StringRef Name,
bool ExportedSymbolsOnly) {
return (*H)->getSymbol(Name, ExportedSymbolsOnly);
}
- /// @brief Map section addresses for the objects associated with the handle H.
+ /// @brief Map section addresses for the object associated with the handle H.
void mapSectionAddress(ObjHandleT H, const void *LocalAddress,
JITTargetAddress TargetAddr) {
(*H)->mapSectionAddress(LocalAddress, TargetAddr);
}
- /// @brief Immediately emit and finalize the object set represented by the
- /// given handle.
- /// @param H Handle for object set to emit/finalize.
+ /// @brief Immediately emit and finalize the object represented by the given
+ /// handle.
+ /// @param H Handle for object to emit/finalize.
Error emitAndFinalize(ObjHandleT H) {
(*H)->finalize();
return Error::success();