[Bf-blender-cvs] [b287de4e68a] functions: deduplicate stack setup code
Jacques Lucke
noreply at git.blender.org
Sun Apr 28 21:15:58 CEST 2019
Commit: b287de4e68a259fc69d72f02024738e61153d55f
Author: Jacques Lucke
Date: Sun Apr 28 19:20:24 2019 +0200
Branches: functions
https://developer.blender.org/rBb287de4e68a259fc69d72f02024738e61153d55f
deduplicate stack setup code
===================================================================
M source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
M source/blender/functions/backends/tuple_call/tuple_call.hpp
===================================================================
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 5bbe7a9f444..3bfaeb13215 100644
--- a/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
+++ b/source/blender/functions/backends/tuple_call/fgraph_tuple_call.cpp
@@ -315,10 +315,8 @@ class ExecuteFGraph : public TupleCallBody {
SETUP_SUB_TUPLES(node_id, body, body_in, body_out);
- SourceInfoStackFrame frame(m_graph->source_info_of_node(node_id));
- ctx.stack().push(&frame);
- body->call(body_in, body_out, ctx, state);
- ctx.stack().pop();
+ SourceInfo *source_info = m_graph->source_info_of_node(node_id);
+ body->call__setup_stack(body_in, body_out, ctx, state, source_info);
if (state.is_done()) {
this->destruct_remaining_node_inputs(node_id, storage);
@@ -338,10 +336,8 @@ class ExecuteFGraph : public TupleCallBody {
SETUP_SUB_TUPLES(node_id, body, body_in, body_out);
- SourceInfoStackFrame frame(m_graph->source_info_of_node(node_id));
- ctx.stack().push(&frame);
- body->call(body_in, body_out, ctx, state);
- ctx.stack().pop();
+ SourceInfo *source_info = m_graph->source_info_of_node(node_id);
+ body->call__setup_stack(body_in, body_out, ctx, state, source_info);
if (state.is_done()) {
this->destruct_remaining_node_inputs(node_id, storage);
diff --git a/source/blender/functions/backends/tuple_call/tuple_call.hpp b/source/blender/functions/backends/tuple_call/tuple_call.hpp
index 0fb383e0f90..50c43cf7501 100644
--- a/source/blender/functions/backends/tuple_call/tuple_call.hpp
+++ b/source/blender/functions/backends/tuple_call/tuple_call.hpp
@@ -129,6 +129,38 @@ class LazyInTupleCallBody : public TupleCallBodyBase {
Tuple &fn_out,
ExecutionContext &ctx,
LazyState &state) const = 0;
+
+ inline void call__setup_stack(Tuple &fn_in,
+ Tuple &fn_out,
+ ExecutionContext &ctx,
+ LazyState &state) const
+ {
+ TextStackFrame frame(this->owner()->name().c_str());
+ ctx.stack().push(&frame);
+ this->call(fn_in, fn_out, ctx, state);
+ ctx.stack().pop();
+ }
+
+ inline void call__setup_stack(Tuple &fn_in,
+ Tuple &fn_out,
+ ExecutionContext &ctx,
+ LazyState &state,
+ StackFrame &extra_frame) const
+ {
+ ctx.stack().push(&extra_frame);
+ this->call__setup_stack(fn_in, fn_out, ctx, state);
+ ctx.stack().pop();
+ }
+
+ inline void call__setup_stack(Tuple &fn_in,
+ Tuple &fn_out,
+ ExecutionContext &ctx,
+ LazyState &state,
+ SourceInfo *source_info) const
+ {
+ SourceInfoStackFrame frame(source_info);
+ this->call__setup_stack(fn_in, fn_out, ctx, state, frame);
+ }
};
} /* namespace FN */
More information about the Bf-blender-cvs
mailing list