From 9f24807aaf0f06cafd2ba12150717c0846d663c0 Mon Sep 17 00:00:00 2001
From: Enrico Guiraud <enrico.guiraud@cern.ch>
Date: Mon, 11 Jun 2018 20:26:19 +0200
Subject: [PATCH] [DF] Further simplify jitting logic

---
 tree/dataframe/inc/ROOT/RDFInterface.hxx      |  8 +++----
 tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx | 10 ++++----
 tree/dataframe/src/RDFInterfaceUtils.cxx      | 23 ++++++++-----------
 3 files changed, 18 insertions(+), 23 deletions(-)

diff --git a/tree/dataframe/inc/ROOT/RDFInterface.hxx b/tree/dataframe/inc/ROOT/RDFInterface.hxx
index 0c31fdf64db..042a8c95179 100644
--- a/tree/dataframe/inc/ROOT/RDFInterface.hxx
+++ b/tree/dataframe/inc/ROOT/RDFInterface.hxx
@@ -221,8 +221,8 @@ public:
                                                  fDataSource);
       const auto jittedFilter = std::make_shared<RDFDetail::RJittedFilter>(df.get(), name);
 
-      RDFInternal::BookFilterJit(jittedFilter.get(), upcastNodeOnHeap, "ROOT::Detail::RDF::RNode", name, expression,
-                                 aliasMap, branches, fCustomColumns, tree, fDataSource, df->GetID());
+      RDFInternal::BookFilterJit(jittedFilter.get(), upcastNodeOnHeap, name, expression, aliasMap, branches,
+                                 fCustomColumns, tree, fDataSource, df->GetID());
 
       df->Book(jittedFilter.get());
       return RInterface<RDFDetail::RJittedFilter, DS_t>(std::move(jittedFilter), fImplWeakPtr, fCustomColumns,
@@ -1803,8 +1803,8 @@ private:
       auto jittedActionOnHeap = RDFInternal::MakeSharedOnHeap(std::make_shared<RDFInternal::RJittedAction>(*lm));
 
       auto toJit = RDFInternal::JitBuildAction(
-         validColumnNames, "ROOT::Detail::RDF::RNode", upcastNodeOnHeap, typeid(std::shared_ptr<ActionResultType>),
-         typeid(ActionTag), rOnHeap, tree, nSlots, fCustomColumns, fDataSource, jittedActionOnHeap, lm->GetID());
+         validColumnNames, upcastNodeOnHeap, typeid(std::shared_ptr<ActionResultType>), typeid(ActionTag), rOnHeap,
+         tree, nSlots, fCustomColumns, fDataSource, jittedActionOnHeap, lm->GetID());
       lm->Book(jittedActionOnHeap->get());
       lm->ToJit(toJit);
       return MakeResultPtr(r, lm, *jittedActionOnHeap);
