[Bf-blender-cvs] [5b0d883e508] functions: remove refcount from TupleMeta
Jacques Lucke
noreply at git.blender.org
Thu Sep 26 16:51:45 CEST 2019
Commit: 5b0d883e50816338e9d01d9178382c94a46e4635
Author: Jacques Lucke
Date: Thu Sep 26 15:02:07 2019 +0200
Branches: functions
https://developer.blender.org/rB5b0d883e50816338e9d01d9178382c94a46e4635
remove refcount from TupleMeta
===================================================================
M source/blender/functions/backends/cpp/tuple.hpp
M source/blender/functions/backends/llvm/ir_for_tuple_call.cpp
M source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
M source/blender/functions/backends/tuple_call/tuple_call-c.cpp
M source/blender/functions/backends/tuple_call/tuple_call.cpp
M source/blender/functions/backends/tuple_call/tuple_call.hpp
M source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.cpp
M source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.hpp
M source/blender/functions/functions/auto_vectorization.cpp
M source/blender/simulations/bparticles/node_frontend.cpp
===================================================================
diff --git a/source/blender/functions/backends/cpp/tuple.hpp b/source/blender/functions/backends/cpp/tuple.hpp
index cd06478bc46..e99bbb55511 100644
--- a/source/blender/functions/backends/cpp/tuple.hpp
+++ b/source/blender/functions/backends/cpp/tuple.hpp
@@ -35,7 +35,7 @@
namespace FN {
-class TupleMeta : public RefCounter {
+class TupleMeta {
private:
Vector<Type *> m_types;
Vector<CPPTypeInfo *> m_type_info;
@@ -136,8 +136,6 @@ class TupleMeta : public RefCounter {
#endif
};
-using SharedTupleMeta = AutoRefCount<TupleMeta>;
-
class Tuple {
public:
Tuple(TupleMeta &meta) : m_meta(&meta)
@@ -145,16 +143,9 @@ class Tuple {
m_initialized = (bool *)MEM_calloc_arrayN(m_meta->size(), sizeof(bool), __func__);
m_data = MEM_mallocN(m_meta->size_of_data(), __func__);
m_owns_mem = true;
- m_owns_meta = false;
m_run_destructors = true;
}
- Tuple(SharedTupleMeta meta) : Tuple(*meta.ptr())
- {
- meta->incref();
- m_owns_meta = true;
- }
-
Tuple(TupleMeta &meta,
void *data,
bool *initialized,
@@ -167,7 +158,6 @@ class Tuple {
m_data = data;
m_initialized = initialized;
m_owns_mem = false;
- m_owns_meta = false;
m_run_destructors = run_destructors;
if (!was_initialized) {
this->set_all_uninitialized();
@@ -200,9 +190,6 @@ class Tuple {
MEM_freeN(m_data);
MEM_freeN(m_initialized);
}
- if (m_owns_meta) {
- m_meta->decref();
- }
}
/**
@@ -576,7 +563,6 @@ class Tuple {
void *m_data;
bool *m_initialized;
uint8_t m_owns_mem : 1;
- uint8_t m_owns_meta : 1;
uint8_t m_run_destructors : 1;
TupleMeta *m_meta;
};
diff --git a/source/blender/functions/backends/llvm/ir_for_tuple_call.cpp b/source/blender/functions/backends/llvm/ir_for_tuple_call.cpp
index 6d88786d85f..b6cb2fcac31 100644
--- a/source/blender/functions/backends/llvm/ir_for_tuple_call.cpp
+++ b/source/blender/functions/backends/llvm/ir_for_tuple_call.cpp
@@ -8,11 +8,11 @@ static void run_TupleCallBody(TupleCallBody *body,
void *data_out,
ExecutionContext *ctx)
{
- bool *initialized_in = (bool *)alloca(body->meta_in()->size());
- bool *initialized_out = (bool *)alloca(body->meta_out()->size());
+ bool *initialized_in = (bool *)alloca(body->meta_in().size());
+ bool *initialized_out = (bool *)alloca(body->meta_out().size());
- Tuple fn_in(body->meta_in().ref(), data_in, initialized_in, false);
- Tuple fn_out(body->meta_out().ref(), data_out, initialized_out, false);
+ Tuple fn_in(body->meta_in(), data_in, initialized_in, false);
+ Tuple fn_out(body->meta_out(), data_out, initialized_out, false);
fn_in.set_all_initialized();
@@ -140,16 +140,16 @@ class TupleCallLLVM : public LLVMBuildIRBody {
/* Allocate temporary stack buffer for tuple input and output. */
auto &meta_in = m_tuple_call.meta_in();
auto &meta_out = m_tuple_call.meta_out();
- llvm::Value *tuple_in_data_ptr = builder.CreateAllocaBytes_BytePtr(meta_in->size_of_data());
+ llvm::Value *tuple_in_data_ptr = builder.CreateAllocaBytes_BytePtr(meta_in.size_of_data());
tuple_in_data_ptr->setName("tuple_in_data");
- llvm::Value *tuple_out_data_ptr = builder.CreateAllocaBytes_BytePtr(meta_out->size_of_data());
+ llvm::Value *tuple_out_data_ptr = builder.CreateAllocaBytes_BytePtr(meta_out.size_of_data());
tuple_out_data_ptr->setName("tuple_out_data");
/* Write input values into buffer. */
for (uint i = 0; i < input_type_infos.size(); i++) {
llvm::Value *arg = function->arg_begin() + i;
llvm::Value *store_at_addr = builder.CreateConstGEP1_32(tuple_in_data_ptr,
- meta_in->offsets()[i]);
+ meta_in.offsets()[i]);
input_type_infos[i]->build_store_ir__relocate(builder, arg, store_at_addr);
}
@@ -173,7 +173,7 @@ class TupleCallLLVM : public LLVMBuildIRBody {
llvm::Value *output = llvm::UndefValue::get(output_type);
for (uint i = 0; i < output_type_infos.size(); i++) {
llvm::Value *load_from_addr = builder.CreateConstGEP1_32(tuple_out_data_ptr,
- meta_out->offsets()[i]);
+ meta_out.offsets()[i]);
llvm::Value *out = output_type_infos[i]->build_load_ir__relocate(builder, load_from_addr);
output = builder.CreateInsertValue(output, out, i);
}
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 26a6b86342f..abe9479aa64 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
@@ -102,19 +102,19 @@ class ExecuteFGraph : public TupleCallBody {
}
}
else {
- SharedTupleMeta &meta_in = body->meta_in();
+ TupleMeta &meta_in = body->meta_in();
for (uint i = 0; i < fn->input_amount(); i++) {
m_input_info.append(SocketInfo(
- *meta_in->type_infos()[i], m_inputs_buffer_size + meta_in->offsets()[i], false));
+ *meta_in.type_infos()[i], m_inputs_buffer_size + meta_in.offsets()[i], false));
}
- m_inputs_buffer_size += meta_in->size_of_data();
+ m_inputs_buffer_size += meta_in.size_of_data();
- SharedTupleMeta &meta_out = body->meta_out();
+ TupleMeta &meta_out = body->meta_out();
for (uint i = 0; i < fn->output_amount(); i++) {
m_output_info.append(SocketInfo(
- *meta_out->type_infos()[i], m_outputs_buffer_size + meta_out->offsets()[i], false));
+ *meta_out.type_infos()[i], m_outputs_buffer_size + meta_out.offsets()[i], false));
}
- m_outputs_buffer_size += meta_out->size_of_data();
+ m_outputs_buffer_size += meta_out.size_of_data();
}
}
@@ -245,12 +245,12 @@ class ExecuteFGraph : public TupleCallBody {
};
#define SETUP_SUB_TUPLES(node_id, body, body_in, body_out) \
- Tuple body_in(body->meta_in().ref(), \
+ Tuple body_in(body->meta_in(), \
storage.node_input_values_ptr(node_id), \
storage.node_input_inits_ptr(node_id), \
true, \
false); \
- Tuple body_out(body->meta_out().ref(), \
+ Tuple body_out(body->meta_out(), \
storage.node_output_values_ptr(node_id), \
storage.node_output_inits_ptr(node_id), \
true, \
diff --git a/source/blender/functions/backends/tuple_call/tuple_call-c.cpp b/source/blender/functions/backends/tuple_call/tuple_call-c.cpp
index 90b48a41df0..7c0441205cb 100644
--- a/source/blender/functions/backends/tuple_call/tuple_call-c.cpp
+++ b/source/blender/functions/backends/tuple_call/tuple_call-c.cpp
@@ -29,20 +29,20 @@ FnTupleCallBody FN_tuple_call_get(FnFunction fn_c)
FnTuple FN_tuple_for_input(FnTupleCallBody body_c)
{
- auto tuple = new Tuple(unwrap(body_c)->meta_in().ref());
+ auto tuple = new Tuple(unwrap(body_c)->meta_in());
return wrap(tuple);
}
FnTuple FN_tuple_for_output(FnTupleCallBody body_c)
{
- auto tuple = new Tuple(unwrap(body_c)->meta_out().ref());
+ auto tuple = new Tuple(unwrap(body_c)->meta_out());
return wrap(tuple);
}
uint fn_tuple_stack_prepare_size(FnTupleCallBody body_c)
{
TupleCallBody *body = unwrap(body_c);
- return body->meta_in()->size_of_full_tuple() + body->meta_out()->size_of_full_tuple();
+ return body->meta_in().size_of_full_tuple() + body->meta_out().size_of_full_tuple();
}
void fn_tuple_prepare_stack(FnTupleCallBody body_c,
@@ -53,9 +53,9 @@ void fn_tuple_prepare_stack(FnTupleCallBody body_c,
TupleCallBody *body = unwrap(body_c);
char *buf = (char *)buffer;
char *buf_in = buf + 0;
- char *buf_out = buf + body->meta_in()->size_of_full_tuple();
- Tuple::ConstructInBuffer(body->meta_in().ref(), buf_in);
- Tuple::ConstructInBuffer(body->meta_out().ref(), buf_out);
+ char *buf_out = buf + body->meta_in().size_of_full_tuple();
+ Tuple::ConstructInBuffer(body->meta_in(), buf_in);
+ Tuple::ConstructInBuffer(body->meta_out(), buf_out);
*fn_in_c = wrap((Tuple *)buf_in);
*fn_out_c = wrap((Tuple *)buf_out);
}
diff --git a/source/blender/functions/backends/tuple_call/tuple_call.cpp b/source/blender/functions/backends/tuple_call/tuple_call.cpp
index f042904aef0..82013ccc7d4 100644
--- a/source/blender/functions/backends/tuple_call/tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/tuple_call.cpp
@@ -9,8 +9,8 @@ void TupleCallBodyBase::init_defaults(Tuple &fn_in) const
void TupleCallBodyBase::owner_init_post()
{
- m_meta_in = SharedTupleMeta::New(this->owner()->input_types());
- m_meta_out = SharedTupleMeta::New(this->owner()->output_types());
+ m_meta_in = TupleMeta(this->owner()->input_types());
+ m_meta_out = TupleMeta(this->owner()->output_types());
}
uint LazyInTupleCallBody::user_data_size() const
diff --git a/source/blender/functions/backends/tuple_call/tuple_call.hpp b/source/blender/functions/backends/tuple_call/tuple_call.hpp
index ed0f7567743..196626e0ef2 100644
--- a/source/blender/functions/backends/tuple_call/tuple_call.hpp
+++ b/source/blender/functions/backends/tuple_call/tuple_call.hpp
@@ -13,8 +13,8 @@ namespace FN {
class TupleCallBodyBase : public FunctionBody {
private:
- SharedTupleMeta m_meta_in;
- SharedTupleMeta m_meta_out;
+ TupleMeta m_meta_in;
+ TupleMeta m_meta_out;
protected:
void owner_init_post() override;
@@ -27,7 +27,7 @@ class TupleCallBodyBase : public FunctionBody {
/**
* Get the metadata for tuples that this function can take as input.
*/
- SharedTupleMeta &meta_in()
+ TupleMeta &meta_in()
{
return m_meta_in;
}
@@ -35,7 +35,7 @@ class TupleCallBodyBase : public FunctionBody {
/**
* Get the metadata for tuples that this function can output.
*/
- SharedTupleMeta &meta_out()
+ TupleMeta &meta_out()
{
return m_meta_out;
}
@@ -251,8 +251,8 @@ class
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list