From 559f76aab653dffe4f146e05ddbb7a4b0b4cef72 Mon Sep 17 00:00:00 2001
From: Vassil Vassilev <v.g.vassilev@gmail.com>
Date: Sat, 16 Mar 2019 11:36:13 +0200
Subject: [PATCH] [cling] Constify.

---
 .../lib/Interpreter/IncrementalExecutor.cpp   | 23 ++++++++-------
 .../lib/Interpreter/IncrementalExecutor.h     | 28 ++++++++++---------
 2 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
index e0c06cc6130..09c69ac0300 100644
--- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.cpp
@@ -148,8 +148,8 @@ void unresolvedSymbol()
   // throw exception instead?
 }
 
-void* IncrementalExecutor::HandleMissingFunction(const std::string& mangled_name)
-{
+void*
+IncrementalExecutor::HandleMissingFunction(const std::string& mangled_name) const {
   // Not found in the map, add the symbol in the list of unresolved symbols
   if (m_unresolvedSymbols.insert(mangled_name).second) {
     //cling::errs() << "IncrementalExecutor: use of undefined symbol '"
@@ -159,10 +159,9 @@ void* IncrementalExecutor::HandleMissingFunction(const std::string& mangled_name
   return utils::FunctionToVoidPtr(&unresolvedSymbol);
 }
 
-void* IncrementalExecutor::NotifyLazyFunctionCreators(const std::string& mangled_name)
-{
-  for (std::vector<LazyFunctionCreatorFunc_t>::iterator it
-         = m_lazyFuncCreator.begin(), et = m_lazyFuncCreator.end();
+void*
+IncrementalExecutor::NotifyLazyFunctionCreators(const std::string& mangled_name) const {
+  for (auto it = m_lazyFuncCreator.begin(), et = m_lazyFuncCreator.end();
        it != et; ++it) {
     void* ret = (void*)((LazyFunctionCreatorFunc_t)*it)(mangled_name);
     if (ret)
@@ -208,7 +207,7 @@ freeCallersOfUnresolvedSymbols(llvm::SmallVectorImpl<llvm::Function*>&
 #endif
 
 IncrementalExecutor::ExecutionResult
-IncrementalExecutor::runStaticInitializersOnce(const Transaction& T) {
+IncrementalExecutor::runStaticInitializersOnce(const Transaction& T) const {
   auto m = T.getModule();
   assert(m.get() && "Module must not be null");
 
@@ -326,7 +325,7 @@ static void flushOutBuffers() {
 
 IncrementalExecutor::ExecutionResult
 IncrementalExecutor::executeWrapper(llvm::StringRef function,
-                                    Value* returnValue/* =0*/) {
+                                    Value* returnValue/* =0*/) const {
   // Set the value to cling::invalid.
   if (returnValue)
     *returnValue = Value();
@@ -351,12 +350,12 @@ IncrementalExecutor::installLazyFunctionCreator(LazyFunctionCreatorFunc_t fp)
 
 bool
 IncrementalExecutor::addSymbol(const char* Name,  void* Addr,
-                               bool Jit) {
+                               bool Jit) const {
   return m_JIT->lookupSymbol(Name, Addr, Jit).second;
 }
 
 void* IncrementalExecutor::getAddressOfGlobal(llvm::StringRef symbolName,
-                                              bool* fromJIT /*=0*/) {
+                                              bool* fromJIT /*=0*/) const {
   // Return a symbol's address, and whether it was jitted.
   void* address = m_JIT->lookupSymbol(symbolName).first;
 
@@ -371,7 +370,7 @@ void* IncrementalExecutor::getAddressOfGlobal(llvm::StringRef symbolName,
 }
 
 void*
-IncrementalExecutor::getPointerToGlobalFromJIT(const llvm::GlobalValue& GV) {
+IncrementalExecutor::getPointerToGlobalFromJIT(const llvm::GlobalValue& GV) const {
   // Get the function / variable pointer referenced by GV.
 
   // We don't care whether something was unresolved before.
@@ -386,7 +385,7 @@ IncrementalExecutor::getPointerToGlobalFromJIT(const llvm::GlobalValue& GV) {
 }
 
 bool IncrementalExecutor::diagnoseUnresolvedSymbols(llvm::StringRef trigger,
-                                                    llvm::StringRef title) {
+                                                  llvm::StringRef title) const {
   if (m_unresolvedSymbols.empty())
     return false;
 
diff --git a/interpreter/cling/lib/Interpreter/IncrementalExecutor.h b/interpreter/cling/lib/Interpreter/IncrementalExecutor.h
index 47ac1d96595..3122744aa35 100644
--- a/interpreter/cling/lib/Interpreter/IncrementalExecutor.h
+++ b/interpreter/cling/lib/Interpreter/IncrementalExecutor.h
@@ -133,7 +133,7 @@ namespace cling {
 
     ///\brief Set of the symbols that the JIT couldn't resolve.
     ///
-    std::unordered_set<std::string> m_unresolvedSymbols;
+    mutable std::unordered_set<std::string> m_unresolvedSymbols;
 
 #if 0 // See FIXME in IncrementalExecutor.cpp
     ///\brief The diagnostics engine, printing out issues coming from the
@@ -164,7 +164,7 @@ namespace cling {
     void installLazyFunctionCreator(LazyFunctionCreatorFunc_t fp);
 
     ///\brief Unload a set of JIT symbols.
-    bool unloadModule(const std::shared_ptr<llvm::Module>& M) {
+    bool unloadModule(const std::shared_ptr<llvm::Module>& M) const {
       // FIXME: Propagate the error in a more verbose way.
       if (auto Err = m_JIT->removeModule(M))
         return false;
@@ -172,7 +172,7 @@ namespace cling {
     }
 
     ///\brief Run the static initializers of all modules collected to far.
-    ExecutionResult runStaticInitializersOnce(const Transaction& T);
+    ExecutionResult runStaticInitializersOnce(const Transaction& T) const;
 
     ///\brief Runs all destructors bound to the given transaction and removes
     /// them from the list.
@@ -182,7 +182,7 @@ namespace cling {
 
     ///\brief Runs a wrapper function.
     ExecutionResult executeWrapper(llvm::StringRef function,
-                                   Value* returnValue = 0);
+                                   Value* returnValue = 0) const;
     ///\brief Adds a symbol (function) to the execution engine.
     ///
     /// Allows runtime declaration of a function passing its pointer for being
@@ -194,13 +194,14 @@ namespace cling {
     /// @param[in] JIT - Add to the JIT injected symbol table
     /// @returns true if the symbol is successfully registered, false otherwise.
     ///
-    bool addSymbol(const char* Name, void* Address, bool JIT = false);
+    bool addSymbol(const char* Name, void* Address, bool JIT = false) const;
 
     ///\brief Emit a llvm::Module to the JIT.
     ///
     /// @param[in] module - The module to pass to the execution engine.
     /// @param[in] optLevel - The optimization level to be used.
-    void emitModule(const std::shared_ptr<llvm::Module>& module, int optLevel) {
+    void
+    emitModule(const std::shared_ptr<llvm::Module>& module, int optLevel) const {
       if (m_BackendPasses)
         m_BackendPasses->runOnModule(*module, optLevel);
 
@@ -223,14 +224,15 @@ namespace cling {
     ///\param[in]  mangledName - the globa's name
     ///\param[out] fromJIT - whether the symbol was JITted.
     ///
-    void* getAddressOfGlobal(llvm::StringRef mangledName, bool* fromJIT = 0);
+    void*
+    getAddressOfGlobal(llvm::StringRef mangledName, bool* fromJIT = 0) const;
 
     ///\brief Return the address of a global from the JIT (as
     /// opposed to dynamic libraries). Forces the emission of the symbol if
     /// it has not happened yet.
     ///
     ///param[in] GV - global value for which the address will be returned.
-    void* getPointerToGlobalFromJIT(const llvm::GlobalValue& GV);
+    void* getPointerToGlobalFromJIT(const llvm::GlobalValue& GV) const;
 
     ///\brief Keep track of the entities whose dtor we need to call.
     ///
@@ -239,19 +241,19 @@ namespace cling {
 
     ///\brief Try to resolve a symbol through our LazyFunctionCreators;
     /// print an error message if that fails.
-    void* NotifyLazyFunctionCreators(const std::string&);
+    void* NotifyLazyFunctionCreators(const std::string&) const;
 
   private:
     ///\brief Report and empty m_unresolvedSymbols.
     ///\return true if m_unresolvedSymbols was non-empty.
     bool diagnoseUnresolvedSymbols(llvm::StringRef trigger,
-                                   llvm::StringRef title = llvm::StringRef());
+                               llvm::StringRef title = llvm::StringRef()) const;
 
     ///\brief Remember that the symbol could not be resolved by the JIT.
-    void* HandleMissingFunction(const std::string& symbol);
+    void* HandleMissingFunction(const std::string& symbol) const;
 
     ///\brief Runs an initializer function.
-    ExecutionResult executeInit(llvm::StringRef function) {
+    ExecutionResult executeInit(llvm::StringRef function) const {
       typedef void (*InitFun_t)();
       InitFun_t fun;
       ExecutionResult res = jitInitOrWrapper(function, fun);
@@ -263,7 +265,7 @@ namespace cling {
     }
 
     template <class T>
-    ExecutionResult jitInitOrWrapper(llvm::StringRef funcname, T& fun) {
+    ExecutionResult jitInitOrWrapper(llvm::StringRef funcname, T& fun) const {
       fun = utils::UIntToFunctionPtr<T>(m_JIT->getSymbolAddress(funcname,
                                                               false /*dlsym*/));
 
-- 
GitLab