Cleanup: avoid generating some functions in all translation units
Every translation unit that included the modified headers generated some extra code, even though it was not used. This adds unnecessary compile time overhead and is annoying when investigating the generated assembly.
This commit is contained in:
parent
4aeb6add6e
commit
b4563ab2df
|
@ -28,10 +28,12 @@
|
|||
|
||||
namespace blender::threading {
|
||||
|
||||
#ifndef WITH_TBB
|
||||
namespace enumerable_thread_specific_utils {
|
||||
inline std::atomic<int> next_id = 0;
|
||||
inline thread_local int thread_id = next_id.fetch_add(1, std::memory_order_relaxed);
|
||||
} // namespace enumerable_thread_specific_utils
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This is mainly a wrapper for `tbb::enumerable_thread_specific`. The wrapper is needed because we
|
||||
|
|
|
@ -87,8 +87,7 @@ class FieldNode {
|
|||
|
||||
public:
|
||||
FieldNode(FieldNodeType node_type);
|
||||
|
||||
virtual ~FieldNode() = default;
|
||||
virtual ~FieldNode();
|
||||
|
||||
virtual const CPPType &output_cpp_type(int output_index) const = 0;
|
||||
|
||||
|
@ -230,6 +229,7 @@ class FieldOperation : public FieldNode {
|
|||
public:
|
||||
FieldOperation(std::shared_ptr<const MultiFunction> function, Vector<GField> inputs = {});
|
||||
FieldOperation(const MultiFunction &function, Vector<GField> inputs = {});
|
||||
~FieldOperation();
|
||||
|
||||
Span<GField> inputs() const;
|
||||
const MultiFunction &multi_function() const;
|
||||
|
@ -259,6 +259,7 @@ class FieldInput : public FieldNode {
|
|||
|
||||
public:
|
||||
FieldInput(const CPPType &type, std::string debug_name = "");
|
||||
~FieldInput();
|
||||
|
||||
/**
|
||||
* Get the value of this specific input based on the given context. The returned virtual array,
|
||||
|
|
|
@ -570,6 +570,13 @@ bool IndexFieldInput::is_equal_to(const fn::FieldNode &other) const
|
|||
return dynamic_cast<const IndexFieldInput *>(&other) != nullptr;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* FieldNode.
|
||||
*/
|
||||
|
||||
/* Avoid generating the destructor in every translation unit. */
|
||||
FieldNode::~FieldNode() = default;
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* FieldOperation.
|
||||
*/
|
||||
|
@ -581,6 +588,9 @@ FieldOperation::FieldOperation(std::shared_ptr<const MultiFunction> function,
|
|||
owned_function_ = std::move(function);
|
||||
}
|
||||
|
||||
/* Avoid generating the destructor in every translation unit. */
|
||||
FieldOperation::~FieldOperation() = default;
|
||||
|
||||
/**
|
||||
* Returns the field inputs used by all the provided fields.
|
||||
* This tries to reuse an existing #FieldInputs whenever possible to avoid copying it.
|
||||
|
@ -655,6 +665,9 @@ FieldInput::FieldInput(const CPPType &type, std::string debug_name)
|
|||
field_inputs_ = std::move(field_inputs);
|
||||
}
|
||||
|
||||
/* Avoid generating the destructor in every translation unit. */
|
||||
FieldInput::~FieldInput() = default;
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* FieldConstant.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue