[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