[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