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