@@ -34,8 +34,8 @@ limitations under the License.
3434#include " absl/synchronization/notification.h"
3535#include " nanobind/nanobind.h"
3636#include " nanobind/stl/shared_ptr.h" // IWYU pragma: keep
37- #include " nanobind/stl/string.h" // IWYU pragma: keep
38- #include " nanobind/stl/vector.h" // IWYU pragma: keep
37+ #include " nanobind/stl/string.h" // IWYU pragma: keep
38+ #include " nanobind/stl/vector.h" // IWYU pragma: keep
3939#include " xla/pjrt/lru_cache.h"
4040#include " xla/tsl/platform/logging.h"
4141
@@ -309,16 +309,7 @@ class WeakrefLRUCache : public std::enable_shared_from_this<WeakrefLRUCache> {
309309 result.currsize = lru_list_.Size ();
310310 return result;
311311 }
312- void Clear () {
313- total_queries_ = misses_ = 0 ;
314- std::vector<std::shared_ptr<Cache>> deferred_deletes;
315- deferred_deletes.reserve (entries_.size ());
316- for (auto & entry : entries_) {
317- deferred_deletes.push_back (std::move (entry.second .cache ));
318- }
319- entries_.clear ();
320- deferred_deletes.clear ();
321- }
312+ void Clear ();
322313
323314 nb::callable cache_context_fn_;
324315 nb::callable fn_;
@@ -361,6 +352,17 @@ class WeakrefLRUCache : public std::enable_shared_from_this<WeakrefLRUCache> {
361352 static PyType_Slot slots_[];
362353};
363354
355+ void WeakrefLRUCache::Clear () {
356+ total_queries_ = misses_ = 0 ;
357+ std::vector<std::pair<WeakrefCacheKey, WeakrefCacheValue>> deferred_deletes;
358+ deferred_deletes.reserve (entries_.size ());
359+ for (auto & entry : entries_) {
360+ deferred_deletes.emplace_back (entry.first , std::move (entry.second ));
361+ }
362+ entries_.clear ();
363+ deferred_deletes.clear ();
364+ }
365+
364366/* static */ PyType_Slot WeakrefLRUCache::slots_[] = {
365367 {Py_tp_traverse, (void *)WeakrefLRUCache::tp_traverse},
366368 {Py_tp_clear, (void *)WeakrefLRUCache::tp_clear},
0 commit comments