[Bf-blender-cvs] [be2358fe617] functions: remove refcounter from data graph

Jacques Lucke noreply at git.blender.org
Thu Sep 26 16:51:43 CEST 2019


Commit: be2358fe6178ff77c15c8480038076fed0faea49
Author: Jacques Lucke
Date:   Thu Sep 26 14:35:42 2019 +0200
Branches: functions
https://developer.blender.org/rBbe2358fe6178ff77c15c8480038076fed0faea49

remove refcounter from data graph

===================================================================

M	source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
M	source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
M	source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
M	source/blender/functions/core/data_graph.hpp
M	source/blender/functions/core/data_graph_builder.cpp
M	source/blender/functions/core/data_graph_builder.hpp
M	source/blender/functions/core/function_builder.cpp
M	source/blender/functions/core/function_builder.hpp
M	source/blender/functions/core/function_graph.cpp
M	source/blender/functions/core/function_graph.hpp
M	source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
M	source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.cpp
M	source/blender/functions/frontends/data_flow_nodes/vtree_data_graph.hpp
M	source/blender/simulations/bparticles/node_frontend.cpp
M	source/blender/simulations/bparticles/particle_function_builder.cpp

===================================================================

diff --git a/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp b/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
index c71ccbd3b65..55bcae3f0d4 100644
--- a/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
+++ b/source/blender/functions/backends/dependencies/fgraph_dependencies.cpp
@@ -5,7 +5,7 @@ namespace FN {
 class FGraphDependencies : public DepsBody {
  private:
   FunctionGraph m_fgraph;
-  SharedDataGraph m_graph;
+  DataGraph &m_graph;
 
  public:
   FGraphDependencies(FunctionGraph &function_graph)
@@ -28,18 +28,18 @@ class FGraphDependencies : public DepsBody {
       return parent_builder.get_input_ids(m_fgraph.inputs().index(socket));
     }
     else if (socket.is_input()) {
-      return this->find_deps_and_outputs(m_graph->origin_of_input(socket), parent_builder);
+      return this->find_deps_and_outputs(m_graph.origin_of_input(socket), parent_builder);
     }
     else {
-      uint node_id = m_graph->node_id_of_output(socket);
-      SharedFunction &fn = m_graph->function_of_node(node_id);
+      uint node_id = m_graph.node_id_of_output(socket);
+      SharedFunction &fn = m_graph.function_of_node(node_id);
       if (fn->has_body<DepsBody>()) {
         MultiMap<uint, ID *> input_ids;
 
         for (uint i = 0; i < fn->input_amount(); i++) {
           input_ids.add_multiple_new(
               i,
-              this->find_deps_and_outputs(m_graph->socket_of_node_input(node_id, i),
+              this->find_deps_and_outputs(m_graph.socket_of_node_input(node_id, i),
                                           parent_builder));
         }
 
@@ -47,10 +47,10 @@ class FGraphDependencies : public DepsBody {
         FunctionDepsBuilder builder(input_ids, output_ids, parent_builder.dependency_components());
         DepsBody &body = fn->body<DepsBody>();
         body.build_deps(builder);
-        return output_ids.lookup_default(m_graph->index_of_output(socket));
+        return output_ids.lookup_default(m_graph.index_of_output(socket));
       }
       else {
-        for (auto input_socket : m_graph->inputs_of_node(node_id)) {
+        for (auto input_socket : m_graph.inputs_of_node(node_id)) {
           this->find_deps_and_outputs(input_socket, parent_builder);
         }
         return {};
diff --git a/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp b/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
index 6229c30c0e2..03958aa00e6 100644
--- a/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
+++ b/source/blender/functions/backends/llvm/fgraph_ir_generation.cpp
@@ -7,14 +7,14 @@ namespace FN {
 class BuildGraphIR : public LLVMBuildIRBody {
  private:
   FunctionGraph m_fgraph;
-  DataGraph *m_graph;
+  DataGraph &m_graph;
   Set<DataSocket> m_required_sockets;
 
  public:
-  BuildGraphIR(FunctionGraph &fgraph) : m_fgraph(fgraph), m_graph(fgraph.graph().ptr())
+  BuildGraphIR(FunctionGraph &fgraph) : m_fgraph(fgraph), m_graph(fgraph.graph())
   {
-    for (uint node_id : m_graph->node_ids()) {
-      SharedFunction &fn = m_fgraph.graph()->function_of_node(node_id);
+    for (uint node_id : m_graph.node_ids()) {
+      SharedFunction &fn = m_graph.function_of_node(node_id);
       if (fn->has_body<LLVMBuildIRBody>()) {
         continue;
       }
@@ -61,14 +61,14 @@ class BuildGraphIR : public LLVMBuildIRBody {
       /* do nothing */
     }
     else if (socket.is_input()) {
-      DataSocket origin = m_graph->origin_of_input(socket);
+      DataSocket origin = m_graph.origin_of_input(socket);
       this->generate_for_socket(builder, interface, settings, origin, values, forwarded_sockets);
       this->forward_output_if_necessary(builder, origin, values, forwarded_sockets);
     }
     else if (socket.is_output()) {
-      uint node_id = m_graph->node_id_of_output(socket);
+      uint node_id = m_graph.node_id_of_output(socket);
       Vector<llvm::Value *> input_values;
-      for (DataSocket input_socket : m_graph->inputs_of_node(node_id)) {
+      for (DataSocket input_socket : m_graph.inputs_of_node(node_id)) {
         this->generate_for_socket(
             builder, interface, settings, input_socket, values, forwarded_sockets);
         input_values.append(values.lookup(input_socket));
@@ -78,7 +78,7 @@ class BuildGraphIR : public LLVMBuildIRBody {
           builder, interface, settings, node_id, input_values);
 
       uint index = 0;
-      for (DataSocket output_socket : m_graph->outputs_of_node(node_id)) {
+      for (DataSocket output_socket : m_graph.outputs_of_node(node_id)) {
         values.add(output_socket, output_values[index]);
         this->forward_output_if_necessary(builder, output_socket, values, forwarded_sockets);
         index++;
@@ -106,13 +106,13 @@ class BuildGraphIR : public LLVMBuildIRBody {
                       Map<DataSocket, llvm::Value *> &values) const
   {
     llvm::Value *value_to_forward = values.lookup(output);
-    Type *type = m_graph->type_of_socket(output);
+    Type *type = m_graph.type_of_socket(output);
     LLVMTypeInfo &type_info = type->extension<LLVMTypeInfo>();
 
     Vector<DataSocket> targets;
-    for (DataSocket target : m_graph->targets_of_output(output)) {
+    for (DataSocket target : m_graph.targets_of_output(output)) {
       if (m_required_sockets.contains(target) && !values.contains(target)) {
-        BLI_assert(type == m_graph->type_of_socket(target));
+        BLI_assert(type == m_graph.type_of_socket(target));
         targets.append(target);
       }
     }
@@ -139,7 +139,7 @@ class BuildGraphIR : public LLVMBuildIRBody {
                                       uint node_id,
                                       Vector<llvm::Value *> &input_values) const
   {
-    SharedFunction &fn = m_graph->function_of_node(node_id);
+    SharedFunction &fn = m_graph.function_of_node(node_id);
     auto &body = fn->body<LLVMBuildIRBody>();
     bool setup_stack = settings.maintain_stack() && body.prepare_execution_context();
 
@@ -147,7 +147,7 @@ class BuildGraphIR : public LLVMBuildIRBody {
       this->push_stack_frames_for_node(builder, interface.context_ptr(), node_id);
     }
 
-    Vector<llvm::Value *> output_values(m_graph->outputs_of_node(node_id).size());
+    Vector<llvm::Value *> output_values(m_graph.outputs_of_node(node_id).size());
     CodeInterface sub_interface(
         input_values, output_values, interface.context_ptr(), interface.function_ir_cache());
 
@@ -165,7 +165,7 @@ class BuildGraphIR : public LLVMBuildIRBody {
                                   uint node_id) const
   {
     BLI_assert(context_ptr);
-    SourceInfo *source_info = m_graph->source_info_of_node(node_id);
+    SourceInfo *source_info = m_graph.source_info_of_node(node_id);
 
     llvm::Value *node_info_frame_buf = builder.CreateAllocaBytes_AnyPtr(
         sizeof(SourceInfoStackFrame));
@@ -177,7 +177,7 @@ class BuildGraphIR : public LLVMBuildIRBody {
                                node_info_frame_buf,
                                builder.getAnyPtr(source_info),
                                function_info_frame_buf,
-                               builder.getAnyPtr(m_graph->name_ptr_of_node(node_id))},
+                               builder.getAnyPtr(m_graph.name_ptr_of_node(node_id))},
                               builder.getVoidTy(),
                               "Push stack frames");
   }
diff --git a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
index 5f90c2835e7..26a6b86342f 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
@@ -7,10 +7,10 @@ namespace FN {
 
 using BLI::VectorAdaptor;
 
-static void try_ensure_tuple_call_bodies(SharedDataGraph &graph)
+static void try_ensure_tuple_call_bodies(DataGraph &graph)
 {
-  for (uint node_id : graph->node_ids()) {
-    SharedFunction &fn = graph->function_of_node(node_id);
+  for (uint node_id : graph.node_ids()) {
+    SharedFunction &fn = graph.function_of_node(node_id);
     if (fn->has_body<TupleCallBody>()) {
       continue;
     }
@@ -28,7 +28,7 @@ static void try_ensure_tuple_call_bodies(SharedDataGraph &graph)
 class ExecuteFGraph : public TupleCallBody {
  private:
   FunctionGraph m_fgraph;
-  DataGraph *m_graph;
+  DataGraph &m_graph;
 
   struct NodeInfo {
     TupleCallBodyBase *body;
@@ -64,10 +64,10 @@ class ExecuteFGraph : public TupleCallBody {
   uint m_outputs_init_buffer_size = 0;
 
  public:
-  ExecuteFGraph(FunctionGraph &fgraph) : m_fgraph(fgraph), m_graph(fgraph.graph().ptr())
+  ExecuteFGraph(FunctionGraph &fgraph) : m_fgraph(fgraph), m_graph(fgraph.graph())
   {
-    for (uint node_id : m_graph->node_ids()) {
-      SharedFunction &fn = m_graph->function_of_node(node_id);
+    for (uint node_id : m_graph.node_ids()) {
+      SharedFunction &fn = m_graph.function_of_node(node_id);
 
       TupleCallBodyBase *body = nullptr;
       bool is_lazy_body = false;
@@ -162,13 +162,13 @@ class ExecuteFGraph : public TupleCallBody {
     bool *node_input_inits_ptr(uint node_id)
     {
       return (bool *)POINTER_OFFSET(m_input_inits,
-                                    m_parent.m_graph->first_input_id_of_node(node_id));
+                                    m_parent.m_graph.first_input_id_of_node(node_id));
     }
 
     bool *node_output_inits_ptr(uint node_id)
     {
       return (bool *)POINTER_OFFSET(m_output_inits,
-                                    m_parent.m_graph->first_output_id_of_node(node_id));
+                                    m_parent.m_graph.first_output_id_of_node(node_id));
     }
 
     bool is_input_initialized(uint input_socket_id)
@@ -278,7 +278,7 @@ class ExecuteFGraph : public TupleCallBody {
           sockets_to_compute.pop();
         }
         else {
-          DataSocket origin = m_graph->origin_of_input(socket);
+          DataSocket origin = m_graph.origin_of_input(socket);
           if (storage.is_output_initialized(origin.id())) {
             this->forward_output(origin.id(), storage, fn_out);
             sockets_to_compute.pop();
@@ -293,7 +293,7 @@ class Exec

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list