[Orc] Add a new JITSymbol constructor to build a symbol from an existing address.
[oota-llvm.git] / include / llvm / ExecutionEngine / Orc / JITSymbol.h
index c02975730ba6b7773233ac037aa9cad8bdbe17b1..c0b627e60b9beb6ed0d68f31265845329b819a2f 100644 (file)
@@ -28,10 +28,25 @@ class JITSymbol {
 public:
   typedef std::function<TargetAddress()> GetAddressFtor;
 
+  /// @brief Create a 'null' symbol that represents failure to find a symbol
+  ///        definition.
   JITSymbol(std::nullptr_t) : CachedAddr(0) {}
 
+  /// @brief Create a symbol for a definition with a known address.
+  JITSymbol(TargetAddress Addr)
+    : CachedAddr(Addr) {}
+
+  /// @brief Create a symbol for a definition that doesn't have a known address
+  ///        yet.
+  /// @param GetAddress A functor to materialize a definition (fixing the
+  ///        address) on demand.
+  ///
+  ///   This constructor allows a JIT layer to provide a reference to a symbol
+  /// definition without actually materializing the definition up front. The
+  /// user can materialize the definition at any time by calling the getAddress
+  /// method.
   JITSymbol(GetAddressFtor GetAddress)
-      : CachedAddr(0), GetAddress(std::move(GetAddress)) {}
+    : CachedAddr(0), GetAddress(std::move(GetAddress)) {}
 
   /// @brief Returns true if the symbol exists, false otherwise.
   explicit operator bool() const { return CachedAddr || GetAddress; }