Commit: e80d9a53916991ec488325f59bff9d4244afe355 Author: Jacques Lucke Date: Sun Apr 28 18:56:16 2019 +0200 Branches: functions https://developer.blender.org/rBe80d9a53916991ec488325f59bff9d4244afe355
destruct unused values as early as possible =================================================================== M source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp =================================================================== 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 1830514ba22..cfdf627d0e2 100644 --- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp +++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp @@ -318,6 +318,7 @@ class ExecuteFGraph : public TupleCallBody { ctx.stack().pop(); if (state.is_done()) { + this->destruct_remaining_node_inputs(node_id, storage); this->copy_outputs_to_final_output_if_necessary(node_id, storage, fn_out); sockets_to_compute.pop(); } @@ -344,11 +345,10 @@ class ExecuteFGraph : public TupleCallBody { ctx.stack().pop(); if (state.is_done()) { + this->destruct_remaining_node_inputs(node_id, storage); this->copy_outputs_to_final_output_if_necessary(node_id, storage, fn_out); sockets_to_compute.pop(); lazy_states.pop(); - - // TODO: destruct inputs } else { for (uint requested_input_index : state.requested_inputs()) { @@ -381,6 +381,7 @@ class ExecuteFGraph : public TupleCallBody { body->call__setup_stack(body_in, body_out, ctx, source_info); BLI_assert(body_out.all_initialized()); + this->destruct_remaining_node_inputs(node_id, storage); this->copy_outputs_to_final_output_if_necessary(node_id, storage, fn_out); sockets_to_compute.pop(); } @@ -402,6 +403,17 @@ class ExecuteFGraph : public TupleCallBody { } } + void destruct_remaining_node_inputs(uint node_id, SocketValueStorage &storage) const + { + for (uint input_id : m_graph->input_ids_of_node(node_id)) { + if (storage.is_input_initialized(input_id)) { + CPPTypeInfo *type_info = m_input_info[input_id].type; + type_info->destruct_type(storage.input_value_ptr(input_id)); + storage.set_input_initialized(input_id, false); + } + } + } + void forward_output(uint output_id, SocketValueStorage &storage, Tuple &fn_out) const { BLI_assert(storage.is_output_initialized(output_id)); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs