[Bf-blender-cvs] [d9c7df24921] functions: put current loop iteration on stack

Jacques Lucke noreply at git.blender.org
Mon May 13 10:16:45 CEST 2019


Commit: d9c7df2492198063f79eebcbdde604ddd36c1d20
Author: Jacques Lucke
Date:   Thu May 9 13:02:41 2019 +0200
Branches: functions
https://developer.blender.org/rBd9c7df2492198063f79eebcbdde604ddd36c1d20

put current loop iteration on stack

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

M	source/blender/functions/functions/auto_vectorization.cpp

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

diff --git a/source/blender/functions/functions/auto_vectorization.cpp b/source/blender/functions/functions/auto_vectorization.cpp
index 7840e805652..aadc0441677 100644
--- a/source/blender/functions/functions/auto_vectorization.cpp
+++ b/source/blender/functions/functions/auto_vectorization.cpp
@@ -8,6 +8,16 @@
 namespace FN {
 namespace Functions {
 
+class IterationStackFrame : public StackFrame {
+ public:
+  uint m_iteration;
+
+  std::string to_string() const override
+  {
+    return "Iteration: " + std::to_string(m_iteration);
+  }
+};
+
 class AutoVectorizationGen : public LLVMBuildIRBody {
  private:
   SharedFunction m_main;
@@ -253,6 +263,11 @@ class AutoVectorization : public TupleCallBody {
 
     FN_TUPLE_CALL_ALLOC_TUPLES(m_main_body, main_in, main_out);
 
+    IterationStackFrame iteration_frame;
+    TextStackFrame function_name_frame(m_main->name().c_str());
+    ctx.stack().push(&iteration_frame);
+    ctx.stack().push(&function_name_frame);
+
     for (uint iteration = 0; iteration < max_length; iteration++) {
       uint list_index = 0;
       for (uint i = 0; i < m_input_is_list.size(); i++) {
@@ -266,12 +281,16 @@ class AutoVectorization : public TupleCallBody {
         }
       }
 
-      m_main_body->call__setup_stack(main_in, main_out, ctx);
+      iteration_frame.m_iteration = iteration;
+      m_main_body->call(main_in, main_out, ctx);
 
       for (uint i = 0; i < m_main->signature().outputs().size(); i++) {
         this->append_to_output(main_out, fn_out, i, ctx);
       }
     }
+
+    ctx.stack().pop();
+    ctx.stack().pop();
   }
 
  private:



More information about the Bf-blender-cvs mailing list