diff --git a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx
index 44debabb381..42769e1a290 100644
--- a/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx
+++ b/tree/dataframe/inc/ROOT/RDFInterfaceUtils.hxx
@@ -238,8 +238,8 @@ void CheckCustomColumn(std::string_view definedCol, TTree *treePtr, const Column
 
 std::string PrettyPrintAddr(const void *const addr);
 
-void BookFilterJit(RJittedFilter *jittedFilter, void *prevNodeOnHeap, std::string_view prevNodeTypeName,
-                   std::string_view name, std::string_view expression,
+void BookFilterJit(RJittedFilter *jittedFilter, void *prevNodeOnHeap, std::string_view name,
+                   std::string_view expression,
                    const std::map<std::string, std::string> &aliasMap, const ColumnNames_t &branches,
                    const RDFInternal::RBookedCustomColumns &customCols, TTree *tree, RDataSource *ds,
                    unsigned int namespaceID);
@@ -247,9 +247,9 @@ void BookFilterJit(RJittedFilter *jittedFilter, void *prevNodeOnHeap, std::strin
 void BookDefineJit(std::string_view name, std::string_view expression, RLoopManager &lm, RDataSource *ds, const std::shared_ptr<RJittedCustomColumn>& jittedCustomColumn,
                    const RDFInternal::RBookedCustomColumns &customCols);
 
-std::string JitBuildAction(const ColumnNames_t &bl, const std::string &prevNodeTypename, void *prevNode,
-                           const std::type_info &art, const std::type_info &at, void *r, TTree *tree,
-                           const unsigned int nSlots, const RDFInternal::RBookedCustomColumns &customColumns, RDataSource *ds,
+std::string JitBuildAction(const ColumnNames_t &bl, void *prevNode, const std::type_info &art, const std::type_info &at,
+                           void *r, TTree *tree, const unsigned int nSlots,
+                           const RDFInternal::RBookedCustomColumns &customColumns, RDataSource *ds,
                            std::shared_ptr<RJittedAction> *jittedActionOnHeap, unsigned int namespaceID);
 
 // allocate a shared_ptr on the heap, return a reference to it. the user is responsible of deleting the shared_ptr*.
diff --git a/tree/dataframe/src/RDFInterfaceUtils.cxx b/tree/dataframe/src/RDFInterfaceUtils.cxx
index 38158d43832..d2a30590642 100644
--- a/tree/dataframe/src/RDFInterfaceUtils.cxx
+++ b/tree/dataframe/src/RDFInterfaceUtils.cxx
@@ -562,10 +562,10 @@ std::string PrettyPrintAddr(const void *const addr)
 
 // Jit a string filter expression and jit-and-call this->Filter with the appropriate arguments
 // Return pointer to the new functional chain node returned by the call, cast to Long_t
-void BookFilterJit(RJittedFilter *jittedFilter, void *prevNodeOnHeap, std::string_view prevNodeTypeName,
-                   std::string_view name, std::string_view expression,
-                   const std::map<std::string, std::string> &aliasMap, const ColumnNames_t &branches,
-                   const RDFInternal::RBookedCustomColumns &customCols, TTree *tree, RDataSource *ds,
+
+void BookFilterJit(RJittedFilter *jittedFilter, void *prevNodeOnHeap, std::string_view name,
+                   std::string_view expression, const std::map<std::string, std::string> &aliasMap,
+                   const ColumnNames_t &branches, const RDFInternal::RBookedCustomColumns &customCols, TTree *tree, RDataSource *ds,
                    unsigned int namespaceID)
 {
    const auto &dsColumns = ds ? ds->GetColumnNames() : ColumnNames_t{};
@@ -607,11 +607,7 @@ void BookFilterJit(RJittedFilter *jittedFilter, void *prevNodeOnHeap, std::strin
       filterInvocation.seekp(-2, filterInvocation.cur); // remove the last ",
    filterInvocation << "}, \"" << name << "\", "
                     << "reinterpret_cast<ROOT::Detail::RDF::RJittedFilter*>(" << jittedFilterAddr << "), "
-<<<<<<< Updated upstream
-                    << "reinterpret_cast<std::shared_ptr<" << prevNodeTypeName << ">*>(" << prevNodeAddr << "),"
-=======
                     << "reinterpret_cast<std::shared_ptr<ROOT::Detail::RDF::RNodeBase>*>(" << prevNodeAddr << "),"
->>>>>>> Stashed changes
                     << "reinterpret_cast<ROOT::Internal::RDF::RBookedCustomColumns*>(" << columnsOnHeapAddr << ")"
                     << ");";
 
@@ -679,11 +675,10 @@ void BookDefineJit(std::string_view name, std::string_view expression, RLoopMana
 
 // Jit and call something equivalent to "this->BuildAndBook<BranchTypes...>(params...)"
 // (see comments in the body for actual jitted code)
-std::string JitBuildAction(const ColumnNames_t &bl, const std::string &prevNodeTypename, void *prevNode,
-                           const std::type_info &art, const std::type_info &at, void *rOnHeap, TTree *tree,
-                           const unsigned int nSlots, const RDFInternal::RBookedCustomColumns &customCols,
-                           RDataSource *ds, std::shared_ptr<RJittedAction> *jittedActionOnHeap,
-                           unsigned int namespaceID)
+std::string JitBuildAction(const ColumnNames_t &bl, void *prevNode, const std::type_info &art, const std::type_info &at,
+                           void *rOnHeap, TTree *tree, const unsigned int nSlots,
+                           const RDFInternal::RBookedCustomColumns &customCols, RDataSource *ds,
+                           std::shared_ptr<RJittedAction> *jittedActionOnHeap, unsigned int namespaceID)
 {
    auto nBranches = bl.size();
 
@@ -729,7 +724,7 @@ std::string JitBuildAction(const ColumnNames_t &bl, const std::string &prevNodeT
       createAction_str << ", " << colType;
    // on Windows, to prefix the hexadecimal value of a pointer with '0x',
    // one need to write: std::hex << std::showbase << (size_t)pointer
-   createAction_str << ">(reinterpret_cast<std::shared_ptr<" << prevNodeTypename << ">*>(" << PrettyPrintAddr(prevNode)
+   createAction_str << ">(reinterpret_cast<std::shared_ptr<ROOT::Detail::RDF::RNode>*>(" << PrettyPrintAddr(prevNode)
                     << "), {";
    for (auto i = 0u; i < bl.size(); ++i) {
       if (i != 0u)
-- 
GitLab