[Bf-blender-cvs] [149e6aa58cb] functions: don't use SmallVector in tuple

Jacques Lucke noreply at git.blender.org
Sun Mar 3 13:53:41 CET 2019


Commit: 149e6aa58cba389ef150f146e3f9b9dcaaff6112
Author: Jacques Lucke
Date:   Sun Mar 3 11:36:00 2019 +0100
Branches: functions
https://developer.blender.org/rB149e6aa58cba389ef150f146e3f9b9dcaaff6112

don't use SmallVector in tuple

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

M	source/blender/functions/backends/tuple_call/tuple.hpp

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

diff --git a/source/blender/functions/backends/tuple_call/tuple.hpp b/source/blender/functions/backends/tuple_call/tuple.hpp
index 8b11581712e..2adb6cdde3d 100644
--- a/source/blender/functions/backends/tuple_call/tuple.hpp
+++ b/source/blender/functions/backends/tuple_call/tuple.hpp
@@ -63,22 +63,19 @@ namespace FN {
 		Tuple(SharedTupleMeta meta)
 			: m_meta(std::move(meta))
 		{
-			m_initialized = SmallVector<bool>(m_meta->element_amount());
-			m_initialized.fill(false);
-
+			m_initialized = (bool *)std::calloc(m_meta->element_amount(), sizeof(bool));
 			m_data = std::malloc(m_meta->total_size());
-			m_owns_data = true;
+			m_owns_mem = true;
 		}
 
-		Tuple(SharedTupleMeta meta, void *data, bool take_ownership)
+		Tuple(SharedTupleMeta meta, void *data, bool *initialized, bool take_ownership)
 			: m_meta(std::move(meta))
 		{
-			m_initialized = SmallVector<bool>(m_meta->element_amount());
-			m_initialized.fill(false);
-
 			BLI_assert(data != nullptr);
+			BLI_assert(initialized != nullptr);
 			m_data = data;
-			m_owns_data = take_ownership;
+			m_initialized = initialized;
+			m_owns_mem = take_ownership;
 		}
 
 		Tuple(SmallTypeVector types)
@@ -94,8 +91,9 @@ namespace FN {
 					m_meta->type_infos()[i]->destruct_type(this->element_ptr(i));
 				}
 			}
-			if (m_owns_data) {
+			if (m_owns_mem) {
 				std::free(m_data);
+				std::free(m_initialized);
 			}
 		}
 
@@ -184,8 +182,8 @@ namespace FN {
 
 		bool all_initialized() const
 		{
-			for (bool initialized : m_initialized) {
-				if (!initialized) {
+			for (uint i = 0; i < m_meta->element_amount(); i++) {
+				if (!m_initialized[i]) {
 					return false;
 				}
 			}
@@ -194,7 +192,9 @@ namespace FN {
 
 		void set_all_initialized()
 		{
-			m_initialized.fill(true);
+			for (uint i = 0; i < m_meta->element_amount(); i++) {
+				m_initialized[i] = true;
+			}
 		}
 
 	private:
@@ -203,9 +203,9 @@ namespace FN {
 			return (void *)((char *)m_data + m_meta->offsets()[index]);
 		}
 
-		SmallVector<bool> m_initialized;
 		void *m_data;
-		bool m_owns_data;
+		bool *m_initialized;
+		bool m_owns_mem;
 		SharedTupleMeta m_meta;
 	};



More information about the Bf-blender-cvs mailing list