[Bf-blender-cvs] [6ac4a72b28c] functions: free cached vectorized functions

Jacques Lucke noreply at git.blender.org
Tue Jun 4 18:14:50 CEST 2019


Commit: 6ac4a72b28c8d5d37239d197c9e00289525c7a29
Author: Jacques Lucke
Date:   Tue Jun 4 18:05:15 2019 +0200
Branches: functions
https://developer.blender.org/rB6ac4a72b28c8d5d37239d197c9e00289525c7a29

free cached vectorized functions

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

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 0daa1976989..f06a469c870 100644
--- a/source/blender/functions/functions/auto_vectorization.cpp
+++ b/source/blender/functions/functions/auto_vectorization.cpp
@@ -5,6 +5,8 @@
 #include "FN_tuple_call.hpp"
 #include "FN_llvm.hpp"
 
+#include "BLI_lazy_init.hpp"
+
 namespace FN {
 namespace Functions {
 
@@ -478,12 +480,19 @@ struct AutoVectorizationInput {
   }
 };
 
+using VectorizeCacheMap = SmallMap<AutoVectorizationInput, SharedFunction>;
+
+LAZY_INIT_REF_STATIC__NO_ARG(VectorizeCacheMap, get_vectorized_function_cache)
+{
+  return VectorizeCacheMap{};
+}
+
 SharedFunction to_vectorized_function__with_cache(
     SharedFunction &original_fn,
     ArrayRef<bool> vectorized_inputs_mask,
     ArrayRef<SharedFunction> empty_list_value_builders)
 {
-  static SmallMap<AutoVectorizationInput, SharedFunction> cache;
+  static VectorizeCacheMap &cache = get_vectorized_function_cache();
 
   AutoVectorizationInput cache_key(original_fn, vectorized_inputs_mask, empty_list_value_builders);
   return cache.lookup_ref_or_insert_func(cache_key,



More information about the Bf-blender-cvs mailing list