[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