/src/immer/immer/detail/rbts/position.hpp
Line | Count | Source |
1 | | // |
2 | | // immer: immutable data structures for C++ |
3 | | // Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente |
4 | | // |
5 | | // This software is distributed under the Boost Software License, Version 1.0. |
6 | | // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt |
7 | | // |
8 | | |
9 | | #pragma once |
10 | | |
11 | | #include <immer/config.hpp> |
12 | | #include <immer/detail/rbts/bits.hpp> |
13 | | |
14 | | #include <cassert> |
15 | | #include <type_traits> |
16 | | #include <utility> |
17 | | |
18 | | namespace immer { |
19 | | namespace detail { |
20 | | namespace rbts { |
21 | | |
22 | | template <typename Pos> |
23 | | constexpr auto bits = std::decay_t<Pos>::node_t::bits; |
24 | | |
25 | | template <typename Pos> |
26 | | constexpr auto bits_leaf = std::decay_t<Pos>::node_t::bits_leaf; |
27 | | |
28 | | template <typename Pos> |
29 | | using node_type = typename std::decay<Pos>::type::node_t; |
30 | | |
31 | | template <typename Pos> |
32 | | using edit_type = typename std::decay<Pos>::type::node_t::edit_t; |
33 | | |
34 | | template <typename NodeT> |
35 | | struct empty_regular_pos |
36 | | { |
37 | | using node_t = NodeT; |
38 | | node_t* node_; |
39 | | |
40 | 0 | count_t count() const { return 0; } |
41 | 439k | node_t* node() const { return node_; } |
42 | | shift_t shift() const { return 0; } |
43 | | size_t size() const { return 0; } |
44 | | |
45 | | template <typename Visitor, typename... Args> |
46 | | void each(Visitor, Args&&...) |
47 | 0 | { |
48 | 0 | } |
49 | | template <typename Visitor, typename... Args> |
50 | | bool each_pred(Visitor, Args&&...) |
51 | | { |
52 | | return true; |
53 | | } |
54 | | |
55 | | template <typename Visitor, typename... Args> |
56 | | decltype(auto) visit(Visitor v, Args&&... args) |
57 | 439k | { |
58 | 439k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); |
59 | 439k | } |
60 | | }; |
61 | | |
62 | | template <typename NodeT> |
63 | | empty_regular_pos<NodeT> make_empty_regular_pos(NodeT* node) |
64 | 439k | { |
65 | 439k | return {node}; |
66 | 439k | } |
67 | | |
68 | | template <typename NodeT> |
69 | | struct empty_leaf_pos |
70 | | { |
71 | | using node_t = NodeT; |
72 | | node_t* node_; |
73 | | |
74 | 10.1k | count_t count() const { return 0; } |
75 | 384k | node_t* node() const { return node_; } |
76 | 10.1k | shift_t shift() const { return 0; } |
77 | | size_t size() const { return 0; } |
78 | | |
79 | | template <typename Visitor, typename... Args> |
80 | | decltype(auto) visit(Visitor v, Args&&... args) |
81 | 384k | { |
82 | 384k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); |
83 | 384k | } |
84 | | }; |
85 | | |
86 | | template <typename NodeT> |
87 | | empty_leaf_pos<NodeT> make_empty_leaf_pos(NodeT* node) |
88 | 384k | { |
89 | 384k | assert(node); |
90 | 384k | return {node}; |
91 | 384k | } |
92 | | |
93 | | template <typename NodeT> |
94 | | struct leaf_pos |
95 | | { |
96 | | static constexpr auto B = NodeT::bits; |
97 | | static constexpr auto BL = NodeT::bits_leaf; |
98 | | |
99 | | using node_t = NodeT; |
100 | | node_t* node_; |
101 | | size_t size_; |
102 | | |
103 | 331k | count_t count() const { return index(size_ - 1) + 1; } |
104 | 176k | node_t* node() const { return node_; } |
105 | | size_t size() const { return size_; } |
106 | 160k | shift_t shift() const { return 0; } |
107 | 342k | count_t index(size_t idx) const { return idx & mask<BL>; } |
108 | | count_t subindex(size_t idx) const { return idx; } |
109 | | |
110 | | template <typename Visitor, typename... Args> |
111 | | decltype(auto) visit(Visitor v, Args&&... args) |
112 | 13.5k | { |
113 | 13.5k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); |
114 | 13.5k | } decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor) Line | Count | Source | 112 | 2.32k | { | 113 | 2.32k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 2.32k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 112 | 707 | { | 113 | 707 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 707 | } |
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 112 | 1.67k | { | 113 | 1.67k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 1.67k | } |
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 112 | 432 | { | 113 | 432 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 432 | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 112 | 1.37k | { | 113 | 1.37k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 1.37k | } |
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 112 | 798 | { | 113 | 798 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 798 | } |
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 112 | 2.52k | { | 113 | 2.52k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 2.52k | } |
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 112 | 2.99k | { | 113 | 2.99k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 2.99k | } |
decltype(auto) immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 112 | 714 | { | 113 | 714 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 114 | 714 | } |
|
115 | | }; |
116 | | |
117 | | template <typename NodeT> |
118 | | leaf_pos<NodeT> make_leaf_pos(NodeT* node, size_t size) |
119 | 173k | { |
120 | 173k | assert(node); |
121 | 173k | assert(size > 0); |
122 | 173k | return {node, size}; |
123 | 173k | } |
124 | | |
125 | | template <typename NodeT> |
126 | | struct leaf_sub_pos |
127 | | { |
128 | | static constexpr auto B = NodeT::bits; |
129 | | static constexpr auto BL = NodeT::bits_leaf; |
130 | | |
131 | | using node_t = NodeT; |
132 | | node_t* node_; |
133 | | count_t count_; |
134 | | |
135 | 2.19M | count_t count() const { return count_; } |
136 | 1.78M | node_t* node() const { return node_; } |
137 | 940k | size_t size() const { return count_; } |
138 | 622k | shift_t shift() const { return 0; } |
139 | 37.5k | count_t index(size_t idx) const { return idx & mask<BL>; } |
140 | | count_t subindex(size_t idx) const { return idx; } |
141 | | |
142 | | template <typename Visitor, typename... Args> |
143 | | decltype(auto) visit(Visitor v, Args&&... args) |
144 | 2.71M | { |
145 | 2.71M | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); |
146 | 2.71M | } decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor) Line | Count | Source | 144 | 518k | { | 145 | 518k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 518k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 144 | 512 | { | 145 | 512 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 512 | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 144 | 3.32k | { | 145 | 3.32k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 3.32k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 144 | 734 | { | 145 | 734 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 734 | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 144 | 2.76k | { | 145 | 2.76k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 2.76k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 144 | 11.9k | { | 145 | 11.9k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 11.9k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 144 | 940k | { | 145 | 940k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 940k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 332k | { | 145 | 332k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 332k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 577 | { | 145 | 577 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 577 | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 783 | { | 145 | 783 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 783 | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 1.53k | { | 145 | 1.53k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 1.53k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 1.53k | { | 145 | 1.53k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 1.53k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 3.50k | { | 145 | 3.50k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 3.50k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 5.29k | { | 145 | 5.29k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 5.29k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 38.8k | { | 145 | 38.8k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 38.8k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 38.8k | { | 145 | 38.8k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 38.8k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 144 | 3.54k | { | 145 | 3.54k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 3.54k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 144 | 2.41k | { | 145 | 2.41k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 2.41k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 144 | 1.61k | { | 145 | 1.61k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 1.61k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 144 | 4.54k | { | 145 | 4.54k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 4.54k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 144 | 6.21k | { | 145 | 6.21k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 6.21k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 144 | 608k | { | 145 | 608k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 608k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 940 | { | 145 | 940 | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 940 | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 2.58k | { | 145 | 2.58k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 2.58k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 144 | 3.71k | { | 145 | 3.71k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 3.71k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 3.71k | { | 145 | 3.71k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 3.71k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 9.84k | { | 145 | 9.84k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 9.84k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 36.7k | { | 145 | 36.7k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 36.7k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 144 | 66.4k | { | 145 | 66.4k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 66.4k | } |
decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 144 | 66.4k | { | 145 | 66.4k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 146 | 66.4k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) |
147 | | }; |
148 | | |
149 | | template <typename NodeT> |
150 | | leaf_sub_pos<NodeT> make_leaf_sub_pos(NodeT* node, count_t count) |
151 | 2.71M | { |
152 | 2.71M | assert(node); |
153 | 2.71M | assert(count <= branches<NodeT::bits_leaf>); |
154 | 2.71M | return {node, count}; |
155 | 2.71M | } |
156 | | |
157 | | template <typename NodeT> |
158 | | struct leaf_descent_pos |
159 | | { |
160 | | static constexpr auto B = NodeT::bits; |
161 | | static constexpr auto BL = NodeT::bits_leaf; |
162 | | |
163 | | using node_t = NodeT; |
164 | | node_t* node_; |
165 | | |
166 | | node_t* node() const { return node_; } |
167 | | shift_t shift() const { return 0; } |
168 | | count_t index(size_t idx) const { return idx & mask<BL>; } |
169 | | |
170 | | template <typename... Args> |
171 | | decltype(auto) descend(Args&&...) |
172 | | { |
173 | | } |
174 | | |
175 | | template <typename Visitor, typename... Args> |
176 | | decltype(auto) visit(Visitor v, Args&&... args) |
177 | | { |
178 | | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); |
179 | | } |
180 | | }; |
181 | | |
182 | | template <typename NodeT> |
183 | | leaf_descent_pos<NodeT> make_leaf_descent_pos(NodeT* node) |
184 | | { |
185 | | assert(node); |
186 | | return {node}; |
187 | | } |
188 | | |
189 | | template <typename NodeT> |
190 | | struct full_leaf_pos |
191 | | { |
192 | | static constexpr auto B = NodeT::bits; |
193 | | static constexpr auto BL = NodeT::bits_leaf; |
194 | | |
195 | | using node_t = NodeT; |
196 | | node_t* node_; |
197 | | |
198 | 332k | count_t count() const { return branches<BL>; } |
199 | 227k | node_t* node() const { return node_; } |
200 | 122k | size_t size() const { return branches<BL>; } |
201 | 60.3k | shift_t shift() const { return 0; } |
202 | 28.8k | count_t index(size_t idx) const { return idx & mask<BL>; } |
203 | | count_t subindex(size_t idx) const { return idx; } |
204 | | |
205 | | template <typename Visitor, typename... Args> |
206 | | decltype(auto) visit(Visitor v, Args&&... args) |
207 | 340k | { |
208 | 340k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); |
209 | 340k | } decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor) Line | Count | Source | 207 | 6.28k | { | 208 | 6.28k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 6.28k | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 207 | 1.33k | { | 208 | 1.33k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 1.33k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 207 | 3.15k | { | 208 | 3.15k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 3.15k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 207 | 1.27k | { | 208 | 1.27k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 1.27k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&) Line | Count | Source | 207 | 4.33k | { | 208 | 4.33k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 4.33k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 207 | 122k | { | 208 | 122k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 122k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 207 | 21.8k | { | 208 | 21.8k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 21.8k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 207 | 1.36k | { | 208 | 1.36k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 1.36k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 207 | 8.80k | { | 208 | 8.80k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 8.80k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 207 | 5.42k | { | 208 | 5.42k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 5.42k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 207 | 1.51k | { | 208 | 1.51k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 1.51k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 207 | 2.56k | { | 208 | 2.56k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 2.56k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 207 | 7.87k | { | 208 | 7.87k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 7.87k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 207 | 1.40k | { | 208 | 1.40k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 1.40k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 207 | 100k | { | 208 | 100k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 100k | } |
decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 207 | 3.52k | { | 208 | 3.52k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 3.52k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 207 | 46.6k | { | 208 | 46.6k | return Visitor::visit_leaf(*this, std::forward<Args>(args)...); | 209 | 46.6k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::full_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) |
210 | | }; |
211 | | |
212 | | template <typename NodeT> |
213 | | full_leaf_pos<NodeT> make_full_leaf_pos(NodeT* node) |
214 | 334k | { |
215 | 334k | assert(node); |
216 | 334k | return {node}; |
217 | 334k | } |
218 | | |
219 | | template <typename NodeT> |
220 | | struct regular_pos |
221 | | { |
222 | | static constexpr auto B = NodeT::bits; |
223 | | static constexpr auto BL = NodeT::bits_leaf; |
224 | | |
225 | | using node_t = NodeT; |
226 | | node_t* node_; |
227 | | shift_t shift_; |
228 | | size_t size_; |
229 | | |
230 | 7.43M | count_t count() const { return index(size_ - 1) + 1; } |
231 | 16.5M | node_t* node() const { return node_; } |
232 | 34.6M | size_t size() const { return size_; } |
233 | 16.5M | shift_t shift() const { return shift_; } |
234 | 25.6M | count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; } |
235 | | count_t subindex(size_t idx) const { return idx >> shift_; } |
236 | | size_t this_size() const |
237 | | { |
238 | | return ((size_ - 1) & ~(~size_t{} << (shift_ + B))) + 1; |
239 | | } |
240 | | |
241 | | template <typename Visitor, typename... Args> |
242 | | void each(Visitor v, Args&&... args) |
243 | 0 | { |
244 | 0 | return each_regular(*this, v, args...); |
245 | 0 | } |
246 | | |
247 | | template <typename Visitor, typename... Args> |
248 | | bool each_pred(Visitor v, Args&&... args) |
249 | | { |
250 | | return each_pred_regular(*this, v, args...); |
251 | | } |
252 | | |
253 | | template <typename Visitor, typename... Args> |
254 | | bool each_pred_zip(Visitor v, node_t* other, Args&&... args) |
255 | | { |
256 | | return each_pred_zip_regular(*this, v, other, args...); |
257 | | } |
258 | | |
259 | | template <typename Visitor, typename... Args> |
260 | | bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args) |
261 | | { |
262 | | return each_pred_i_regular(*this, v, i, n, args...); |
263 | | } |
264 | | |
265 | | template <typename Visitor, typename... Args> |
266 | | bool each_pred_right(Visitor v, count_t start, Args&&... args) |
267 | | { |
268 | | return each_pred_right_regular(*this, v, start, args...); |
269 | | } |
270 | | |
271 | | template <typename Visitor, typename... Args> |
272 | | bool each_pred_left(Visitor v, count_t n, Args&&... args) |
273 | | { |
274 | | return each_pred_left_regular(*this, v, n, args...); |
275 | | } |
276 | | |
277 | | template <typename Visitor, typename... Args> |
278 | | void each_i(Visitor v, count_t i, count_t n, Args&&... args) |
279 | | { |
280 | | return each_i_regular(*this, v, i, n, args...); |
281 | | } |
282 | | |
283 | | template <typename Visitor, typename... Args> |
284 | | void each_right(Visitor v, count_t start, Args&&... args) |
285 | 2.40k | { |
286 | 2.40k | return each_right_regular(*this, v, start, args...); |
287 | 2.40k | } |
288 | | |
289 | | template <typename Visitor, typename... Args> |
290 | | void each_left(Visitor v, count_t n, Args&&... args) |
291 | | { |
292 | | return each_left_regular(*this, v, n, args...); |
293 | | } |
294 | | |
295 | | template <typename Visitor, typename... Args> |
296 | | decltype(auto) towards(Visitor v, size_t idx, Args&&... args) |
297 | | { |
298 | | return towards_oh_ch_regular( |
299 | | *this, v, idx, index(idx), count(), args...); |
300 | | } |
301 | | |
302 | | template <typename Visitor, typename... Args> |
303 | | decltype(auto) |
304 | | towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
305 | 8.91k | { |
306 | 8.91k | return towards_oh_ch_regular( |
307 | 8.91k | *this, v, idx, offset_hint, count(), args...); |
308 | 8.91k | } decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 305 | 2.46k | { | 306 | 2.46k | return towards_oh_ch_regular( | 307 | 2.46k | *this, v, idx, offset_hint, count(), args...); | 308 | 2.46k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 305 | 3.38k | { | 306 | 3.38k | return towards_oh_ch_regular( | 307 | 3.38k | *this, v, idx, offset_hint, count(), args...); | 308 | 3.38k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 305 | 3.06k | { | 306 | 3.06k | return towards_oh_ch_regular( | 307 | 3.06k | *this, v, idx, offset_hint, count(), args...); | 308 | 3.06k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) |
309 | | |
310 | | template <typename Visitor, typename... Args> |
311 | | decltype(auto) towards_oh_ch(Visitor v, |
312 | | size_t idx, |
313 | | count_t offset_hint, |
314 | | count_t count_hint, |
315 | | Args&&... args) |
316 | 3.13k | { |
317 | 3.13k | return towards_oh_ch_regular( |
318 | 3.13k | *this, v, idx, offset_hint, count(), args...); |
319 | 3.13k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 316 | 1.16k | { | 317 | 1.16k | return towards_oh_ch_regular( | 318 | 1.16k | *this, v, idx, offset_hint, count(), args...); | 319 | 1.16k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&) Line | Count | Source | 316 | 1.96k | { | 317 | 1.96k | return towards_oh_ch_regular( | 318 | 1.96k | *this, v, idx, offset_hint, count(), args...); | 319 | 1.96k | } |
|
320 | | |
321 | | template <typename Visitor, typename... Args> |
322 | | decltype(auto) |
323 | | towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
324 | | { |
325 | | return towards_sub_oh_regular(*this, v, idx, offset_hint, args...); |
326 | | } |
327 | | |
328 | | template <typename Visitor, typename... Args> |
329 | | decltype(auto) last_oh(Visitor v, count_t offset_hint, Args&&... args) |
330 | 7.40M | { |
331 | 7.40M | return last_oh_regular(*this, v, offset_hint, args...); |
332 | 7.40M | } decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 330 | 22.7k | { | 331 | 22.7k | return last_oh_regular(*this, v, offset_hint, args...); | 332 | 22.7k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 330 | 7.37M | { | 331 | 7.37M | return last_oh_regular(*this, v, offset_hint, args...); | 332 | 7.37M | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 330 | 4.06k | { | 331 | 4.06k | return last_oh_regular(*this, v, offset_hint, args...); | 332 | 4.06k | } |
|
333 | | |
334 | | template <typename Visitor, typename... Args> |
335 | | decltype(auto) visit(Visitor v, Args&&... args) |
336 | 9.10M | { |
337 | 9.10M | return Visitor::visit_regular(*this, std::forward<Args>(args)...); |
338 | 9.10M | } decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor) Line | Count | Source | 336 | 3.47k | { | 337 | 3.47k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 3.47k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 336 | 31.4k | { | 337 | 31.4k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 31.4k | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 336 | 1.16k | { | 337 | 1.16k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 1.16k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 336 | 2.46k | { | 337 | 2.46k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 2.46k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 336 | 9.04M | { | 337 | 9.04M | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 9.04M | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 336 | 7.84k | { | 337 | 7.84k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 7.84k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 336 | 1.96k | { | 337 | 1.96k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 1.96k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 336 | 3.88k | { | 337 | 3.88k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 3.88k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&) Line | Count | Source | 336 | 1.05k | { | 337 | 1.05k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 1.05k | } |
decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 336 | 2.56k | { | 337 | 2.56k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 338 | 2.56k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) |
339 | | }; |
340 | | |
341 | | template <typename Pos, typename Visitor, typename... Args> |
342 | | void each_regular(Pos&& p, Visitor v, Args&&... args) |
343 | 0 | { |
344 | 0 | constexpr auto B = bits<Pos>; |
345 | 0 | constexpr auto BL = bits_leaf<Pos>; |
346 | 0 | auto n = p.node()->inner(); |
347 | 0 | auto last = p.count() - 1; |
348 | 0 | auto e = n + last; |
349 | 0 | if (p.shift() == BL) { |
350 | 0 | for (; n != e; ++n) { |
351 | 0 | IMMER_PREFETCH(n + 1); |
352 | 0 | make_full_leaf_pos(*n).visit(v, args...); |
353 | 0 | } |
354 | 0 | make_leaf_pos(*n, p.size()).visit(v, args...); |
355 | 0 | } else { |
356 | 0 | auto ss = p.shift() - B; |
357 | 0 | for (; n != e; ++n) |
358 | 0 | make_full_pos(*n, ss).visit(v, args...); |
359 | 0 | make_regular_pos(*n, ss, p.size()).visit(v, args...); |
360 | 0 | } |
361 | 0 | } Unexecuted instantiation: void immer::detail::rbts::each_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor) Unexecuted instantiation: void immer::detail::rbts::each_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor) |
362 | | |
363 | | template <typename Pos, typename Visitor, typename... Args> |
364 | | bool each_pred_regular(Pos&& p, Visitor v, Args&&... args) |
365 | | { |
366 | | constexpr auto B = bits<Pos>; |
367 | | constexpr auto BL = bits_leaf<Pos>; |
368 | | auto n = p.node()->inner(); |
369 | | auto last = p.count() - 1; |
370 | | auto e = n + last; |
371 | | if (p.shift() == BL) { |
372 | | for (; n != e; ++n) { |
373 | | IMMER_PREFETCH(n + 1); |
374 | | if (!make_full_leaf_pos(*n).visit(v, args...)) |
375 | | return false; |
376 | | } |
377 | | return make_leaf_pos(*n, p.size()).visit(v, args...); |
378 | | } else { |
379 | | auto ss = p.shift() - B; |
380 | | for (; n != e; ++n) |
381 | | if (!make_full_pos(*n, ss).visit(v, args...)) |
382 | | return false; |
383 | | return make_regular_pos(*n, ss, p.size()).visit(v, args...); |
384 | | } |
385 | | } |
386 | | |
387 | | template <typename Pos, typename Visitor, typename... Args> |
388 | | bool each_pred_zip_regular(Pos&& p, |
389 | | Visitor v, |
390 | | node_type<Pos>* other, |
391 | | Args&&... args) |
392 | | { |
393 | | constexpr auto B = bits<Pos>; |
394 | | constexpr auto BL = bits_leaf<Pos>; |
395 | | |
396 | | auto n = p.node()->inner(); |
397 | | auto n2 = other->inner(); |
398 | | auto last = p.count() - 1; |
399 | | auto e = n + last; |
400 | | if (p.shift() == BL) { |
401 | | for (; n != e; ++n, ++n2) { |
402 | | IMMER_PREFETCH(n + 1); |
403 | | IMMER_PREFETCH(n2 + 1); |
404 | | if (!make_full_leaf_pos(*n).visit(v, *n2, args...)) |
405 | | return false; |
406 | | } |
407 | | return make_leaf_pos(*n, p.size()).visit(v, *n2, args...); |
408 | | } else { |
409 | | auto ss = p.shift() - B; |
410 | | for (; n != e; ++n, ++n2) |
411 | | if (!make_full_pos(*n, ss).visit(v, *n2, args...)) |
412 | | return false; |
413 | | return make_regular_pos(*n, ss, p.size()).visit(v, *n2, args...); |
414 | | } |
415 | | } |
416 | | |
417 | | template <typename Pos, typename Visitor, typename... Args> |
418 | | bool each_pred_i_regular( |
419 | | Pos&& p, Visitor v, count_t f, count_t l, Args&&... args) |
420 | | { |
421 | | constexpr auto B = bits<Pos>; |
422 | | constexpr auto BL = bits_leaf<Pos>; |
423 | | |
424 | | if (p.shift() == BL) { |
425 | | if (l > f) { |
426 | | if (l < p.count()) { |
427 | | auto n = p.node()->inner() + f; |
428 | | auto e = p.node()->inner() + l; |
429 | | for (; n < e; ++n) { |
430 | | IMMER_PREFETCH(n + 1); |
431 | | if (!make_full_leaf_pos(*n).visit(v, args...)) |
432 | | return false; |
433 | | } |
434 | | } else { |
435 | | auto n = p.node()->inner() + f; |
436 | | auto e = p.node()->inner() + l - 1; |
437 | | for (; n < e; ++n) { |
438 | | IMMER_PREFETCH(n + 1); |
439 | | if (!make_full_leaf_pos(*n).visit(v, args...)) |
440 | | return false; |
441 | | } |
442 | | if (!make_leaf_pos(*n, p.size()).visit(v, args...)) |
443 | | return false; |
444 | | } |
445 | | } |
446 | | } else { |
447 | | if (l > f) { |
448 | | auto ss = p.shift() - B; |
449 | | if (l < p.count()) { |
450 | | auto n = p.node()->inner() + f; |
451 | | auto e = p.node()->inner() + l; |
452 | | for (; n < e; ++n) |
453 | | if (!make_full_pos(*n, ss).visit(v, args...)) |
454 | | return false; |
455 | | } else { |
456 | | auto n = p.node()->inner() + f; |
457 | | auto e = p.node()->inner() + l - 1; |
458 | | for (; n < e; ++n) |
459 | | if (!make_full_pos(*n, ss).visit(v, args...)) |
460 | | return false; |
461 | | if (!make_regular_pos(*n, ss, p.size()).visit(v, args...)) |
462 | | return false; |
463 | | } |
464 | | } |
465 | | } |
466 | | return true; |
467 | | } |
468 | | |
469 | | template <typename Pos, typename Visitor, typename... Args> |
470 | | bool each_pred_left_regular(Pos&& p, Visitor v, count_t last, Args&&... args) |
471 | | { |
472 | | constexpr auto B = bits<Pos>; |
473 | | constexpr auto BL = bits_leaf<Pos>; |
474 | | assert(last < p.count()); |
475 | | if (p.shift() == BL) { |
476 | | auto n = p.node()->inner(); |
477 | | auto e = n + last; |
478 | | for (; n != e; ++n) { |
479 | | IMMER_PREFETCH(n + 1); |
480 | | if (!make_full_leaf_pos(*n).visit(v, args...)) |
481 | | return false; |
482 | | } |
483 | | } else { |
484 | | auto n = p.node()->inner(); |
485 | | auto e = n + last; |
486 | | auto ss = p.shift() - B; |
487 | | for (; n != e; ++n) |
488 | | if (!make_full_pos(*n, ss).visit(v, args...)) |
489 | | return false; |
490 | | } |
491 | | return true; |
492 | | } |
493 | | |
494 | | template <typename Pos, typename Visitor, typename... Args> |
495 | | bool each_pred_right_regular(Pos&& p, Visitor v, count_t start, Args&&... args) |
496 | | { |
497 | | constexpr auto B = bits<Pos>; |
498 | | constexpr auto BL = bits_leaf<Pos>; |
499 | | |
500 | | if (p.shift() == BL) { |
501 | | auto n = p.node()->inner() + start; |
502 | | auto last = p.count() - 1; |
503 | | auto e = p.node()->inner() + last; |
504 | | if (n <= e) { |
505 | | for (; n != e; ++n) { |
506 | | IMMER_PREFETCH(n + 1); |
507 | | if (!make_full_leaf_pos(*n).visit(v, args...)) |
508 | | return false; |
509 | | } |
510 | | if (!make_leaf_pos(*n, p.size()).visit(v, args...)) |
511 | | return false; |
512 | | } |
513 | | } else { |
514 | | auto n = p.node()->inner() + start; |
515 | | auto last = p.count() - 1; |
516 | | auto e = p.node()->inner() + last; |
517 | | auto ss = p.shift() - B; |
518 | | if (n <= e) { |
519 | | for (; n != e; ++n) |
520 | | if (!make_full_pos(*n, ss).visit(v, args...)) |
521 | | return false; |
522 | | if (!make_regular_pos(*n, ss, p.size()).visit(v, args...)) |
523 | | return false; |
524 | | } |
525 | | } |
526 | | return true; |
527 | | } |
528 | | |
529 | | template <typename Pos, typename Visitor, typename... Args> |
530 | | void each_i_regular(Pos&& p, Visitor v, count_t f, count_t l, Args&&... args) |
531 | | { |
532 | | constexpr auto B = bits<Pos>; |
533 | | constexpr auto BL = bits_leaf<Pos>; |
534 | | |
535 | | if (p.shift() == BL) { |
536 | | if (l > f) { |
537 | | if (l < p.count()) { |
538 | | auto n = p.node()->inner() + f; |
539 | | auto e = p.node()->inner() + l; |
540 | | for (; n < e; ++n) { |
541 | | IMMER_PREFETCH(n + 1); |
542 | | make_full_leaf_pos(*n).visit(v, args...); |
543 | | } |
544 | | } else { |
545 | | auto n = p.node()->inner() + f; |
546 | | auto e = p.node()->inner() + l - 1; |
547 | | for (; n < e; ++n) { |
548 | | IMMER_PREFETCH(n + 1); |
549 | | make_full_leaf_pos(*n).visit(v, args...); |
550 | | } |
551 | | make_leaf_pos(*n, p.size()).visit(v, args...); |
552 | | } |
553 | | } |
554 | | } else { |
555 | | if (l > f) { |
556 | | auto ss = p.shift() - B; |
557 | | if (l < p.count()) { |
558 | | auto n = p.node()->inner() + f; |
559 | | auto e = p.node()->inner() + l; |
560 | | for (; n < e; ++n) |
561 | | make_full_pos(*n, ss).visit(v, args...); |
562 | | } else { |
563 | | auto n = p.node()->inner() + f; |
564 | | auto e = p.node()->inner() + l - 1; |
565 | | for (; n < e; ++n) |
566 | | make_full_pos(*n, ss).visit(v, args...); |
567 | | make_regular_pos(*n, ss, p.size()).visit(v, args...); |
568 | | } |
569 | | } |
570 | | } |
571 | | } |
572 | | |
573 | | template <typename Pos, typename Visitor, typename... Args> |
574 | | void each_left_regular(Pos&& p, Visitor v, count_t last, Args&&... args) |
575 | 353k | { |
576 | 353k | constexpr auto B = bits<Pos>; |
577 | 353k | constexpr auto BL = bits_leaf<Pos>; |
578 | 353k | assert(last < p.count()); |
579 | 353k | if (p.shift() == BL) { |
580 | 114k | auto n = p.node()->inner(); |
581 | 114k | auto e = n + last; |
582 | 255k | for (; n != e; ++n) { |
583 | 140k | IMMER_PREFETCH(n + 1); |
584 | 140k | make_full_leaf_pos(*n).visit(v, args...); |
585 | 140k | } |
586 | 238k | } else { |
587 | 238k | auto n = p.node()->inner(); |
588 | 238k | auto e = n + last; |
589 | 238k | auto ss = p.shift() - B; |
590 | 623k | for (; n != e; ++n) |
591 | 384k | make_full_pos(*n, ss).visit(v, args...); |
592 | 238k | } |
593 | 353k | } void immer::detail::rbts::each_left_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 575 | 176k | { | 576 | 176k | constexpr auto B = bits<Pos>; | 577 | 176k | constexpr auto BL = bits_leaf<Pos>; | 578 | 176k | assert(last < p.count()); | 579 | 176k | if (p.shift() == BL) { | 580 | 57.2k | auto n = p.node()->inner(); | 581 | 57.2k | auto e = n + last; | 582 | 127k | for (; n != e; ++n) { | 583 | 70.3k | IMMER_PREFETCH(n + 1); | 584 | 70.3k | make_full_leaf_pos(*n).visit(v, args...); | 585 | 70.3k | } | 586 | 119k | } else { | 587 | 119k | auto n = p.node()->inner(); | 588 | 119k | auto e = n + last; | 589 | 119k | auto ss = p.shift() - B; | 590 | 311k | for (; n != e; ++n) | 591 | 192k | make_full_pos(*n, ss).visit(v, args...); | 592 | 119k | } | 593 | 176k | } |
void immer::detail::rbts::each_left_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 575 | 21.3k | { | 576 | 21.3k | constexpr auto B = bits<Pos>; | 577 | 21.3k | constexpr auto BL = bits_leaf<Pos>; | 578 | 21.3k | assert(last < p.count()); | 579 | 21.3k | if (p.shift() == BL) { | 580 | 10.3k | auto n = p.node()->inner(); | 581 | 10.3k | auto e = n + last; | 582 | 17.6k | for (; n != e; ++n) { | 583 | 7.35k | IMMER_PREFETCH(n + 1); | 584 | 7.35k | make_full_leaf_pos(*n).visit(v, args...); | 585 | 7.35k | } | 586 | 11.0k | } else { | 587 | 11.0k | auto n = p.node()->inner(); | 588 | 11.0k | auto e = n + last; | 589 | 11.0k | auto ss = p.shift() - B; | 590 | 24.3k | for (; n != e; ++n) | 591 | 13.3k | make_full_pos(*n, ss).visit(v, args...); | 592 | 11.0k | } | 593 | 21.3k | } |
void immer::detail::rbts::each_left_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 575 | 155k | { | 576 | 155k | constexpr auto B = bits<Pos>; | 577 | 155k | constexpr auto BL = bits_leaf<Pos>; | 578 | 155k | assert(last < p.count()); | 579 | 155k | if (p.shift() == BL) { | 580 | 46.9k | auto n = p.node()->inner(); | 581 | 46.9k | auto e = n + last; | 582 | 109k | for (; n != e; ++n) { | 583 | 62.9k | IMMER_PREFETCH(n + 1); | 584 | 62.9k | make_full_leaf_pos(*n).visit(v, args...); | 585 | 62.9k | } | 586 | 108k | } else { | 587 | 108k | auto n = p.node()->inner(); | 588 | 108k | auto e = n + last; | 589 | 108k | auto ss = p.shift() - B; | 590 | 287k | for (; n != e; ++n) | 591 | 178k | make_full_pos(*n, ss).visit(v, args...); | 592 | 108k | } | 593 | 155k | } |
|
594 | | |
595 | | template <typename Pos, typename Visitor, typename... Args> |
596 | | void each_right_regular(Pos&& p, Visitor v, count_t start, Args&&... args) |
597 | 7.59k | { |
598 | 7.59k | constexpr auto B = bits<Pos>; |
599 | 7.59k | constexpr auto BL = bits_leaf<Pos>; |
600 | | |
601 | 7.59k | if (p.shift() == BL) { |
602 | 2.64k | auto n = p.node()->inner() + start; |
603 | 2.64k | auto last = p.count() - 1; |
604 | 2.64k | auto e = p.node()->inner() + last; |
605 | 2.64k | if (n <= e) { |
606 | 1.59k | for (; n != e; ++n) { |
607 | 399 | IMMER_PREFETCH(n + 1); |
608 | 399 | make_full_leaf_pos(*n).visit(v, args...); |
609 | 399 | } |
610 | 1.19k | make_leaf_pos(*n, p.size()).visit(v, args...); |
611 | 1.19k | } |
612 | 4.94k | } else { |
613 | 4.94k | auto n = p.node()->inner() + start; |
614 | 4.94k | auto last = p.count() - 1; |
615 | 4.94k | auto e = p.node()->inner() + last; |
616 | 4.94k | auto ss = p.shift() - B; |
617 | 4.94k | if (n <= e) { |
618 | 3.47k | for (; n != e; ++n) |
619 | 1.37k | make_full_pos(*n, ss).visit(v, args...); |
620 | 2.09k | make_regular_pos(*n, ss, p.size()).visit(v, args...); |
621 | 2.09k | } |
622 | 4.94k | } |
623 | 7.59k | } void immer::detail::rbts::each_right_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor, unsigned int) Line | Count | Source | 597 | 2.40k | { | 598 | 2.40k | constexpr auto B = bits<Pos>; | 599 | 2.40k | constexpr auto BL = bits_leaf<Pos>; | 600 | | | 601 | 2.40k | if (p.shift() == BL) { | 602 | 1.21k | auto n = p.node()->inner() + start; | 603 | 1.21k | auto last = p.count() - 1; | 604 | 1.21k | auto e = p.node()->inner() + last; | 605 | 1.21k | if (n <= e) { | 606 | 645 | for (; n != e; ++n) { | 607 | 194 | IMMER_PREFETCH(n + 1); | 608 | 194 | make_full_leaf_pos(*n).visit(v, args...); | 609 | 194 | } | 610 | 451 | make_leaf_pos(*n, p.size()).visit(v, args...); | 611 | 451 | } | 612 | 1.21k | } else { | 613 | 1.18k | auto n = p.node()->inner() + start; | 614 | 1.18k | auto last = p.count() - 1; | 615 | 1.18k | auto e = p.node()->inner() + last; | 616 | 1.18k | auto ss = p.shift() - B; | 617 | 1.18k | if (n <= e) { | 618 | 1.22k | for (; n != e; ++n) | 619 | 612 | make_full_pos(*n, ss).visit(v, args...); | 620 | 617 | make_regular_pos(*n, ss, p.size()).visit(v, args...); | 621 | 617 | } | 622 | 1.18k | } | 623 | 2.40k | } |
void immer::detail::rbts::each_right_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::dec_visitor, unsigned int) Line | Count | Source | 597 | 5.19k | { | 598 | 5.19k | constexpr auto B = bits<Pos>; | 599 | 5.19k | constexpr auto BL = bits_leaf<Pos>; | 600 | | | 601 | 5.19k | if (p.shift() == BL) { | 602 | 1.43k | auto n = p.node()->inner() + start; | 603 | 1.43k | auto last = p.count() - 1; | 604 | 1.43k | auto e = p.node()->inner() + last; | 605 | 1.43k | if (n <= e) { | 606 | 951 | for (; n != e; ++n) { | 607 | 205 | IMMER_PREFETCH(n + 1); | 608 | 205 | make_full_leaf_pos(*n).visit(v, args...); | 609 | 205 | } | 610 | 746 | make_leaf_pos(*n, p.size()).visit(v, args...); | 611 | 746 | } | 612 | 3.75k | } else { | 613 | 3.75k | auto n = p.node()->inner() + start; | 614 | 3.75k | auto last = p.count() - 1; | 615 | 3.75k | auto e = p.node()->inner() + last; | 616 | 3.75k | auto ss = p.shift() - B; | 617 | 3.75k | if (n <= e) { | 618 | 2.24k | for (; n != e; ++n) | 619 | 767 | make_full_pos(*n, ss).visit(v, args...); | 620 | 1.48k | make_regular_pos(*n, ss, p.size()).visit(v, args...); | 621 | 1.48k | } | 622 | 3.75k | } | 623 | 5.19k | } |
|
624 | | |
625 | | template <typename Pos, typename Visitor, typename... Args> |
626 | | decltype(auto) towards_oh_ch_regular(Pos&& p, |
627 | | Visitor v, |
628 | | size_t idx, |
629 | | count_t offset_hint, |
630 | | count_t count_hint, |
631 | | Args&&... args) |
632 | 47.8k | { |
633 | 47.8k | constexpr auto B = bits<Pos>; |
634 | 47.8k | constexpr auto BL = bits_leaf<Pos>; |
635 | 47.8k | assert(offset_hint == p.index(idx)); |
636 | 47.8k | assert(count_hint == p.count()); |
637 | 47.8k | auto is_leaf = p.shift() == BL; |
638 | 47.8k | auto child = p.node()->inner()[offset_hint]; |
639 | 47.8k | auto is_full = offset_hint + 1 != count_hint; |
640 | 47.8k | return is_full |
641 | 47.8k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) |
642 | 24.5k | : make_full_pos(child, p.shift() - B) |
643 | 16.0k | .visit(v, idx, args...)) |
644 | 47.8k | : (is_leaf |
645 | 23.2k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) |
646 | 23.2k | : make_regular_pos(child, p.shift() - B, p.size()) |
647 | 12.0k | .visit(v, idx, args...)); |
648 | 47.8k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 632 | 2.03k | { | 633 | 2.03k | constexpr auto B = bits<Pos>; | 634 | 2.03k | constexpr auto BL = bits_leaf<Pos>; | 635 | 2.03k | assert(offset_hint == p.index(idx)); | 636 | 2.03k | assert(count_hint == p.count()); | 637 | 2.03k | auto is_leaf = p.shift() == BL; | 638 | 2.03k | auto child = p.node()->inner()[offset_hint]; | 639 | 2.03k | auto is_full = offset_hint + 1 != count_hint; | 640 | 2.03k | return is_full | 641 | 2.03k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 889 | : make_full_pos(child, p.shift() - B) | 643 | 574 | .visit(v, idx, args...)) | 644 | 2.03k | : (is_leaf | 645 | 1.14k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 1.14k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 773 | .visit(v, idx, args...)); | 648 | 2.03k | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(fuzzer_input&&, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 632 | 1.16k | { | 633 | 1.16k | constexpr auto B = bits<Pos>; | 634 | 1.16k | constexpr auto BL = bits_leaf<Pos>; | 635 | 1.16k | assert(offset_hint == p.index(idx)); | 636 | 1.16k | assert(count_hint == p.count()); | 637 | 1.16k | auto is_leaf = p.shift() == BL; | 638 | 1.16k | auto child = p.node()->inner()[offset_hint]; | 639 | 1.16k | auto is_full = offset_hint + 1 != count_hint; | 640 | 1.16k | return is_full | 641 | 1.16k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 442 | : make_full_pos(child, p.shift() - B) | 643 | 204 | .visit(v, idx, args...)) | 644 | 1.16k | : (is_leaf | 645 | 726 | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 726 | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 395 | .visit(v, idx, args...)); | 648 | 1.16k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned int) Line | Count | Source | 632 | 3.74k | { | 633 | 3.74k | constexpr auto B = bits<Pos>; | 634 | 3.74k | constexpr auto BL = bits_leaf<Pos>; | 635 | 3.74k | assert(offset_hint == p.index(idx)); | 636 | 3.74k | assert(count_hint == p.count()); | 637 | 3.74k | auto is_leaf = p.shift() == BL; | 638 | 3.74k | auto child = p.node()->inner()[offset_hint]; | 639 | 3.74k | auto is_full = offset_hint + 1 != count_hint; | 640 | 3.74k | return is_full | 641 | 3.74k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 1.39k | : make_full_pos(child, p.shift() - B) | 643 | 731 | .visit(v, idx, args...)) | 644 | 3.74k | : (is_leaf | 645 | 2.34k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 2.34k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 1.65k | .visit(v, idx, args...)); | 648 | 3.74k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned int) Line | Count | Source | 632 | 2.46k | { | 633 | 2.46k | constexpr auto B = bits<Pos>; | 634 | 2.46k | constexpr auto BL = bits_leaf<Pos>; | 635 | 2.46k | assert(offset_hint == p.index(idx)); | 636 | 2.46k | assert(count_hint == p.count()); | 637 | 2.46k | auto is_leaf = p.shift() == BL; | 638 | 2.46k | auto child = p.node()->inner()[offset_hint]; | 639 | 2.46k | auto is_full = offset_hint + 1 != count_hint; | 640 | 2.46k | return is_full | 641 | 2.46k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 675 | : make_full_pos(child, p.shift() - B) | 643 | 213 | .visit(v, idx, args...)) | 644 | 2.46k | : (is_leaf | 645 | 1.79k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 1.79k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 812 | .visit(v, idx, args...)); | 648 | 2.46k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned int) Line | Count | Source | 632 | 2.79k | { | 633 | 2.79k | constexpr auto B = bits<Pos>; | 634 | 2.79k | constexpr auto BL = bits_leaf<Pos>; | 635 | 2.79k | assert(offset_hint == p.index(idx)); | 636 | 2.79k | assert(count_hint == p.count()); | 637 | 2.79k | auto is_leaf = p.shift() == BL; | 638 | 2.79k | auto child = p.node()->inner()[offset_hint]; | 639 | 2.79k | auto is_full = offset_hint + 1 != count_hint; | 640 | 2.79k | return is_full | 641 | 2.79k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 2.35k | : make_full_pos(child, p.shift() - B) | 643 | 1.64k | .visit(v, idx, args...)) | 644 | 2.79k | : (is_leaf | 645 | 432 | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 432 | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 0 | .visit(v, idx, args...)); | 648 | 2.79k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned int) decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 632 | 6.79k | { | 633 | 6.79k | constexpr auto B = bits<Pos>; | 634 | 6.79k | constexpr auto BL = bits_leaf<Pos>; | 635 | 6.79k | assert(offset_hint == p.index(idx)); | 636 | 6.79k | assert(count_hint == p.count()); | 637 | 6.79k | auto is_leaf = p.shift() == BL; | 638 | 6.79k | auto child = p.node()->inner()[offset_hint]; | 639 | 6.79k | auto is_full = offset_hint + 1 != count_hint; | 640 | 6.79k | return is_full | 641 | 6.79k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 4.73k | : make_full_pos(child, p.shift() - B) | 643 | 3.80k | .visit(v, idx, args...)) | 644 | 6.79k | : (is_leaf | 645 | 2.05k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 2.05k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 1.38k | .visit(v, idx, args...)); | 648 | 6.79k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 632 | 1.96k | { | 633 | 1.96k | constexpr auto B = bits<Pos>; | 634 | 1.96k | constexpr auto BL = bits_leaf<Pos>; | 635 | 1.96k | assert(offset_hint == p.index(idx)); | 636 | 1.96k | assert(count_hint == p.count()); | 637 | 1.96k | auto is_leaf = p.shift() == BL; | 638 | 1.96k | auto child = p.node()->inner()[offset_hint]; | 639 | 1.96k | auto is_full = offset_hint + 1 != count_hint; | 640 | 1.96k | return is_full | 641 | 1.96k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 686 | : make_full_pos(child, p.shift() - B) | 643 | 208 | .visit(v, idx, args...)) | 644 | 1.96k | : (is_leaf | 645 | 1.28k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 1.28k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 588 | .visit(v, idx, args...)); | 648 | 1.96k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 632 | 3.30k | { | 633 | 3.30k | constexpr auto B = bits<Pos>; | 634 | 3.30k | constexpr auto BL = bits_leaf<Pos>; | 635 | 3.30k | assert(offset_hint == p.index(idx)); | 636 | 3.30k | assert(count_hint == p.count()); | 637 | 3.30k | auto is_leaf = p.shift() == BL; | 638 | 3.30k | auto child = p.node()->inner()[offset_hint]; | 639 | 3.30k | auto is_full = offset_hint + 1 != count_hint; | 640 | 3.30k | return is_full | 641 | 3.30k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 2.50k | : make_full_pos(child, p.shift() - B) | 643 | 1.84k | .visit(v, idx, args...)) | 644 | 3.30k | : (is_leaf | 645 | 798 | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 798 | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 0 | .visit(v, idx, args...)); | 648 | 3.30k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 632 | 3.38k | { | 633 | 3.38k | constexpr auto B = bits<Pos>; | 634 | 3.38k | constexpr auto BL = bits_leaf<Pos>; | 635 | 3.38k | assert(offset_hint == p.index(idx)); | 636 | 3.38k | assert(count_hint == p.count()); | 637 | 3.38k | auto is_leaf = p.shift() == BL; | 638 | 3.38k | auto child = p.node()->inner()[offset_hint]; | 639 | 3.38k | auto is_full = offset_hint + 1 != count_hint; | 640 | 3.38k | return is_full | 641 | 3.38k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 1.46k | : make_full_pos(child, p.shift() - B) | 643 | 626 | .visit(v, idx, args...)) | 644 | 3.38k | : (is_leaf | 645 | 1.91k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 1.91k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 657 | .visit(v, idx, args...)); | 648 | 3.38k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 632 | 3.06k | { | 633 | 3.06k | constexpr auto B = bits<Pos>; | 634 | 3.06k | constexpr auto BL = bits_leaf<Pos>; | 635 | 3.06k | assert(offset_hint == p.index(idx)); | 636 | 3.06k | assert(count_hint == p.count()); | 637 | 3.06k | auto is_leaf = p.shift() == BL; | 638 | 3.06k | auto child = p.node()->inner()[offset_hint]; | 639 | 3.06k | auto is_full = offset_hint + 1 != count_hint; | 640 | 3.06k | return is_full | 641 | 3.06k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 804 | : make_full_pos(child, p.shift() - B) | 643 | 286 | .visit(v, idx, args...)) | 644 | 3.06k | : (is_leaf | 645 | 2.25k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 2.25k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 708 | .visit(v, idx, args...)); | 648 | 3.06k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 632 | 6.92k | { | 633 | 6.92k | constexpr auto B = bits<Pos>; | 634 | 6.92k | constexpr auto BL = bits_leaf<Pos>; | 635 | 6.92k | assert(offset_hint == p.index(idx)); | 636 | 6.92k | assert(count_hint == p.count()); | 637 | 6.92k | auto is_leaf = p.shift() == BL; | 638 | 6.92k | auto child = p.node()->inner()[offset_hint]; | 639 | 6.92k | auto is_full = offset_hint + 1 != count_hint; | 640 | 6.92k | return is_full | 641 | 6.92k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 2.43k | : make_full_pos(child, p.shift() - B) | 643 | 1.65k | .visit(v, idx, args...)) | 644 | 6.92k | : (is_leaf | 645 | 4.49k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 4.49k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 3.22k | .visit(v, idx, args...)); | 648 | 6.92k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 632 | 6.40k | { | 633 | 6.40k | constexpr auto B = bits<Pos>; | 634 | 6.40k | constexpr auto BL = bits_leaf<Pos>; | 635 | 6.40k | assert(offset_hint == p.index(idx)); | 636 | 6.40k | assert(count_hint == p.count()); | 637 | 6.40k | auto is_leaf = p.shift() == BL; | 638 | 6.40k | auto child = p.node()->inner()[offset_hint]; | 639 | 6.40k | auto is_full = offset_hint + 1 != count_hint; | 640 | 6.40k | return is_full | 641 | 6.40k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 3.10k | : make_full_pos(child, p.shift() - B) | 643 | 1.84k | .visit(v, idx, args...)) | 644 | 6.40k | : (is_leaf | 645 | 3.30k | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 3.30k | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 1.85k | .visit(v, idx, args...)); | 648 | 6.40k | } |
decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 632 | 3.75k | { | 633 | 3.75k | constexpr auto B = bits<Pos>; | 634 | 3.75k | constexpr auto BL = bits_leaf<Pos>; | 635 | 3.75k | assert(offset_hint == p.index(idx)); | 636 | 3.75k | assert(count_hint == p.count()); | 637 | 3.75k | auto is_leaf = p.shift() == BL; | 638 | 3.75k | auto child = p.node()->inner()[offset_hint]; | 639 | 3.75k | auto is_full = offset_hint + 1 != count_hint; | 640 | 3.75k | return is_full | 641 | 3.75k | ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...) | 642 | 3.03k | : make_full_pos(child, p.shift() - B) | 643 | 2.40k | .visit(v, idx, args...)) | 644 | 3.75k | : (is_leaf | 645 | 714 | ? make_leaf_pos(child, p.size()).visit(v, idx, args...) | 646 | 714 | : make_regular_pos(child, p.shift() - B, p.size()) | 647 | 0 | .visit(v, idx, args...)); | 648 | 3.75k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::towards_oh_ch_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) |
649 | | |
650 | | template <typename Pos, typename Visitor, typename... Args> |
651 | | decltype(auto) towards_sub_oh_regular( |
652 | | Pos&& p, Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
653 | 4.68k | { |
654 | 4.68k | constexpr auto B = bits<Pos>; |
655 | 4.68k | constexpr auto BL = bits_leaf<Pos>; |
656 | 4.68k | assert(offset_hint == p.index(idx)); |
657 | 4.68k | auto is_leaf = p.shift() == BL; |
658 | 4.68k | auto child = p.node()->inner()[offset_hint]; |
659 | 4.68k | auto lsize = offset_hint << p.shift(); |
660 | 4.68k | auto size = p.this_size(); |
661 | 4.68k | auto is_full = (size - lsize) >= (size_t{1} << p.shift()); |
662 | 4.68k | return is_full |
663 | 4.68k | ? (is_leaf |
664 | 4.33k | ? make_full_leaf_pos(child).visit(v, idx - lsize, args...) |
665 | 4.33k | : make_full_pos(child, p.shift() - B) |
666 | 2.37k | .visit(v, idx - lsize, args...)) |
667 | 4.68k | : (is_leaf |
668 | 351 | ? make_leaf_sub_pos(child, size - lsize) |
669 | 0 | .visit(v, idx - lsize, args...) |
670 | 351 | : make_regular_sub_pos(child, p.shift() - B, size - lsize) |
671 | 351 | .visit(v, idx - lsize, args...)); |
672 | 4.68k | } decltype(auto) immer::detail::rbts::towards_sub_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 653 | 3.39k | { | 654 | 3.39k | constexpr auto B = bits<Pos>; | 655 | 3.39k | constexpr auto BL = bits_leaf<Pos>; | 656 | 3.39k | assert(offset_hint == p.index(idx)); | 657 | 3.39k | auto is_leaf = p.shift() == BL; | 658 | 3.39k | auto child = p.node()->inner()[offset_hint]; | 659 | 3.39k | auto lsize = offset_hint << p.shift(); | 660 | 3.39k | auto size = p.this_size(); | 661 | 3.39k | auto is_full = (size - lsize) >= (size_t{1} << p.shift()); | 662 | 3.39k | return is_full | 663 | 3.39k | ? (is_leaf | 664 | 3.39k | ? make_full_leaf_pos(child).visit(v, idx - lsize, args...) | 665 | 3.39k | : make_full_pos(child, p.shift() - B) | 666 | 1.42k | .visit(v, idx - lsize, args...)) | 667 | 3.39k | : (is_leaf | 668 | 0 | ? make_leaf_sub_pos(child, size - lsize) | 669 | 0 | .visit(v, idx - lsize, args...) | 670 | 0 | : make_regular_sub_pos(child, p.shift() - B, size - lsize) | 671 | 0 | .visit(v, idx - lsize, args...)); | 672 | 3.39k | } |
decltype(auto) immer::detail::rbts::towards_sub_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Line | Count | Source | 653 | 1.29k | { | 654 | 1.29k | constexpr auto B = bits<Pos>; | 655 | 1.29k | constexpr auto BL = bits_leaf<Pos>; | 656 | 1.29k | assert(offset_hint == p.index(idx)); | 657 | 1.29k | auto is_leaf = p.shift() == BL; | 658 | 1.29k | auto child = p.node()->inner()[offset_hint]; | 659 | 1.29k | auto lsize = offset_hint << p.shift(); | 660 | 1.29k | auto size = p.this_size(); | 661 | 1.29k | auto is_full = (size - lsize) >= (size_t{1} << p.shift()); | 662 | 1.29k | return is_full | 663 | 1.29k | ? (is_leaf | 664 | 948 | ? make_full_leaf_pos(child).visit(v, idx - lsize, args...) | 665 | 948 | : make_full_pos(child, p.shift() - B) | 666 | 948 | .visit(v, idx - lsize, args...)) | 667 | 1.29k | : (is_leaf | 668 | 351 | ? make_leaf_sub_pos(child, size - lsize) | 669 | 0 | .visit(v, idx - lsize, args...) | 670 | 351 | : make_regular_sub_pos(child, p.shift() - B, size - lsize) | 671 | 351 | .visit(v, idx - lsize, args...)); | 672 | 1.29k | } |
|
673 | | |
674 | | template <typename Pos, typename Visitor, typename... Args> |
675 | | decltype(auto) |
676 | | last_oh_regular(Pos&& p, Visitor v, count_t offset_hint, Args&&... args) |
677 | 9.08M | { |
678 | 9.08M | assert(offset_hint == p.count() - 1); |
679 | 9.08M | constexpr auto B = bits<Pos>; |
680 | 9.08M | constexpr auto BL = bits_leaf<Pos>; |
681 | 9.08M | auto child = p.node()->inner()[offset_hint]; |
682 | 9.08M | auto is_leaf = p.shift() == BL; |
683 | 9.08M | return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...) |
684 | 9.08M | : make_regular_pos(child, p.shift() - B, p.size()) |
685 | 9.08M | .visit(v, args...); |
686 | 9.08M | } decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 677 | 8.77k | { | 678 | 8.77k | assert(offset_hint == p.count() - 1); | 679 | 8.77k | constexpr auto B = bits<Pos>; | 680 | 8.77k | constexpr auto BL = bits_leaf<Pos>; | 681 | 8.77k | auto child = p.node()->inner()[offset_hint]; | 682 | 8.77k | auto is_leaf = p.shift() == BL; | 683 | 8.77k | return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...) | 684 | 8.77k | : make_regular_pos(child, p.shift() - B, p.size()) | 685 | 8.77k | .visit(v, args...); | 686 | 8.77k | } |
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 677 | 22.7k | { | 678 | 22.7k | assert(offset_hint == p.count() - 1); | 679 | 22.7k | constexpr auto B = bits<Pos>; | 680 | 22.7k | constexpr auto BL = bits_leaf<Pos>; | 681 | 22.7k | auto child = p.node()->inner()[offset_hint]; | 682 | 22.7k | auto is_leaf = p.shift() == BL; | 683 | 22.7k | return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...) | 684 | 22.7k | : make_regular_pos(child, p.shift() - B, p.size()) | 685 | 22.7k | .visit(v, args...); | 686 | 22.7k | } |
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 677 | 1.66M | { | 678 | 1.66M | assert(offset_hint == p.count() - 1); | 679 | 1.66M | constexpr auto B = bits<Pos>; | 680 | 1.66M | constexpr auto BL = bits_leaf<Pos>; | 681 | 1.66M | auto child = p.node()->inner()[offset_hint]; | 682 | 1.66M | auto is_leaf = p.shift() == BL; | 683 | 1.66M | return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...) | 684 | 1.66M | : make_regular_pos(child, p.shift() - B, p.size()) | 685 | 1.66M | .visit(v, args...); | 686 | 1.66M | } |
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 677 | 7.37M | { | 678 | 7.37M | assert(offset_hint == p.count() - 1); | 679 | 7.37M | constexpr auto B = bits<Pos>; | 680 | 7.37M | constexpr auto BL = bits_leaf<Pos>; | 681 | 7.37M | auto child = p.node()->inner()[offset_hint]; | 682 | 7.37M | auto is_leaf = p.shift() == BL; | 683 | 7.37M | return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...) | 684 | 7.37M | : make_regular_pos(child, p.shift() - B, p.size()) | 685 | 7.37M | .visit(v, args...); | 686 | 7.37M | } |
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 677 | 4.06k | { | 678 | 4.06k | assert(offset_hint == p.count() - 1); | 679 | 4.06k | constexpr auto B = bits<Pos>; | 680 | 4.06k | constexpr auto BL = bits_leaf<Pos>; | 681 | 4.06k | auto child = p.node()->inner()[offset_hint]; | 682 | 4.06k | auto is_leaf = p.shift() == BL; | 683 | 4.06k | return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...) | 684 | 4.06k | : make_regular_pos(child, p.shift() - B, p.size()) | 685 | 4.06k | .visit(v, args...); | 686 | 4.06k | } |
decltype(auto) immer::detail::rbts::last_oh_regular<immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 677 | 3.77k | { | 678 | 3.77k | assert(offset_hint == p.count() - 1); | 679 | 3.77k | constexpr auto B = bits<Pos>; | 680 | 3.77k | constexpr auto BL = bits_leaf<Pos>; | 681 | 3.77k | auto child = p.node()->inner()[offset_hint]; | 682 | 3.77k | auto is_leaf = p.shift() == BL; | 683 | 3.77k | return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...) | 684 | 3.77k | : make_regular_pos(child, p.shift() - B, p.size()) | 685 | 3.77k | .visit(v, args...); | 686 | 3.77k | } |
|
687 | | |
688 | | template <typename NodeT> |
689 | | regular_pos<NodeT> make_regular_pos(NodeT* node, shift_t shift, size_t size) |
690 | 9.10M | { |
691 | 9.10M | assert(node); |
692 | 9.10M | assert(shift >= NodeT::bits_leaf); |
693 | 9.10M | assert(size > 0); |
694 | 9.10M | return {node, shift, size}; |
695 | 9.10M | } |
696 | | |
697 | | struct null_sub_pos |
698 | | { |
699 | 499k | auto node() const { return nullptr; } |
700 | | |
701 | | template <typename Visitor, typename... Args> |
702 | | void each_sub(Visitor, Args&&...) |
703 | | { |
704 | | } |
705 | | template <typename Visitor, typename... Args> |
706 | | void each_right_sub(Visitor, Args&&...) |
707 | 870k | { |
708 | 870k | } void immer::detail::rbts::null_sub_pos::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 707 | 435k | { | 708 | 435k | } |
void immer::detail::rbts::null_sub_pos::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 707 | 6.91k | { | 708 | 6.91k | } |
void immer::detail::rbts::null_sub_pos::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 707 | 428k | { | 708 | 428k | } |
|
709 | | template <typename Visitor, typename... Args> |
710 | | void each_left_sub(Visitor, Args&&...) |
711 | 166k | { |
712 | 166k | } void immer::detail::rbts::null_sub_pos::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 711 | 83.1k | { | 712 | 83.1k | } |
void immer::detail::rbts::null_sub_pos::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 711 | 12.0k | { | 712 | 12.0k | } |
void immer::detail::rbts::null_sub_pos::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 711 | 71.1k | { | 712 | 71.1k | } |
|
713 | | template <typename Visitor, typename... Args> |
714 | | void visit(Visitor, Args&&...) |
715 | | { |
716 | | } |
717 | | }; |
718 | | |
719 | | template <typename NodeT> |
720 | | struct singleton_regular_sub_pos |
721 | | { |
722 | | // this is a fake regular pos made out of a single child... useful |
723 | | // to treat a single leaf node as a whole tree |
724 | | |
725 | | static constexpr auto B = NodeT::bits; |
726 | | static constexpr auto BL = NodeT::bits_leaf; |
727 | | |
728 | | using node_t = NodeT; |
729 | | node_t* leaf_; |
730 | | count_t count_; |
731 | | |
732 | 0 | count_t count() const { return 1; } |
733 | 7.23k | node_t* node() const { return nullptr; } |
734 | | size_t size() const { return count_; } |
735 | 32.4k | shift_t shift() const { return BL; } |
736 | | count_t index(size_t idx) const { return 0; } |
737 | | count_t subindex(size_t idx) const { return 0; } |
738 | | size_t size_before(count_t offset) const { return 0; } |
739 | | size_t this_size() const { return count_; } |
740 | | size_t size(count_t offset) { return count_; } |
741 | | |
742 | | template <typename Visitor, typename... Args> |
743 | | void each_left_sub(Visitor v, Args&&... args) |
744 | 20.2k | { |
745 | 20.2k | } void immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 744 | 10.1k | { | 745 | 10.1k | } |
void immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 744 | 2.89k | { | 745 | 2.89k | } |
void immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 744 | 7.23k | { | 745 | 7.23k | } |
|
746 | | template <typename Visitor, typename... Args> |
747 | | void each(Visitor v, Args&&... args) |
748 | | { |
749 | | } |
750 | | |
751 | | template <typename Visitor, typename... Args> |
752 | | decltype(auto) last_sub(Visitor v, Args&&... args) |
753 | 10.1k | { |
754 | 10.1k | return make_leaf_sub_pos(leaf_, count_).visit(v, args...); |
755 | 10.1k | } Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 753 | 577 | { | 754 | 577 | return make_leaf_sub_pos(leaf_, count_).visit(v, args...); | 755 | 577 | } |
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 753 | 783 | { | 754 | 783 | return make_leaf_sub_pos(leaf_, count_).visit(v, args...); | 755 | 783 | } |
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 753 | 1.53k | { | 754 | 1.53k | return make_leaf_sub_pos(leaf_, count_).visit(v, args...); | 755 | 1.53k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Unexecuted instantiation: decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 753 | 940 | { | 754 | 940 | return make_leaf_sub_pos(leaf_, count_).visit(v, args...); | 755 | 940 | } |
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 753 | 2.58k | { | 754 | 2.58k | return make_leaf_sub_pos(leaf_, count_).visit(v, args...); | 755 | 2.58k | } |
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 753 | 3.71k | { | 754 | 3.71k | return make_leaf_sub_pos(leaf_, count_).visit(v, args...); | 755 | 3.71k | } |
|
756 | | |
757 | | template <typename Visitor, typename... Args> |
758 | | decltype(auto) visit(Visitor v, Args&&... args) |
759 | 10.1k | { |
760 | 10.1k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); |
761 | 10.1k | } decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 759 | 2.89k | { | 760 | 2.89k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 761 | 2.89k | } |
decltype(auto) immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 759 | 7.23k | { | 760 | 7.23k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 761 | 7.23k | } |
|
762 | | }; |
763 | | |
764 | | template <typename NodeT> |
765 | | auto make_singleton_regular_sub_pos(NodeT* leaf, count_t count) |
766 | 10.1k | { |
767 | 10.1k | assert(leaf); |
768 | 10.1k | IMMER_ASSERT_TAGGED(leaf->kind() == NodeT::kind_t::leaf); |
769 | 10.1k | assert(count > 0); |
770 | 10.1k | return singleton_regular_sub_pos<NodeT>{leaf, count}; |
771 | 10.1k | } |
772 | | |
773 | | template <typename NodeT> |
774 | | struct regular_sub_pos |
775 | | { |
776 | | static constexpr auto B = NodeT::bits; |
777 | | static constexpr auto BL = NodeT::bits_leaf; |
778 | | |
779 | | using node_t = NodeT; |
780 | | node_t* node_; |
781 | | shift_t shift_; |
782 | | size_t size_; |
783 | | |
784 | 3.14M | count_t count() const { return subindex(size_ - 1) + 1; } |
785 | 4.36M | node_t* node() const { return node_; } |
786 | 6.98M | size_t size() const { return size_; } |
787 | 4.62M | shift_t shift() const { return shift_; } |
788 | 3.49M | count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; } |
789 | 3.15M | count_t subindex(size_t idx) const { return idx >> shift_; } |
790 | | size_t size_before(count_t offset) const |
791 | 13.8k | { |
792 | 13.8k | return size_t{offset} << shift_; |
793 | 13.8k | } |
794 | 4.68k | size_t this_size() const { return size_; } |
795 | | |
796 | | auto size(count_t offset) |
797 | 6.61k | { |
798 | 6.61k | return offset == subindex(size_ - 1) ? size_ - size_before(offset) |
799 | 6.61k | : size_t{1} << shift_; |
800 | 6.61k | } |
801 | | |
802 | | auto size_sbh(count_t offset, size_t size_before_hint) |
803 | 4.68k | { |
804 | 4.68k | assert(size_before_hint == size_before(offset)); |
805 | 4.68k | return offset == subindex(size_ - 1) ? size_ - size_before_hint |
806 | 4.68k | : size_t{1} << shift_; |
807 | 4.68k | } |
808 | | |
809 | | void copy_sizes(count_t offset, count_t n, size_t init, size_t* sizes) |
810 | 7.59k | { |
811 | 7.59k | if (n) { |
812 | 6.61k | auto last = offset + n - 1; |
813 | 6.61k | auto e = sizes + n - 1; |
814 | 13.0k | for (; sizes != e; ++sizes) { |
815 | 6.43k | init = *sizes = init + (size_t{1} << shift_); |
816 | 6.43k | assert(init); |
817 | 6.43k | } |
818 | 6.61k | *sizes = init + size(last); |
819 | 6.61k | assert(*sizes); |
820 | 6.61k | } |
821 | 7.59k | } |
822 | | |
823 | | template <typename Visitor, typename... Args> |
824 | | void each(Visitor v, Args&&... args) |
825 | 0 | { |
826 | 0 | return each_regular(*this, v, args...); |
827 | 0 | } |
828 | | |
829 | | template <typename Visitor, typename... Args> |
830 | | bool each_pred(Visitor v, Args&&... args) |
831 | | { |
832 | | return each_pred_regular(*this, v, args...); |
833 | | } |
834 | | |
835 | | template <typename Visitor, typename... Args> |
836 | | bool each_pred_zip(Visitor v, node_t* other, Args&&... args) |
837 | | { |
838 | | return each_pred_zip_regular(*this, v, other, args...); |
839 | | } |
840 | | |
841 | | template <typename Visitor, typename... Args> |
842 | | bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args) |
843 | | { |
844 | | return each_pred_i_regular(*this, v, i, n, args...); |
845 | | } |
846 | | |
847 | | template <typename Visitor, typename... Args> |
848 | | bool each_pred_right(Visitor v, count_t start, Args&&... args) |
849 | | { |
850 | | return each_pred_right_regular(*this, v, start, args...); |
851 | | } |
852 | | |
853 | | template <typename Visitor, typename... Args> |
854 | | bool each_pred_left(Visitor v, count_t last, Args&&... args) |
855 | | { |
856 | | return each_pred_left_regular(*this, v, last, args...); |
857 | | } |
858 | | |
859 | | template <typename Visitor, typename... Args> |
860 | | void each_i(Visitor v, count_t i, count_t n, Args&&... args) |
861 | | { |
862 | | return each_i_regular(*this, v, i, n, args...); |
863 | | } |
864 | | |
865 | | template <typename Visitor, typename... Args> |
866 | | void each_right(Visitor v, count_t start, Args&&... args) |
867 | 5.19k | { |
868 | 5.19k | return each_right_regular(*this, v, start, args...); |
869 | 5.19k | } |
870 | | |
871 | | template <typename Visitor, typename... Args> |
872 | | void each_left(Visitor v, count_t last, Args&&... args) |
873 | 353k | { |
874 | 353k | return each_left_regular(*this, v, last, args...); |
875 | 353k | } void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 873 | 176k | { | 874 | 176k | return each_left_regular(*this, v, last, args...); | 875 | 176k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 873 | 21.3k | { | 874 | 21.3k | return each_left_regular(*this, v, last, args...); | 875 | 21.3k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 873 | 155k | { | 874 | 155k | return each_left_regular(*this, v, last, args...); | 875 | 155k | } |
|
876 | | |
877 | | template <typename Visitor, typename... Args> |
878 | | void each_right_sub_(Visitor v, count_t i, Args&&... args) |
879 | 44.0k | { |
880 | 44.0k | auto last = count() - 1; |
881 | 44.0k | auto lsize = size_ - (last << shift_); |
882 | 44.0k | auto n = node()->inner() + i; |
883 | 44.0k | auto e = node()->inner() + last; |
884 | 44.0k | if (shift() == BL) { |
885 | 29.2k | for (; n != e; ++n) { |
886 | 14.9k | IMMER_PREFETCH(n + 1); |
887 | 14.9k | make_full_leaf_pos(*n).visit(v, args...); |
888 | 14.9k | } |
889 | 14.2k | make_leaf_sub_pos(*n, lsize).visit(v, args...); |
890 | 29.7k | } else { |
891 | 29.7k | auto ss = shift_ - B; |
892 | 60.3k | for (; n != e; ++n) |
893 | 30.6k | make_full_pos(*n, ss).visit(v, args...); |
894 | 29.7k | make_regular_sub_pos(*n, ss, lsize).visit(v, args...); |
895 | 29.7k | } |
896 | 44.0k | } void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub_<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 879 | 22.0k | { | 880 | 22.0k | auto last = count() - 1; | 881 | 22.0k | auto lsize = size_ - (last << shift_); | 882 | 22.0k | auto n = node()->inner() + i; | 883 | 22.0k | auto e = node()->inner() + last; | 884 | 22.0k | if (shift() == BL) { | 885 | 14.6k | for (; n != e; ++n) { | 886 | 7.46k | IMMER_PREFETCH(n + 1); | 887 | 7.46k | make_full_leaf_pos(*n).visit(v, args...); | 888 | 7.46k | } | 889 | 7.13k | make_leaf_sub_pos(*n, lsize).visit(v, args...); | 890 | 14.8k | } else { | 891 | 14.8k | auto ss = shift_ - B; | 892 | 30.1k | for (; n != e; ++n) | 893 | 15.3k | make_full_pos(*n, ss).visit(v, args...); | 894 | 14.8k | make_regular_sub_pos(*n, ss, lsize).visit(v, args...); | 895 | 14.8k | } | 896 | 22.0k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub_<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 879 | 6.16k | { | 880 | 6.16k | auto last = count() - 1; | 881 | 6.16k | auto lsize = size_ - (last << shift_); | 882 | 6.16k | auto n = node()->inner() + i; | 883 | 6.16k | auto e = node()->inner() + last; | 884 | 6.16k | if (shift() == BL) { | 885 | 4.33k | for (; n != e; ++n) { | 886 | 2.25k | IMMER_PREFETCH(n + 1); | 887 | 2.25k | make_full_leaf_pos(*n).visit(v, args...); | 888 | 2.25k | } | 889 | 2.07k | make_leaf_sub_pos(*n, lsize).visit(v, args...); | 890 | 4.08k | } else { | 891 | 4.08k | auto ss = shift_ - B; | 892 | 6.29k | for (; n != e; ++n) | 893 | 2.20k | make_full_pos(*n, ss).visit(v, args...); | 894 | 4.08k | make_regular_sub_pos(*n, ss, lsize).visit(v, args...); | 895 | 4.08k | } | 896 | 6.16k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub_<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 879 | 15.8k | { | 880 | 15.8k | auto last = count() - 1; | 881 | 15.8k | auto lsize = size_ - (last << shift_); | 882 | 15.8k | auto n = node()->inner() + i; | 883 | 15.8k | auto e = node()->inner() + last; | 884 | 15.8k | if (shift() == BL) { | 885 | 10.2k | for (; n != e; ++n) { | 886 | 5.20k | IMMER_PREFETCH(n + 1); | 887 | 5.20k | make_full_leaf_pos(*n).visit(v, args...); | 888 | 5.20k | } | 889 | 5.06k | make_leaf_sub_pos(*n, lsize).visit(v, args...); | 890 | 10.7k | } else { | 891 | 10.7k | auto ss = shift_ - B; | 892 | 23.8k | for (; n != e; ++n) | 893 | 13.0k | make_full_pos(*n, ss).visit(v, args...); | 894 | 10.7k | make_regular_sub_pos(*n, ss, lsize).visit(v, args...); | 895 | 10.7k | } | 896 | 15.8k | } |
|
897 | | |
898 | | template <typename Visitor, typename... Args> |
899 | | void each_sub(Visitor v, Args&&... args) |
900 | | { |
901 | | each_right_sub_(v, 0, args...); |
902 | | } |
903 | | |
904 | | template <typename Visitor, typename... Args> |
905 | | void each_right_sub(Visitor v, Args&&... args) |
906 | 120k | { |
907 | 120k | if (count() > 1) |
908 | 44.0k | each_right_sub_(v, 1, args...); |
909 | 120k | } void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 906 | 60.3k | { | 907 | 60.3k | if (count() > 1) | 908 | 22.0k | each_right_sub_(v, 1, args...); | 909 | 60.3k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 906 | 10.1k | { | 907 | 10.1k | if (count() > 1) | 908 | 6.16k | each_right_sub_(v, 1, args...); | 909 | 10.1k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 906 | 50.1k | { | 907 | 50.1k | if (count() > 1) | 908 | 15.8k | each_right_sub_(v, 1, args...); | 909 | 50.1k | } |
|
910 | | |
911 | | template <typename Visitor, typename... Args> |
912 | | void each_left_sub(Visitor v, Args&&... args) |
913 | 353k | { |
914 | 353k | each_left(v, count() - 1, args...); |
915 | 353k | } void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 913 | 176k | { | 914 | 176k | each_left(v, count() - 1, args...); | 915 | 176k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 913 | 21.3k | { | 914 | 21.3k | each_left(v, count() - 1, args...); | 915 | 21.3k | } |
void immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 913 | 155k | { | 914 | 155k | each_left(v, count() - 1, args...); | 915 | 155k | } |
|
916 | | |
917 | | template <typename Visitor, typename... Args> |
918 | | decltype(auto) towards(Visitor v, size_t idx, Args&&... args) |
919 | | { |
920 | | return towards_oh_ch_regular( |
921 | | *this, v, idx, index(idx), count(), args...); |
922 | | } |
923 | | |
924 | | template <typename Visitor, typename... Args> |
925 | | decltype(auto) |
926 | | towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
927 | 26.9k | { |
928 | 26.9k | return towards_oh_ch_regular( |
929 | 26.9k | *this, v, idx, offset_hint, count(), args...); |
930 | 26.9k | } decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 927 | 3.74k | { | 928 | 3.74k | return towards_oh_ch_regular( | 929 | 3.74k | *this, v, idx, offset_hint, count(), args...); | 930 | 3.74k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Line | Count | Source | 927 | 2.79k | { | 928 | 2.79k | return towards_oh_ch_regular( | 929 | 2.79k | *this, v, idx, offset_hint, count(), args...); | 930 | 2.79k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 927 | 3.30k | { | 928 | 3.30k | return towards_oh_ch_regular( | 929 | 3.30k | *this, v, idx, offset_hint, count(), args...); | 930 | 3.30k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 927 | 6.92k | { | 928 | 6.92k | return towards_oh_ch_regular( | 929 | 6.92k | *this, v, idx, offset_hint, count(), args...); | 930 | 6.92k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 927 | 6.40k | { | 928 | 6.40k | return towards_oh_ch_regular( | 929 | 6.40k | *this, v, idx, offset_hint, count(), args...); | 930 | 6.40k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 927 | 3.75k | { | 928 | 3.75k | return towards_oh_ch_regular( | 929 | 3.75k | *this, v, idx, offset_hint, count(), args...); | 930 | 3.75k | } |
|
931 | | |
932 | | template <typename Visitor, typename... Args> |
933 | | decltype(auto) towards_oh_ch(Visitor v, |
934 | | size_t idx, |
935 | | count_t offset_hint, |
936 | | count_t count_hint, |
937 | | Args&&... args) |
938 | 8.83k | { |
939 | 8.83k | return towards_oh_ch_regular( |
940 | 8.83k | *this, v, idx, offset_hint, count(), args...); |
941 | 8.83k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 938 | 2.03k | { | 939 | 2.03k | return towards_oh_ch_regular( | 940 | 2.03k | *this, v, idx, offset_hint, count(), args...); | 941 | 2.03k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&) Line | Count | Source | 938 | 6.79k | { | 939 | 6.79k | return towards_oh_ch_regular( | 940 | 6.79k | *this, v, idx, offset_hint, count(), args...); | 941 | 6.79k | } |
|
942 | | |
943 | | template <typename Visitor, typename... Args> |
944 | | decltype(auto) |
945 | | towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
946 | 4.68k | { |
947 | 4.68k | return towards_sub_oh_regular(*this, v, idx, offset_hint, args...); |
948 | 4.68k | } decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 946 | 3.39k | { | 947 | 3.39k | return towards_sub_oh_regular(*this, v, idx, offset_hint, args...); | 948 | 3.39k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Line | Count | Source | 946 | 1.29k | { | 947 | 1.29k | return towards_sub_oh_regular(*this, v, idx, offset_hint, args...); | 948 | 1.29k | } |
|
949 | | |
950 | | template <typename Visitor, typename... Args> |
951 | | decltype(auto) last_oh(Visitor v, count_t offset_hint, Args&&... args) |
952 | 1.68M | { |
953 | 1.68M | return last_oh_regular(*this, v, offset_hint, args...); |
954 | 1.68M | } decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 952 | 8.77k | { | 953 | 8.77k | return last_oh_regular(*this, v, offset_hint, args...); | 954 | 8.77k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 952 | 1.66M | { | 953 | 1.66M | return last_oh_regular(*this, v, offset_hint, args...); | 954 | 1.66M | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 952 | 3.77k | { | 953 | 3.77k | return last_oh_regular(*this, v, offset_hint, args...); | 954 | 3.77k | } |
|
955 | | |
956 | | template <typename Visitor, typename... Args> |
957 | | decltype(auto) last_sub(Visitor v, Args&&... args) |
958 | 176k | { |
959 | 176k | auto offset = count() - 1; |
960 | 176k | auto child = node_->inner()[offset]; |
961 | 176k | auto is_leaf = shift_ == BL; |
962 | 176k | auto lsize = size_ - (size_t{offset} << shift_); |
963 | 176k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) |
964 | 176k | : make_regular_sub_pos(child, shift_ - B, lsize) |
965 | 119k | .visit(v, args...); |
966 | 176k | } decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 492 | { | 959 | 492 | auto offset = count() - 1; | 960 | 492 | auto child = node_->inner()[offset]; | 961 | 492 | auto is_leaf = shift_ == BL; | 962 | 492 | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 492 | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 492 | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 492 | .visit(v, args...); | 966 | 492 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 966 | { | 959 | 966 | auto offset = count() - 1; | 960 | 966 | auto child = node_->inner()[offset]; | 961 | 966 | auto is_leaf = shift_ == BL; | 962 | 966 | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 966 | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 966 | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 966 | .visit(v, args...); | 966 | 966 | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 3.70k | { | 959 | 3.70k | auto offset = count() - 1; | 960 | 3.70k | auto child = node_->inner()[offset]; | 961 | 3.70k | auto is_leaf = shift_ == BL; | 962 | 3.70k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 3.70k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 3.70k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 1.45k | .visit(v, args...); | 966 | 3.70k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 5.55k | { | 959 | 5.55k | auto offset = count() - 1; | 960 | 5.55k | auto child = node_->inner()[offset]; | 961 | 5.55k | auto is_leaf = shift_ == BL; | 962 | 5.55k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 5.55k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 5.55k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 998 | .visit(v, args...); | 966 | 5.55k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 10.6k | { | 959 | 10.6k | auto offset = count() - 1; | 960 | 10.6k | auto child = node_->inner()[offset]; | 961 | 10.6k | auto is_leaf = shift_ == BL; | 962 | 10.6k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 10.6k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 10.6k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 7.15k | .visit(v, args...); | 966 | 10.6k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 2.36k | { | 959 | 2.36k | auto offset = count() - 1; | 960 | 2.36k | auto child = node_->inner()[offset]; | 961 | 2.36k | auto is_leaf = shift_ == BL; | 962 | 2.36k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 2.36k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 2.36k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 2.36k | .visit(v, args...); | 966 | 2.36k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 1.95k | { | 959 | 1.95k | auto offset = count() - 1; | 960 | 1.95k | auto child = node_->inner()[offset]; | 961 | 1.95k | auto is_leaf = shift_ == BL; | 962 | 1.95k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 1.95k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 1.95k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 1.95k | .visit(v, args...); | 966 | 1.95k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 27.4k | { | 959 | 27.4k | auto offset = count() - 1; | 960 | 27.4k | auto child = node_->inner()[offset]; | 961 | 27.4k | auto is_leaf = shift_ == BL; | 962 | 27.4k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 27.4k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 27.4k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 18.9k | .visit(v, args...); | 966 | 27.4k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 5.73k | { | 959 | 5.73k | auto offset = count() - 1; | 960 | 5.73k | auto child = node_->inner()[offset]; | 961 | 5.73k | auto is_leaf = shift_ == BL; | 962 | 5.73k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 5.73k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 5.73k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 2.10k | .visit(v, args...); | 966 | 5.73k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 958 | 117k | { | 959 | 117k | auto offset = count() - 1; | 960 | 117k | auto child = node_->inner()[offset]; | 961 | 117k | auto is_leaf = shift_ == BL; | 962 | 117k | auto lsize = size_ - (size_t{offset} << shift_); | 963 | 117k | return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...) | 964 | 117k | : make_regular_sub_pos(child, shift_ - B, lsize) | 965 | 82.9k | .visit(v, args...); | 966 | 117k | } |
|
967 | | |
968 | | template <typename Visitor, typename... Args> |
969 | | decltype(auto) first_sub(Visitor v, Args&&... args) |
970 | 14.8k | { |
971 | 14.8k | auto is_leaf = shift_ == BL; |
972 | 14.8k | auto child = node_->inner()[0]; |
973 | 14.8k | auto is_full = size_ >= (size_t{1} << shift_); |
974 | 14.8k | return is_full |
975 | 14.8k | ? (is_leaf |
976 | 14.8k | ? make_full_leaf_pos(child).visit(v, args...) |
977 | 14.8k | : make_full_pos(child, shift_ - B).visit(v, args...)) |
978 | 14.8k | : (is_leaf |
979 | 0 | ? make_leaf_sub_pos(child, size_).visit(v, args...) |
980 | 0 | : make_regular_sub_pos(child, shift_ - B, size_) |
981 | 0 | .visit(v, args...)); |
982 | 14.8k | } decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 970 | 577 | { | 971 | 577 | auto is_leaf = shift_ == BL; | 972 | 577 | auto child = node_->inner()[0]; | 973 | 577 | auto is_full = size_ >= (size_t{1} << shift_); | 974 | 577 | return is_full | 975 | 577 | ? (is_leaf | 976 | 577 | ? make_full_leaf_pos(child).visit(v, args...) | 977 | 577 | : make_full_pos(child, shift_ - B).visit(v, args...)) | 978 | 577 | : (is_leaf | 979 | 0 | ? make_leaf_sub_pos(child, size_).visit(v, args...) | 980 | 0 | : make_regular_sub_pos(child, shift_ - B, size_) | 981 | 0 | .visit(v, args...)); | 982 | 577 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 970 | 2.02k | { | 971 | 2.02k | auto is_leaf = shift_ == BL; | 972 | 2.02k | auto child = node_->inner()[0]; | 973 | 2.02k | auto is_full = size_ >= (size_t{1} << shift_); | 974 | 2.02k | return is_full | 975 | 2.02k | ? (is_leaf | 976 | 2.02k | ? make_full_leaf_pos(child).visit(v, args...) | 977 | 2.02k | : make_full_pos(child, shift_ - B).visit(v, args...)) | 978 | 2.02k | : (is_leaf | 979 | 0 | ? make_leaf_sub_pos(child, size_).visit(v, args...) | 980 | 0 | : make_regular_sub_pos(child, shift_ - B, size_) | 981 | 0 | .visit(v, args...)); | 982 | 2.02k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 970 | 1.48k | { | 971 | 1.48k | auto is_leaf = shift_ == BL; | 972 | 1.48k | auto child = node_->inner()[0]; | 973 | 1.48k | auto is_full = size_ >= (size_t{1} << shift_); | 974 | 1.48k | return is_full | 975 | 1.48k | ? (is_leaf | 976 | 1.48k | ? make_full_leaf_pos(child).visit(v, args...) | 977 | 1.48k | : make_full_pos(child, shift_ - B).visit(v, args...)) | 978 | 1.48k | : (is_leaf | 979 | 0 | ? make_leaf_sub_pos(child, size_).visit(v, args...) | 980 | 0 | : make_regular_sub_pos(child, shift_ - B, size_) | 981 | 0 | .visit(v, args...)); | 982 | 1.48k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 970 | 940 | { | 971 | 940 | auto is_leaf = shift_ == BL; | 972 | 940 | auto child = node_->inner()[0]; | 973 | 940 | auto is_full = size_ >= (size_t{1} << shift_); | 974 | 940 | return is_full | 975 | 940 | ? (is_leaf | 976 | 940 | ? make_full_leaf_pos(child).visit(v, args...) | 977 | 940 | : make_full_pos(child, shift_ - B).visit(v, args...)) | 978 | 940 | : (is_leaf | 979 | 0 | ? make_leaf_sub_pos(child, size_).visit(v, args...) | 980 | 0 | : make_regular_sub_pos(child, shift_ - B, size_) | 981 | 0 | .visit(v, args...)); | 982 | 940 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 970 | 8.25k | { | 971 | 8.25k | auto is_leaf = shift_ == BL; | 972 | 8.25k | auto child = node_->inner()[0]; | 973 | 8.25k | auto is_full = size_ >= (size_t{1} << shift_); | 974 | 8.25k | return is_full | 975 | 8.25k | ? (is_leaf | 976 | 8.25k | ? make_full_leaf_pos(child).visit(v, args...) | 977 | 8.25k | : make_full_pos(child, shift_ - B).visit(v, args...)) | 978 | 8.25k | : (is_leaf | 979 | 0 | ? make_leaf_sub_pos(child, size_).visit(v, args...) | 980 | 0 | : make_regular_sub_pos(child, shift_ - B, size_) | 981 | 0 | .visit(v, args...)); | 982 | 8.25k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 970 | 1.59k | { | 971 | 1.59k | auto is_leaf = shift_ == BL; | 972 | 1.59k | auto child = node_->inner()[0]; | 973 | 1.59k | auto is_full = size_ >= (size_t{1} << shift_); | 974 | 1.59k | return is_full | 975 | 1.59k | ? (is_leaf | 976 | 1.59k | ? make_full_leaf_pos(child).visit(v, args...) | 977 | 1.59k | : make_full_pos(child, shift_ - B).visit(v, args...)) | 978 | 1.59k | : (is_leaf | 979 | 0 | ? make_leaf_sub_pos(child, size_).visit(v, args...) | 980 | 0 | : make_regular_sub_pos(child, shift_ - B, size_) | 981 | 0 | .visit(v, args...)); | 982 | 1.59k | } |
|
983 | | |
984 | | template <typename Visitor, typename... Args> |
985 | | decltype(auto) first_sub_leaf(Visitor v, Args&&... args) |
986 | 45.4k | { |
987 | 45.4k | assert(shift_ == BL); |
988 | 45.4k | auto child = node_->inner()[0]; |
989 | 45.4k | auto is_full = size_ >= branches<BL>; |
990 | 45.4k | return is_full ? make_full_leaf_pos(child).visit(v, args...) |
991 | 45.4k | : make_leaf_sub_pos(child, size_).visit(v, args...); |
992 | 45.4k | } decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 986 | 783 | { | 987 | 783 | assert(shift_ == BL); | 988 | 783 | auto child = node_->inner()[0]; | 989 | 783 | auto is_full = size_ >= branches<BL>; | 990 | 783 | return is_full ? make_full_leaf_pos(child).visit(v, args...) | 991 | 783 | : make_leaf_sub_pos(child, size_).visit(v, args...); | 992 | 783 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 986 | 5.29k | { | 987 | 5.29k | assert(shift_ == BL); | 988 | 5.29k | auto child = node_->inner()[0]; | 989 | 5.29k | auto is_full = size_ >= branches<BL>; | 990 | 5.29k | return is_full ? make_full_leaf_pos(child).visit(v, args...) | 991 | 5.29k | : make_leaf_sub_pos(child, size_).visit(v, args...); | 992 | 5.29k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 986 | 2.58k | { | 987 | 2.58k | assert(shift_ == BL); | 988 | 2.58k | auto child = node_->inner()[0]; | 989 | 2.58k | auto is_full = size_ >= branches<BL>; | 990 | 2.58k | return is_full ? make_full_leaf_pos(child).visit(v, args...) | 991 | 2.58k | : make_leaf_sub_pos(child, size_).visit(v, args...); | 992 | 2.58k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 986 | 36.7k | { | 987 | 36.7k | assert(shift_ == BL); | 988 | 36.7k | auto child = node_->inner()[0]; | 989 | 36.7k | auto is_full = size_ >= branches<BL>; | 990 | 36.7k | return is_full ? make_full_leaf_pos(child).visit(v, args...) | 991 | 36.7k | : make_leaf_sub_pos(child, size_).visit(v, args...); | 992 | 36.7k | } |
|
993 | | |
994 | | template <typename Visitor, typename... Args> |
995 | | decltype(auto) first_sub_inner(Visitor v, Args&&... args) |
996 | | { |
997 | | assert(shift_ >= BL); |
998 | | auto child = node_->inner()[0]; |
999 | | auto is_full = size_ >= branches<BL>; |
1000 | | return is_full ? make_full_pos(child, shift_ - B).visit(v, args...) |
1001 | | : make_regular_sub_pos(child, shift_ - B, size_) |
1002 | | .visit(v, args...); |
1003 | | } |
1004 | | |
1005 | | template <typename Visitor, typename... Args> |
1006 | | decltype(auto) nth_sub(count_t idx, Visitor v, Args&&... args) |
1007 | | { |
1008 | | assert(idx < count()); |
1009 | | auto is_leaf = shift_ == BL; |
1010 | | auto child = node_->inner()[idx]; |
1011 | | auto lsize = size(idx); |
1012 | | auto is_full = idx + 1 < count(); |
1013 | | return is_full |
1014 | | ? (is_leaf |
1015 | | ? make_full_leaf_pos(child).visit(v, args...) |
1016 | | : make_full_pos(child, shift_ - B).visit(v, args...)) |
1017 | | : (is_leaf |
1018 | | ? make_leaf_sub_pos(child, lsize).visit(v, args...) |
1019 | | : make_regular_sub_pos(child, shift_ - B, lsize) |
1020 | | .visit(v, args...)); |
1021 | | } |
1022 | | |
1023 | | template <typename Visitor, typename... Args> |
1024 | | decltype(auto) nth_sub_leaf(count_t idx, Visitor v, Args&&... args) |
1025 | | { |
1026 | | assert(shift_ == BL); |
1027 | | auto child = node_->inner()[idx]; |
1028 | | auto lsize = size(idx); |
1029 | | auto is_full = idx + 1 < count(); |
1030 | | return is_full ? make_full_leaf_pos(child).visit(v, args...) |
1031 | | : make_leaf_sub_pos(child, lsize).visit(v, args...); |
1032 | | } |
1033 | | |
1034 | | template <typename Visitor, typename... Args> |
1035 | | decltype(auto) visit(Visitor v, Args&&... args) |
1036 | 2.37M | { |
1037 | 2.37M | return Visitor::visit_regular(*this, std::forward<Args>(args)...); |
1038 | 2.37M | } decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor) Line | Count | Source | 1036 | 60.6k | { | 1037 | 60.6k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 60.6k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1036 | 8.13k | { | 1037 | 8.13k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 8.13k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 1036 | 4.25k | { | 1037 | 4.25k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 4.25k | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1036 | 2.03k | { | 1037 | 2.03k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.03k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 1036 | 1.41k | { | 1037 | 1.41k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.41k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 1036 | 5.12k | { | 1037 | 5.12k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 5.12k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 1036 | 1.55k | { | 1037 | 1.55k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.55k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&) decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 1036 | 2.78k | { | 1037 | 2.78k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.78k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&) Line | Count | Source | 1036 | 351 | { | 1037 | 351 | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 351 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 201 | { | 1037 | 201 | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 201 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1036 | 160k | { | 1037 | 160k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 160k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 16.6k | { | 1037 | 16.6k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 16.6k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 1.15k | { | 1037 | 1.15k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.15k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 818 | { | 1037 | 818 | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 818 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 826 | { | 1037 | 826 | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 826 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 1.30k | { | 1037 | 1.30k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.30k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 1.68k | { | 1037 | 1.68k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.68k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 1.43k | { | 1037 | 1.43k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.43k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 10.3k | { | 1037 | 10.3k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 10.3k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 409 | { | 1037 | 409 | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 409 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 2.60k | { | 1037 | 2.60k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.60k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 1036 | 5.77k | { | 1037 | 5.77k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 5.77k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 4.96k | { | 1037 | 4.96k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 4.96k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1036 | 679k | { | 1037 | 679k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 679k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1036 | 2.76k | { | 1037 | 2.76k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.76k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&) Line | Count | Source | 1036 | 1.01M | { | 1037 | 1.01M | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.01M | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 1036 | 1.97k | { | 1037 | 1.97k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.97k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&) Line | Count | Source | 1036 | 4.81k | { | 1037 | 4.81k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 4.81k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 1.06k | { | 1037 | 1.06k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.06k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 2.58k | { | 1037 | 2.58k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.58k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&) Line | Count | Source | 1036 | 9.52k | { | 1037 | 9.52k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 9.52k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 1.88k | { | 1037 | 1.88k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.88k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 14.8k | { | 1037 | 14.8k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 14.8k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 269 | { | 1037 | 269 | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 269 | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 144k | { | 1037 | 144k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 144k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 3.25k | { | 1037 | 3.25k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 3.25k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 4.08k | { | 1037 | 4.08k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 4.08k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 2.70k | { | 1037 | 2.70k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.70k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 2.56k | { | 1037 | 2.56k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.56k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 19.2k | { | 1037 | 19.2k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 19.2k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 7.77k | { | 1037 | 7.77k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 7.77k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1036 | 115k | { | 1037 | 115k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 115k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 1.24k | { | 1037 | 1.24k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 1.24k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 39.7k | { | 1037 | 39.7k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 39.7k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 1036 | 6.42k | { | 1037 | 6.42k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 6.42k | } |
decltype(auto) immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1036 | 2.89k | { | 1037 | 2.89k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1038 | 2.89k | } |
|
1039 | | }; |
1040 | | |
1041 | | template <typename NodeT> |
1042 | | regular_sub_pos<NodeT> |
1043 | | make_regular_sub_pos(NodeT* node, shift_t shift, size_t size) |
1044 | 2.35M | { |
1045 | 2.35M | assert(node); |
1046 | 2.35M | assert(shift >= NodeT::bits_leaf); |
1047 | 2.35M | assert(size > 0); |
1048 | 2.35M | assert(size <= (branches<NodeT::bits, size_t> << shift)); |
1049 | 2.35M | return {node, shift, size}; |
1050 | 2.35M | } |
1051 | | |
1052 | | template <typename NodeT, |
1053 | | shift_t Shift, |
1054 | | bits_t B = NodeT::bits, |
1055 | | bits_t BL = NodeT::bits_leaf> |
1056 | | struct regular_descent_pos |
1057 | | { |
1058 | | static_assert(Shift > 0, "not leaf..."); |
1059 | | |
1060 | | using node_t = NodeT; |
1061 | | node_t* node_; |
1062 | | |
1063 | | node_t* node() const { return node_; } |
1064 | | shift_t shift() const { return Shift; } |
1065 | | count_t index(size_t idx) const |
1066 | | { |
1067 | | #if !defined(_MSC_VER) |
1068 | | #pragma GCC diagnostic push |
1069 | | #pragma GCC diagnostic ignored "-Wshift-count-overflow" |
1070 | | #endif |
1071 | | return (idx >> Shift) & mask<B>; |
1072 | | #if !defined(_MSC_VER) |
1073 | | #pragma GCC diagnostic pop |
1074 | | #endif |
1075 | | } |
1076 | | |
1077 | | template <typename Visitor> |
1078 | | decltype(auto) descend(Visitor v, size_t idx) |
1079 | | { |
1080 | | auto offset = index(idx); |
1081 | | auto child = node_->inner()[offset]; |
1082 | | return regular_descent_pos<NodeT, Shift - B>{child}.visit(v, idx); |
1083 | | } |
1084 | | |
1085 | | template <typename Visitor, typename... Args> |
1086 | | decltype(auto) visit(Visitor v, Args&&... args) |
1087 | | { |
1088 | | return Visitor::visit_regular(*this, std::forward<Args>(args)...); |
1089 | | } |
1090 | | }; |
1091 | | |
1092 | | template <typename NodeT, bits_t B, bits_t BL> |
1093 | | struct regular_descent_pos<NodeT, BL, B, BL> |
1094 | | { |
1095 | | using node_t = NodeT; |
1096 | | node_t* node_; |
1097 | | |
1098 | | node_t* node() const { return node_; } |
1099 | | shift_t shift() const { return BL; } |
1100 | | count_t index(size_t idx) const { return (idx >> BL) & mask<B>; } |
1101 | | |
1102 | | template <typename Visitor> |
1103 | | decltype(auto) descend(Visitor v, size_t idx) |
1104 | | { |
1105 | | auto offset = index(idx); |
1106 | | auto child = node_->inner()[offset]; |
1107 | | return make_leaf_descent_pos(child).visit(v, idx); |
1108 | | } |
1109 | | |
1110 | | template <typename Visitor, typename... Args> |
1111 | | decltype(auto) visit(Visitor v, Args&&... args) |
1112 | | { |
1113 | | return Visitor::visit_regular(*this, std::forward<Args>(args)...); |
1114 | | } |
1115 | | }; |
1116 | | |
1117 | | template <typename NodeT, typename Visitor> |
1118 | | decltype(auto) |
1119 | | visit_regular_descent(NodeT* node, shift_t shift, Visitor v, size_t idx) |
1120 | | { |
1121 | | constexpr auto B = NodeT::bits; |
1122 | | constexpr auto BL = NodeT::bits_leaf; |
1123 | | assert(node); |
1124 | | assert(shift >= BL); |
1125 | | switch (shift) { |
1126 | | case BL + B * 0: |
1127 | | return regular_descent_pos<NodeT, BL + B * 0>{node}.visit(v, idx); |
1128 | | case BL + B * 1: |
1129 | | return regular_descent_pos<NodeT, BL + B * 1>{node}.visit(v, idx); |
1130 | | case BL + B * 2: |
1131 | | return regular_descent_pos<NodeT, BL + B * 2>{node}.visit(v, idx); |
1132 | | case BL + B * 3: |
1133 | | return regular_descent_pos<NodeT, BL + B * 3>{node}.visit(v, idx); |
1134 | | case BL + B * 4: |
1135 | | return regular_descent_pos<NodeT, BL + B * 4>{node}.visit(v, idx); |
1136 | | case BL + B * 5: |
1137 | | return regular_descent_pos<NodeT, BL + B * 5>{node}.visit(v, idx); |
1138 | | #if IMMER_DESCENT_DEEP |
1139 | | default: |
1140 | | for (auto level = shift; level != endshift<B, BL>; level -= B) |
1141 | | node = node->inner()[(idx >> level) & mask<B>]; |
1142 | | return make_leaf_descent_pos(node).visit(v, idx); |
1143 | | #endif // IMMER_DEEP_DESCENT |
1144 | | } |
1145 | | IMMER_UNREACHABLE; |
1146 | | } |
1147 | | |
1148 | | template <typename NodeT> |
1149 | | struct full_pos |
1150 | | { |
1151 | | static constexpr auto B = NodeT::bits; |
1152 | | static constexpr auto BL = NodeT::bits_leaf; |
1153 | | |
1154 | | using node_t = NodeT; |
1155 | | node_t* node_; |
1156 | | shift_t shift_; |
1157 | | |
1158 | 571k | count_t count() const { return branches<B>; } |
1159 | 357k | node_t* node() const { return node_; } |
1160 | 283k | size_t size() const { return branches<B, size_t> << shift_; } |
1161 | 59.3k | shift_t shift() const { return shift_; } |
1162 | 54.0k | count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; } |
1163 | 3.97k | count_t subindex(size_t idx) const { return idx >> shift_; } |
1164 | | size_t size(count_t offset) const { return size_t{1} << shift_; } |
1165 | | size_t size_sbh(count_t offset, size_t) const |
1166 | 3.97k | { |
1167 | 3.97k | return size_t{1} << shift_; |
1168 | 3.97k | } |
1169 | | size_t size_before(count_t offset) const |
1170 | 3.97k | { |
1171 | 3.97k | return size_t{offset} << shift_; |
1172 | 3.97k | } |
1173 | | |
1174 | | void copy_sizes(count_t offset, count_t n, size_t init, size_t* sizes) |
1175 | 3.70k | { |
1176 | 3.70k | auto e = sizes + n; |
1177 | 10.0k | for (; sizes != e; ++sizes) { |
1178 | 6.32k | init = *sizes = init + (size_t{1} << shift_); |
1179 | 6.32k | assert(init); |
1180 | 6.32k | } |
1181 | 3.70k | } |
1182 | | |
1183 | | template <typename Visitor, typename... Args> |
1184 | | void each(Visitor v, Args&&... args) |
1185 | 0 | { |
1186 | 0 | auto p = node_->inner(); |
1187 | 0 | auto e = p + branches<B>; |
1188 | 0 | if (shift_ == BL) { |
1189 | 0 | for (; p != e; ++p) { |
1190 | 0 | IMMER_PREFETCH(p + 1); |
1191 | 0 | make_full_leaf_pos(*p).visit(v, args...); |
1192 | 0 | } |
1193 | 0 | } else { |
1194 | 0 | auto ss = shift_ - B; |
1195 | 0 | for (; p != e; ++p) |
1196 | 0 | make_full_pos(*p, ss).visit(v, args...); |
1197 | 0 | } |
1198 | 0 | } |
1199 | | |
1200 | | template <typename Visitor, typename... Args> |
1201 | | bool each_pred(Visitor v, Args&&... args) |
1202 | | { |
1203 | | auto p = node_->inner(); |
1204 | | auto e = p + branches<B>; |
1205 | | if (shift_ == BL) { |
1206 | | for (; p != e; ++p) { |
1207 | | IMMER_PREFETCH(p + 1); |
1208 | | if (!make_full_leaf_pos(*p).visit(v, args...)) |
1209 | | return false; |
1210 | | } |
1211 | | } else { |
1212 | | auto ss = shift_ - B; |
1213 | | for (; p != e; ++p) |
1214 | | if (!make_full_pos(*p, ss).visit(v, args...)) |
1215 | | return false; |
1216 | | } |
1217 | | return true; |
1218 | | } |
1219 | | |
1220 | | template <typename Visitor, typename... Args> |
1221 | | bool each_pred_zip(Visitor v, node_t* other, Args&&... args) |
1222 | | { |
1223 | | auto p = node_->inner(); |
1224 | | auto p2 = other->inner(); |
1225 | | auto e = p + branches<B>; |
1226 | | if (shift_ == BL) { |
1227 | | for (; p != e; ++p, ++p2) { |
1228 | | IMMER_PREFETCH(p + 1); |
1229 | | if (!make_full_leaf_pos(*p).visit(v, *p2, args...)) |
1230 | | return false; |
1231 | | } |
1232 | | } else { |
1233 | | auto ss = shift_ - B; |
1234 | | for (; p != e; ++p, ++p2) |
1235 | | if (!make_full_pos(*p, ss).visit(v, *p2, args...)) |
1236 | | return false; |
1237 | | } |
1238 | | return true; |
1239 | | } |
1240 | | |
1241 | | template <typename Visitor, typename... Args> |
1242 | | bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args) |
1243 | | { |
1244 | | auto p = node_->inner() + i; |
1245 | | auto e = node_->inner() + n; |
1246 | | if (shift_ == BL) { |
1247 | | for (; p != e; ++p) { |
1248 | | IMMER_PREFETCH(p + 1); |
1249 | | if (!make_full_leaf_pos(*p).visit(v, args...)) |
1250 | | return false; |
1251 | | } |
1252 | | } else { |
1253 | | auto ss = shift_ - B; |
1254 | | for (; p != e; ++p) |
1255 | | if (!make_full_pos(*p, ss).visit(v, args...)) |
1256 | | return false; |
1257 | | } |
1258 | | return true; |
1259 | | } |
1260 | | |
1261 | | template <typename Visitor, typename... Args> |
1262 | | void each_i(Visitor v, count_t i, count_t n, Args&&... args) |
1263 | 79.6k | { |
1264 | 79.6k | auto p = node_->inner() + i; |
1265 | 79.6k | auto e = node_->inner() + n; |
1266 | 79.6k | if (shift_ == BL) { |
1267 | 120k | for (; p != e; ++p) { |
1268 | 89.6k | IMMER_PREFETCH(p + 1); |
1269 | 89.6k | make_full_leaf_pos(*p).visit(v, args...); |
1270 | 89.6k | } |
1271 | 48.9k | } else { |
1272 | 48.9k | auto ss = shift_ - B; |
1273 | 194k | for (; p != e; ++p) |
1274 | 145k | make_full_pos(*p, ss).visit(v, args...); |
1275 | 48.9k | } |
1276 | 79.6k | } void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1263 | 38.9k | { | 1264 | 38.9k | auto p = node_->inner() + i; | 1265 | 38.9k | auto e = node_->inner() + n; | 1266 | 38.9k | if (shift_ == BL) { | 1267 | 59.4k | for (; p != e; ++p) { | 1268 | 44.6k | IMMER_PREFETCH(p + 1); | 1269 | 44.6k | make_full_leaf_pos(*p).visit(v, args...); | 1270 | 44.6k | } | 1271 | 24.1k | } else { | 1272 | 24.1k | auto ss = shift_ - B; | 1273 | 96.4k | for (; p != e; ++p) | 1274 | 72.3k | make_full_pos(*p, ss).visit(v, args...); | 1275 | 24.1k | } | 1276 | 38.9k | } |
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1263 | 7.32k | { | 1264 | 7.32k | auto p = node_->inner() + i; | 1265 | 7.32k | auto e = node_->inner() + n; | 1266 | 7.32k | if (shift_ == BL) { | 1267 | 16.3k | for (; p != e; ++p) { | 1268 | 12.2k | IMMER_PREFETCH(p + 1); | 1269 | 12.2k | make_full_leaf_pos(*p).visit(v, args...); | 1270 | 12.2k | } | 1271 | 4.08k | } else { | 1272 | 3.24k | auto ss = shift_ - B; | 1273 | 12.9k | for (; p != e; ++p) | 1274 | 9.72k | make_full_pos(*p, ss).visit(v, args...); | 1275 | 3.24k | } | 1276 | 7.32k | } |
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor, unsigned int, unsigned int) Line | Count | Source | 1263 | 1.65k | { | 1264 | 1.65k | auto p = node_->inner() + i; | 1265 | 1.65k | auto e = node_->inner() + n; | 1266 | 1.65k | if (shift_ == BL) { | 1267 | 1.38k | for (; p != e; ++p) { | 1268 | 453 | IMMER_PREFETCH(p + 1); | 1269 | 453 | make_full_leaf_pos(*p).visit(v, args...); | 1270 | 453 | } | 1271 | 928 | } else { | 1272 | 722 | auto ss = shift_ - B; | 1273 | 1.43k | for (; p != e; ++p) | 1274 | 709 | make_full_pos(*p, ss).visit(v, args...); | 1275 | 722 | } | 1276 | 1.65k | } |
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_i<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1263 | 31.6k | { | 1264 | 31.6k | auto p = node_->inner() + i; | 1265 | 31.6k | auto e = node_->inner() + n; | 1266 | 31.6k | if (shift_ == BL) { | 1267 | 43.1k | for (; p != e; ++p) { | 1268 | 32.3k | IMMER_PREFETCH(p + 1); | 1269 | 32.3k | make_full_leaf_pos(*p).visit(v, args...); | 1270 | 32.3k | } | 1271 | 20.8k | } else { | 1272 | 20.8k | auto ss = shift_ - B; | 1273 | 83.5k | for (; p != e; ++p) | 1274 | 62.6k | make_full_pos(*p, ss).visit(v, args...); | 1275 | 20.8k | } | 1276 | 31.6k | } |
|
1277 | | |
1278 | | template <typename Visitor, typename... Args> |
1279 | | bool each_pred_right(Visitor v, count_t start, Args&&... args) |
1280 | | { |
1281 | | return each_pred_i(v, start, branches<B>, args...); |
1282 | | } |
1283 | | |
1284 | | template <typename Visitor, typename... Args> |
1285 | | bool each_pred_left(Visitor v, count_t last, Args&&... args) |
1286 | | { |
1287 | | return each_pred_i(v, 0, last, args...); |
1288 | | } |
1289 | | |
1290 | | template <typename Visitor, typename... Args> |
1291 | | void each_sub(Visitor v, Args&&... args) |
1292 | | { |
1293 | | each(v, args...); |
1294 | | } |
1295 | | |
1296 | | template <typename Visitor, typename... Args> |
1297 | | void each_left_sub(Visitor v, Args&&... args) |
1298 | | { |
1299 | | each_i(v, 0, branches<B> - 1, args...); |
1300 | | } |
1301 | | |
1302 | | template <typename Visitor, typename... Args> |
1303 | | void each_right_sub(Visitor v, Args&&... args) |
1304 | 77.9k | { |
1305 | 77.9k | each_i(v, 1, branches<B>, args...); |
1306 | 77.9k | } void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1304 | 38.9k | { | 1305 | 38.9k | each_i(v, 1, branches<B>, args...); | 1306 | 38.9k | } |
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1304 | 7.32k | { | 1305 | 7.32k | each_i(v, 1, branches<B>, args...); | 1306 | 7.32k | } |
void immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1304 | 31.6k | { | 1305 | 31.6k | each_i(v, 1, branches<B>, args...); | 1306 | 31.6k | } |
|
1307 | | |
1308 | | template <typename Visitor, typename... Args> |
1309 | | void each_right(Visitor v, count_t start, Args&&... args) |
1310 | 1.65k | { |
1311 | 1.65k | each_i(v, start, branches<B>, args...); |
1312 | 1.65k | } |
1313 | | |
1314 | | template <typename Visitor, typename... Args> |
1315 | | void each_left(Visitor v, count_t last, Args&&... args) |
1316 | | { |
1317 | | each_i(v, 0, last, args...); |
1318 | | } |
1319 | | |
1320 | | template <typename Visitor, typename... Args> |
1321 | | decltype(auto) towards(Visitor v, size_t idx, Args&&... args) |
1322 | | { |
1323 | | return towards_oh(v, idx, index(idx), args...); |
1324 | | } |
1325 | | |
1326 | | template <typename Visitor, typename... Args> |
1327 | | decltype(auto) towards_oh_ch( |
1328 | | Visitor v, size_t idx, count_t offset_hint, count_t, Args&&... args) |
1329 | 7.75k | { |
1330 | 7.75k | return towards_oh(v, idx, offset_hint, args...); |
1331 | 7.75k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1329 | 1.28k | { | 1330 | 1.28k | return towards_oh(v, idx, offset_hint, args...); | 1331 | 1.28k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_ch<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&) Line | Count | Source | 1329 | 6.47k | { | 1330 | 6.47k | return towards_oh(v, idx, offset_hint, args...); | 1331 | 6.47k | } |
|
1332 | | |
1333 | | template <typename Visitor, typename... Args> |
1334 | | decltype(auto) |
1335 | | towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
1336 | 25.0k | { |
1337 | 25.0k | assert(offset_hint == index(idx)); |
1338 | 25.0k | auto is_leaf = shift_ == BL; |
1339 | 25.0k | auto child = node_->inner()[offset_hint]; |
1340 | 25.0k | return is_leaf |
1341 | 25.0k | ? make_full_leaf_pos(child).visit(v, idx, args...) |
1342 | 25.0k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); |
1343 | 25.0k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1336 | 1.28k | { | 1337 | 1.28k | assert(offset_hint == index(idx)); | 1338 | 1.28k | auto is_leaf = shift_ == BL; | 1339 | 1.28k | auto child = node_->inner()[offset_hint]; | 1340 | 1.28k | return is_leaf | 1341 | 1.28k | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 1.28k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 1.28k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 1336 | 3.10k | { | 1337 | 3.10k | assert(offset_hint == index(idx)); | 1338 | 3.10k | auto is_leaf = shift_ == BL; | 1339 | 3.10k | auto child = node_->inner()[offset_hint]; | 1340 | 3.10k | return is_leaf | 1341 | 3.10k | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 3.10k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 3.10k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Line | Count | Source | 1336 | 996 | { | 1337 | 996 | assert(offset_hint == index(idx)); | 1338 | 996 | auto is_leaf = shift_ == BL; | 1339 | 996 | auto child = node_->inner()[offset_hint]; | 1340 | 996 | return is_leaf | 1341 | 996 | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 996 | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 996 | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 1336 | 6.47k | { | 1337 | 6.47k | assert(offset_hint == index(idx)); | 1338 | 6.47k | auto is_leaf = shift_ == BL; | 1339 | 6.47k | auto child = node_->inner()[offset_hint]; | 1340 | 6.47k | return is_leaf | 1341 | 6.47k | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 6.47k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 6.47k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1336 | 1.53k | { | 1337 | 1.53k | assert(offset_hint == index(idx)); | 1338 | 1.53k | auto is_leaf = shift_ == BL; | 1339 | 1.53k | auto child = node_->inner()[offset_hint]; | 1340 | 1.53k | return is_leaf | 1341 | 1.53k | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 1.53k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 1.53k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1336 | 1.71k | { | 1337 | 1.71k | assert(offset_hint == index(idx)); | 1338 | 1.71k | auto is_leaf = shift_ == BL; | 1339 | 1.71k | auto child = node_->inner()[offset_hint]; | 1340 | 1.71k | return is_leaf | 1341 | 1.71k | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 1.71k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 1.71k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1336 | 8.79k | { | 1337 | 8.79k | assert(offset_hint == index(idx)); | 1338 | 8.79k | auto is_leaf = shift_ == BL; | 1339 | 8.79k | auto child = node_->inner()[offset_hint]; | 1340 | 8.79k | return is_leaf | 1341 | 8.79k | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 8.79k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 8.79k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1336 | 1.14k | { | 1337 | 1.14k | assert(offset_hint == index(idx)); | 1338 | 1.14k | auto is_leaf = shift_ == BL; | 1339 | 1.14k | auto child = node_->inner()[offset_hint]; | 1340 | 1.14k | return is_leaf | 1341 | 1.14k | ? make_full_leaf_pos(child).visit(v, idx, args...) | 1342 | 1.14k | : make_full_pos(child, shift_ - B).visit(v, idx, args...); | 1343 | 1.14k | } |
|
1344 | | |
1345 | | template <typename Visitor, typename... Args> |
1346 | | decltype(auto) |
1347 | | towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
1348 | 3.97k | { |
1349 | 3.97k | assert(offset_hint == index(idx)); |
1350 | 3.97k | auto is_leaf = shift_ == BL; |
1351 | 3.97k | auto child = node_->inner()[offset_hint]; |
1352 | 3.97k | auto lsize = size_t{offset_hint} << shift_; |
1353 | 3.97k | return is_leaf |
1354 | 3.97k | ? make_full_leaf_pos(child).visit(v, idx - lsize, args...) |
1355 | 3.97k | : make_full_pos(child, shift_ - B) |
1356 | 1.60k | .visit(v, idx - lsize, args...); |
1357 | 3.97k | } decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 1348 | 3.70k | { | 1349 | 3.70k | assert(offset_hint == index(idx)); | 1350 | 3.70k | auto is_leaf = shift_ == BL; | 1351 | 3.70k | auto child = node_->inner()[offset_hint]; | 1352 | 3.70k | auto lsize = size_t{offset_hint} << shift_; | 1353 | 3.70k | return is_leaf | 1354 | 3.70k | ? make_full_leaf_pos(child).visit(v, idx - lsize, args...) | 1355 | 3.70k | : make_full_pos(child, shift_ - B) | 1356 | 1.33k | .visit(v, idx - lsize, args...); | 1357 | 3.70k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Line | Count | Source | 1348 | 272 | { | 1349 | 272 | assert(offset_hint == index(idx)); | 1350 | 272 | auto is_leaf = shift_ == BL; | 1351 | 272 | auto child = node_->inner()[offset_hint]; | 1352 | 272 | auto lsize = size_t{offset_hint} << shift_; | 1353 | 272 | return is_leaf | 1354 | 272 | ? make_full_leaf_pos(child).visit(v, idx - lsize, args...) | 1355 | 272 | : make_full_pos(child, shift_ - B) | 1356 | 272 | .visit(v, idx - lsize, args...); | 1357 | 272 | } |
|
1358 | | |
1359 | | template <typename Visitor, typename... Args> |
1360 | | decltype(auto) first_sub(Visitor v, Args&&... args) |
1361 | 24.1k | { |
1362 | 24.1k | auto is_leaf = shift_ == BL; |
1363 | 24.1k | auto child = node_->inner()[0]; |
1364 | 24.1k | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) |
1365 | 24.1k | : make_full_pos(child, shift_ - B).visit(v, args...); |
1366 | 24.1k | } decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1361 | 482 | { | 1362 | 482 | auto is_leaf = shift_ == BL; | 1363 | 482 | auto child = node_->inner()[0]; | 1364 | 482 | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) | 1365 | 482 | : make_full_pos(child, shift_ - B).visit(v, args...); | 1366 | 482 | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1361 | 1.91k | { | 1362 | 1.91k | auto is_leaf = shift_ == BL; | 1363 | 1.91k | auto child = node_->inner()[0]; | 1364 | 1.91k | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) | 1365 | 1.91k | : make_full_pos(child, shift_ - B).visit(v, args...); | 1366 | 1.91k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1361 | 842 | { | 1362 | 842 | auto is_leaf = shift_ == BL; | 1363 | 842 | auto child = node_->inner()[0]; | 1364 | 842 | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) | 1365 | 842 | : make_full_pos(child, shift_ - B).visit(v, args...); | 1366 | 842 | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1361 | 691 | { | 1362 | 691 | auto is_leaf = shift_ == BL; | 1363 | 691 | auto child = node_->inner()[0]; | 1364 | 691 | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) | 1365 | 691 | : make_full_pos(child, shift_ - B).visit(v, args...); | 1366 | 691 | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1361 | 19.4k | { | 1362 | 19.4k | auto is_leaf = shift_ == BL; | 1363 | 19.4k | auto child = node_->inner()[0]; | 1364 | 19.4k | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) | 1365 | 19.4k | : make_full_pos(child, shift_ - B).visit(v, args...); | 1366 | 19.4k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1361 | 723 | { | 1362 | 723 | auto is_leaf = shift_ == BL; | 1363 | 723 | auto child = node_->inner()[0]; | 1364 | 723 | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) | 1365 | 723 | : make_full_pos(child, shift_ - B).visit(v, args...); | 1366 | 723 | } |
|
1367 | | |
1368 | | template <typename Visitor, typename... Args> |
1369 | | decltype(auto) first_sub_leaf(Visitor v, Args&&... args) |
1370 | 14.8k | { |
1371 | 14.8k | assert(shift_ == BL); |
1372 | 14.8k | auto child = node_->inner()[0]; |
1373 | 14.8k | return make_full_leaf_pos(child).visit(v, args...); |
1374 | 14.8k | } decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1370 | 577 | { | 1371 | 577 | assert(shift_ == BL); | 1372 | 577 | auto child = node_->inner()[0]; | 1373 | 577 | return make_full_leaf_pos(child).visit(v, args...); | 1374 | 577 | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1370 | 3.50k | { | 1371 | 3.50k | assert(shift_ == BL); | 1372 | 3.50k | auto child = node_->inner()[0]; | 1373 | 3.50k | return make_full_leaf_pos(child).visit(v, args...); | 1374 | 3.50k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1370 | 940 | { | 1371 | 940 | assert(shift_ == BL); | 1372 | 940 | auto child = node_->inner()[0]; | 1373 | 940 | return make_full_leaf_pos(child).visit(v, args...); | 1374 | 940 | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1370 | 9.84k | { | 1371 | 9.84k | assert(shift_ == BL); | 1372 | 9.84k | auto child = node_->inner()[0]; | 1373 | 9.84k | return make_full_leaf_pos(child).visit(v, args...); | 1374 | 9.84k | } |
|
1375 | | |
1376 | | template <typename Visitor, typename... Args> |
1377 | | decltype(auto) first_sub_inner(Visitor v, Args&&... args) |
1378 | | { |
1379 | | assert(shift_ >= BL); |
1380 | | auto child = node_->inner()[0]; |
1381 | | return make_full_pos(child, shift_ - B).visit(v, args...); |
1382 | | } |
1383 | | |
1384 | | template <typename Visitor, typename... Args> |
1385 | | decltype(auto) nth_sub(count_t idx, Visitor v, Args&&... args) |
1386 | | { |
1387 | | assert(idx < count()); |
1388 | | auto is_leaf = shift_ == BL; |
1389 | | auto child = node_->inner()[idx]; |
1390 | | return is_leaf ? make_full_leaf_pos(child).visit(v, args...) |
1391 | | : make_full_pos(child, shift_ - B).visit(v, args...); |
1392 | | } |
1393 | | |
1394 | | template <typename Visitor, typename... Args> |
1395 | | decltype(auto) nth_sub_leaf(count_t idx, Visitor v, Args&&... args) |
1396 | | { |
1397 | | assert(shift_ == BL); |
1398 | | assert(idx < count()); |
1399 | | auto child = node_->inner()[idx]; |
1400 | | return make_full_leaf_pos(child).visit(v, args...); |
1401 | | } |
1402 | | |
1403 | | template <typename Visitor, typename... Args> |
1404 | | decltype(auto) visit(Visitor v, Args&&... args) |
1405 | 639k | { |
1406 | 639k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); |
1407 | 639k | } decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor) Line | Count | Source | 1405 | 9.83k | { | 1406 | 9.83k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 9.83k | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1405 | 1.28k | { | 1406 | 1.28k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 1.28k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 1405 | 2.02k | { | 1406 | 2.02k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 2.02k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 1405 | 2.07k | { | 1406 | 2.07k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 2.07k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&&) Line | Count | Source | 1405 | 2.75k | { | 1406 | 2.75k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 2.75k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&&) Line | Count | Source | 1405 | 1.22k | { | 1406 | 1.22k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 1.22k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1405 | 1.05k | { | 1406 | 1.05k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 1.05k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1405 | 279k | { | 1406 | 279k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 279k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1405 | 25.2k | { | 1406 | 25.2k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 25.2k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1405 | 3.93k | { | 1406 | 3.93k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 3.93k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1405 | 2.33k | { | 1406 | 2.33k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 2.33k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 1405 | 6.47k | { | 1406 | 6.47k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 6.47k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 2.52k | { | 1406 | 2.52k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 2.52k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 3.05k | { | 1406 | 3.05k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 3.05k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&) Line | Count | Source | 1405 | 1.84k | { | 1406 | 1.84k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 1.84k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 4.83k | { | 1406 | 4.83k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 4.83k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 2.78k | { | 1406 | 2.78k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 2.78k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 1.63k | { | 1406 | 1.63k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 1.63k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 254k | { | 1406 | 254k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 254k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 27.7k | { | 1406 | 27.7k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 27.7k | } |
decltype(auto) immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1405 | 2.31k | { | 1406 | 2.31k | return Visitor::visit_regular(*this, std::forward<Args>(args)...); | 1407 | 2.31k | } |
|
1408 | | }; |
1409 | | |
1410 | | template <typename NodeT> |
1411 | | full_pos<NodeT> make_full_pos(NodeT* node, shift_t shift) |
1412 | 629k | { |
1413 | 629k | assert(node); |
1414 | 629k | assert(shift >= NodeT::bits_leaf); |
1415 | 629k | return {node, shift}; |
1416 | 629k | } |
1417 | | |
1418 | | template <typename NodeT> |
1419 | | struct relaxed_pos |
1420 | | { |
1421 | | static constexpr auto B = NodeT::bits; |
1422 | | static constexpr auto BL = NodeT::bits_leaf; |
1423 | | |
1424 | | using node_t = NodeT; |
1425 | | using relaxed_t = typename NodeT::relaxed_t; |
1426 | | node_t* node_; |
1427 | | shift_t shift_; |
1428 | | relaxed_t* relaxed_; |
1429 | | |
1430 | 10.3M | count_t count() const { return relaxed_->d.count; } |
1431 | 7.49M | node_t* node() const { return node_; } |
1432 | 5.17M | size_t size() const { return relaxed_->d.sizes[relaxed_->d.count - 1]; } |
1433 | 3.26M | shift_t shift() const { return shift_; } |
1434 | 109k | count_t subindex(size_t idx) const { return index(idx); } |
1435 | 28.1k | relaxed_t* relaxed() const { return relaxed_; } |
1436 | | |
1437 | | size_t size_before(count_t offset) const |
1438 | 6.12M | { |
1439 | 6.12M | return offset ? relaxed_->d.sizes[offset - 1] : 0; |
1440 | 6.12M | } |
1441 | | |
1442 | | size_t size(count_t offset) const |
1443 | 2.84M | { |
1444 | 2.84M | return size_sbh(offset, size_before(offset)); |
1445 | 2.84M | } |
1446 | | |
1447 | | size_t size_sbh(count_t offset, size_t size_before_hint) const |
1448 | 2.95M | { |
1449 | 2.95M | assert(size_before_hint == size_before(offset)); |
1450 | 2.95M | return relaxed_->d.sizes[offset] - size_before_hint; |
1451 | 2.95M | } |
1452 | | |
1453 | | count_t index(size_t idx) const |
1454 | 864k | { |
1455 | 864k | auto offset = idx >> shift_; |
1456 | 1.01M | while (relaxed_->d.sizes[offset] <= idx) |
1457 | 151k | ++offset; |
1458 | 864k | return offset; |
1459 | 864k | } |
1460 | | |
1461 | | void copy_sizes(count_t offset, count_t n, size_t init, size_t* sizes) |
1462 | 218k | { |
1463 | 218k | auto e = sizes + n; |
1464 | 218k | auto prev = size_before(offset); |
1465 | 218k | auto these = relaxed_->d.sizes + offset; |
1466 | 590k | for (; sizes != e; ++sizes, ++these) { |
1467 | 372k | auto this_size = *these; |
1468 | 372k | init = *sizes = init + (this_size - prev); |
1469 | 372k | assert(init); |
1470 | 372k | prev = this_size; |
1471 | 372k | } |
1472 | 218k | } |
1473 | | |
1474 | | template <typename Visitor, typename... Args> |
1475 | | void each(Visitor v, Args&&... args) |
1476 | 0 | { |
1477 | 0 | each_left(v, relaxed_->d.count, args...); |
1478 | 0 | } |
1479 | | |
1480 | | template <typename Visitor, typename... Args> |
1481 | | bool each_pred(Visitor v, Args&&... args) |
1482 | | { |
1483 | | auto p = node_->inner(); |
1484 | | auto s = size_t{}; |
1485 | | auto n = count(); |
1486 | | if (shift_ == BL) { |
1487 | | for (auto i = count_t{0}; i < n; ++i) { |
1488 | | IMMER_PREFETCH(p + i + 1); |
1489 | | if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) |
1490 | | .visit(v, args...)) |
1491 | | return false; |
1492 | | s = relaxed_->d.sizes[i]; |
1493 | | } |
1494 | | } else { |
1495 | | auto ss = shift_ - B; |
1496 | | for (auto i = count_t{0}; i < n; ++i) { |
1497 | | if (!visit_maybe_relaxed_sub( |
1498 | | p[i], ss, relaxed_->d.sizes[i] - s, v, args...)) |
1499 | | return false; |
1500 | | s = relaxed_->d.sizes[i]; |
1501 | | } |
1502 | | } |
1503 | | return true; |
1504 | | } |
1505 | | |
1506 | | template <typename Visitor, typename... Args> |
1507 | | bool each_pred_i(Visitor v, count_t i, count_t n, Args&&... args) |
1508 | | { |
1509 | | if (shift_ == BL) { |
1510 | | auto p = node_->inner(); |
1511 | | auto s = i > 0 ? relaxed_->d.sizes[i - 1] : 0; |
1512 | | for (; i < n; ++i) { |
1513 | | IMMER_PREFETCH(p + i + 1); |
1514 | | if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) |
1515 | | .visit(v, args...)) |
1516 | | return false; |
1517 | | s = relaxed_->d.sizes[i]; |
1518 | | } |
1519 | | } else { |
1520 | | auto p = node_->inner(); |
1521 | | auto s = i > 0 ? relaxed_->d.sizes[i - 1] : 0; |
1522 | | auto ss = shift_ - B; |
1523 | | for (; i < n; ++i) { |
1524 | | if (!visit_maybe_relaxed_sub( |
1525 | | p[i], ss, relaxed_->d.sizes[i] - s, v, args...)) |
1526 | | return false; |
1527 | | s = relaxed_->d.sizes[i]; |
1528 | | } |
1529 | | } |
1530 | | return true; |
1531 | | } |
1532 | | |
1533 | | template <typename Visitor, typename... Args> |
1534 | | bool each_pred_left(Visitor v, count_t n, Args&&... args) |
1535 | | { |
1536 | | auto p = node_->inner(); |
1537 | | auto s = size_t{}; |
1538 | | if (shift_ == BL) { |
1539 | | for (auto i = count_t{0}; i < n; ++i) { |
1540 | | IMMER_PREFETCH(p + i + 1); |
1541 | | if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) |
1542 | | .visit(v, args...)) |
1543 | | return false; |
1544 | | s = relaxed_->d.sizes[i]; |
1545 | | } |
1546 | | } else { |
1547 | | auto ss = shift_ - B; |
1548 | | for (auto i = count_t{0}; i < n; ++i) { |
1549 | | if (!visit_maybe_relaxed_sub( |
1550 | | p[i], ss, relaxed_->d.sizes[i] - s, v, args...)) |
1551 | | return false; |
1552 | | s = relaxed_->d.sizes[i]; |
1553 | | } |
1554 | | } |
1555 | | return true; |
1556 | | } |
1557 | | |
1558 | | template <typename Visitor, typename... Args> |
1559 | | bool each_pred_right(Visitor v, count_t start, Args&&... args) |
1560 | | { |
1561 | | assert(start > 0); |
1562 | | assert(start <= relaxed_->d.count); |
1563 | | auto s = relaxed_->d.sizes[start - 1]; |
1564 | | auto p = node_->inner(); |
1565 | | if (shift_ == BL) { |
1566 | | for (auto i = start; i < relaxed_->d.count; ++i) { |
1567 | | IMMER_PREFETCH(p + i + 1); |
1568 | | if (!make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) |
1569 | | .visit(v, args...)) |
1570 | | return false; |
1571 | | s = relaxed_->d.sizes[i]; |
1572 | | } |
1573 | | } else { |
1574 | | auto ss = shift_ - B; |
1575 | | for (auto i = start; i < relaxed_->d.count; ++i) { |
1576 | | if (!visit_maybe_relaxed_sub( |
1577 | | p[i], ss, relaxed_->d.sizes[i] - s, v, args...)) |
1578 | | return false; |
1579 | | s = relaxed_->d.sizes[i]; |
1580 | | } |
1581 | | } |
1582 | | return true; |
1583 | | } |
1584 | | |
1585 | | template <typename Visitor, typename... Args> |
1586 | | void each_i(Visitor v, count_t i, count_t n, Args&&... args) |
1587 | | { |
1588 | | if (shift_ == BL) { |
1589 | | auto p = node_->inner(); |
1590 | | auto s = i > 0 ? relaxed_->d.sizes[i - 1] : 0; |
1591 | | for (; i < n; ++i) { |
1592 | | IMMER_PREFETCH(p + i + 1); |
1593 | | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) |
1594 | | .visit(v, args...); |
1595 | | s = relaxed_->d.sizes[i]; |
1596 | | } |
1597 | | } else { |
1598 | | auto p = node_->inner(); |
1599 | | auto s = i > 0 ? relaxed_->d.sizes[i - 1] : 0; |
1600 | | auto ss = shift_ - B; |
1601 | | for (; i < n; ++i) { |
1602 | | visit_maybe_relaxed_sub( |
1603 | | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); |
1604 | | s = relaxed_->d.sizes[i]; |
1605 | | } |
1606 | | } |
1607 | | } |
1608 | | |
1609 | | template <typename Visitor, typename... Args> |
1610 | | void each_sub(Visitor v, Args&&... args) |
1611 | | { |
1612 | | each_left(v, relaxed_->d.count, args...); |
1613 | | } |
1614 | | |
1615 | | template <typename Visitor, typename... Args> |
1616 | | void each_left_sub(Visitor v, Args&&... args) |
1617 | 1.85M | { |
1618 | 1.85M | each_left(v, relaxed_->d.count - 1, args...); |
1619 | 1.85M | } void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1617 | 926k | { | 1618 | 926k | each_left(v, relaxed_->d.count - 1, args...); | 1619 | 926k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1617 | 216k | { | 1618 | 216k | each_left(v, relaxed_->d.count - 1, args...); | 1619 | 216k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1617 | 710k | { | 1618 | 710k | each_left(v, relaxed_->d.count - 1, args...); | 1619 | 710k | } |
|
1620 | | |
1621 | | template <typename Visitor, typename... Args> |
1622 | | void each_left(Visitor v, count_t n, Args&&... args) |
1623 | 1.85M | { |
1624 | 1.85M | auto p = node_->inner(); |
1625 | 1.85M | auto s = size_t{}; |
1626 | 1.85M | if (shift_ == BL) { |
1627 | 543k | for (auto i = count_t{0}; i < n; ++i) { |
1628 | 336k | IMMER_PREFETCH(p + i + 1); |
1629 | 336k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) |
1630 | 336k | .visit(v, args...); |
1631 | 336k | s = relaxed_->d.sizes[i]; |
1632 | 336k | assert(s); |
1633 | 336k | } |
1634 | 1.64M | } else { |
1635 | 1.64M | auto ss = shift_ - B; |
1636 | 4.31M | for (auto i = count_t{0}; i < n; ++i) { |
1637 | 2.67M | visit_maybe_relaxed_sub( |
1638 | 2.67M | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); |
1639 | 2.67M | s = relaxed_->d.sizes[i]; |
1640 | 2.67M | assert(s); |
1641 | 2.67M | } |
1642 | 1.64M | } |
1643 | 1.85M | } Unexecuted instantiation: void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor, unsigned int) void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1623 | 926k | { | 1624 | 926k | auto p = node_->inner(); | 1625 | 926k | auto s = size_t{}; | 1626 | 926k | if (shift_ == BL) { | 1627 | 271k | for (auto i = count_t{0}; i < n; ++i) { | 1628 | 168k | IMMER_PREFETCH(p + i + 1); | 1629 | 168k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) | 1630 | 168k | .visit(v, args...); | 1631 | 168k | s = relaxed_->d.sizes[i]; | 1632 | 168k | assert(s); | 1633 | 168k | } | 1634 | 823k | } else { | 1635 | 823k | auto ss = shift_ - B; | 1636 | 2.15M | for (auto i = count_t{0}; i < n; ++i) { | 1637 | 1.33M | visit_maybe_relaxed_sub( | 1638 | 1.33M | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); | 1639 | 1.33M | s = relaxed_->d.sizes[i]; | 1640 | | assert(s); | 1641 | 1.33M | } | 1642 | 823k | } | 1643 | 926k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1623 | 216k | { | 1624 | 216k | auto p = node_->inner(); | 1625 | 216k | auto s = size_t{}; | 1626 | 216k | if (shift_ == BL) { | 1627 | 107k | for (auto i = count_t{0}; i < n; ++i) { | 1628 | 70.6k | IMMER_PREFETCH(p + i + 1); | 1629 | 70.6k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) | 1630 | 70.6k | .visit(v, args...); | 1631 | 70.6k | s = relaxed_->d.sizes[i]; | 1632 | 70.6k | assert(s); | 1633 | 70.6k | } | 1634 | 178k | } else { | 1635 | 178k | auto ss = shift_ - B; | 1636 | 636k | for (auto i = count_t{0}; i < n; ++i) { | 1637 | 457k | visit_maybe_relaxed_sub( | 1638 | 457k | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); | 1639 | 457k | s = relaxed_->d.sizes[i]; | 1640 | | assert(s); | 1641 | 457k | } | 1642 | 178k | } | 1643 | 216k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_left<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1623 | 710k | { | 1624 | 710k | auto p = node_->inner(); | 1625 | 710k | auto s = size_t{}; | 1626 | 710k | if (shift_ == BL) { | 1627 | 163k | for (auto i = count_t{0}; i < n; ++i) { | 1628 | 97.8k | IMMER_PREFETCH(p + i + 1); | 1629 | 97.8k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) | 1630 | 97.8k | .visit(v, args...); | 1631 | 97.8k | s = relaxed_->d.sizes[i]; | 1632 | 97.8k | assert(s); | 1633 | 97.8k | } | 1634 | 644k | } else { | 1635 | 644k | auto ss = shift_ - B; | 1636 | 1.52M | for (auto i = count_t{0}; i < n; ++i) { | 1637 | 878k | visit_maybe_relaxed_sub( | 1638 | 878k | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); | 1639 | 878k | s = relaxed_->d.sizes[i]; | 1640 | | assert(s); | 1641 | 878k | } | 1642 | 644k | } | 1643 | 710k | } |
|
1644 | | |
1645 | | template <typename Visitor, typename... Args> |
1646 | | void each_right_sub(Visitor v, Args&&... args) |
1647 | 1.32M | { |
1648 | 1.32M | each_right(v, 1, std::forward<Args>(args)...); |
1649 | 1.32M | } void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1647 | 662k | { | 1648 | 662k | each_right(v, 1, std::forward<Args>(args)...); | 1649 | 662k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1647 | 228k | { | 1648 | 228k | each_right(v, 1, std::forward<Args>(args)...); | 1649 | 228k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right_sub<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1647 | 433k | { | 1648 | 433k | each_right(v, 1, std::forward<Args>(args)...); | 1649 | 433k | } |
|
1650 | | |
1651 | | template <typename Visitor, typename... Args> |
1652 | | void each_right(Visitor v, count_t start, Args&&... args) |
1653 | 1.33M | { |
1654 | 1.33M | assert(start > 0); |
1655 | 1.33M | assert(start <= relaxed_->d.count); |
1656 | 1.33M | auto s = relaxed_->d.sizes[start - 1]; |
1657 | 1.33M | auto p = node_->inner(); |
1658 | 1.33M | if (shift_ == BL) { |
1659 | 754k | for (auto i = start; i < relaxed_->d.count; ++i) { |
1660 | 529k | IMMER_PREFETCH(p + i + 1); |
1661 | 529k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) |
1662 | 529k | .visit(v, args...); |
1663 | 529k | s = relaxed_->d.sizes[i]; |
1664 | 529k | assert(s); |
1665 | 529k | } |
1666 | 1.11M | } else { |
1667 | 1.11M | auto ss = shift_ - B; |
1668 | 3.80M | for (auto i = start; i < relaxed_->d.count; ++i) { |
1669 | 2.68M | visit_maybe_relaxed_sub( |
1670 | 2.68M | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); |
1671 | 2.68M | s = relaxed_->d.sizes[i]; |
1672 | 2.68M | assert(s); |
1673 | 2.68M | } |
1674 | 1.11M | } |
1675 | 1.33M | } void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, unsigned int, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1653 | 662k | { | 1654 | 662k | assert(start > 0); | 1655 | 662k | assert(start <= relaxed_->d.count); | 1656 | 662k | auto s = relaxed_->d.sizes[start - 1]; | 1657 | 662k | auto p = node_->inner(); | 1658 | 662k | if (shift_ == BL) { | 1659 | 373k | for (auto i = start; i < relaxed_->d.count; ++i) { | 1660 | 262k | IMMER_PREFETCH(p + i + 1); | 1661 | 262k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) | 1662 | 262k | .visit(v, args...); | 1663 | 262k | s = relaxed_->d.sizes[i]; | 1664 | 262k | assert(s); | 1665 | 262k | } | 1666 | 551k | } else { | 1667 | 551k | auto ss = shift_ - B; | 1668 | 1.88M | for (auto i = start; i < relaxed_->d.count; ++i) { | 1669 | 1.33M | visit_maybe_relaxed_sub( | 1670 | 1.33M | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); | 1671 | 1.33M | s = relaxed_->d.sizes[i]; | 1672 | | assert(s); | 1673 | 1.33M | } | 1674 | 551k | } | 1675 | 662k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, unsigned int, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1653 | 228k | { | 1654 | 228k | assert(start > 0); | 1655 | 228k | assert(start <= relaxed_->d.count); | 1656 | 228k | auto s = relaxed_->d.sizes[start - 1]; | 1657 | 228k | auto p = node_->inner(); | 1658 | 228k | if (shift_ == BL) { | 1659 | 151k | for (auto i = start; i < relaxed_->d.count; ++i) { | 1660 | 110k | IMMER_PREFETCH(p + i + 1); | 1661 | 110k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) | 1662 | 110k | .visit(v, args...); | 1663 | 110k | s = relaxed_->d.sizes[i]; | 1664 | 110k | assert(s); | 1665 | 110k | } | 1666 | 187k | } else { | 1667 | 187k | auto ss = shift_ - B; | 1668 | 693k | for (auto i = start; i < relaxed_->d.count; ++i) { | 1669 | 505k | visit_maybe_relaxed_sub( | 1670 | 505k | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); | 1671 | 505k | s = relaxed_->d.sizes[i]; | 1672 | | assert(s); | 1673 | 505k | } | 1674 | 187k | } | 1675 | 228k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor, unsigned int) Line | Count | Source | 1653 | 15.7k | { | 1654 | 15.7k | assert(start > 0); | 1655 | 15.7k | assert(start <= relaxed_->d.count); | 1656 | 15.7k | auto s = relaxed_->d.sizes[start - 1]; | 1657 | 15.7k | auto p = node_->inner(); | 1658 | 15.7k | if (shift_ == BL) { | 1659 | 7.47k | for (auto i = start; i < relaxed_->d.count; ++i) { | 1660 | 3.60k | IMMER_PREFETCH(p + i + 1); | 1661 | 3.60k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) | 1662 | 3.60k | .visit(v, args...); | 1663 | 3.60k | s = relaxed_->d.sizes[i]; | 1664 | 3.60k | assert(s); | 1665 | 3.60k | } | 1666 | 11.9k | } else { | 1667 | 11.9k | auto ss = shift_ - B; | 1668 | 23.7k | for (auto i = start; i < relaxed_->d.count; ++i) { | 1669 | 11.8k | visit_maybe_relaxed_sub( | 1670 | 11.8k | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); | 1671 | 11.8k | s = relaxed_->d.sizes[i]; | 1672 | | assert(s); | 1673 | 11.8k | } | 1674 | 11.9k | } | 1675 | 15.7k | } |
void immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::each_right<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, unsigned int, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1653 | 433k | { | 1654 | 433k | assert(start > 0); | 1655 | 433k | assert(start <= relaxed_->d.count); | 1656 | 433k | auto s = relaxed_->d.sizes[start - 1]; | 1657 | 433k | auto p = node_->inner(); | 1658 | 433k | if (shift_ == BL) { | 1659 | 222k | for (auto i = start; i < relaxed_->d.count; ++i) { | 1660 | 151k | IMMER_PREFETCH(p + i + 1); | 1661 | 151k | make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s) | 1662 | 151k | .visit(v, args...); | 1663 | 151k | s = relaxed_->d.sizes[i]; | 1664 | 151k | assert(s); | 1665 | 151k | } | 1666 | 363k | } else { | 1667 | 363k | auto ss = shift_ - B; | 1668 | 1.19M | for (auto i = start; i < relaxed_->d.count; ++i) { | 1669 | 831k | visit_maybe_relaxed_sub( | 1670 | 831k | p[i], ss, relaxed_->d.sizes[i] - s, v, args...); | 1671 | 831k | s = relaxed_->d.sizes[i]; | 1672 | | assert(s); | 1673 | 831k | } | 1674 | 363k | } | 1675 | 433k | } |
|
1676 | | |
1677 | | template <typename Visitor, typename... Args> |
1678 | | decltype(auto) towards(Visitor v, size_t idx, Args&&... args) |
1679 | | { |
1680 | | return towards_oh(v, idx, subindex(idx), args...); |
1681 | | } |
1682 | | |
1683 | | template <typename Visitor, typename... Args> |
1684 | | decltype(auto) |
1685 | | towards_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
1686 | 178k | { |
1687 | 178k | assert(offset_hint == index(idx)); |
1688 | 178k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; |
1689 | 178k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); |
1690 | 178k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1686 | 28.1k | { | 1687 | 28.1k | assert(offset_hint == index(idx)); | 1688 | 28.1k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 28.1k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 28.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Line | Count | Source | 1686 | 10.0k | { | 1687 | 10.0k | assert(offset_hint == index(idx)); | 1688 | 10.0k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 10.0k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 10.0k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 1686 | 8.27k | { | 1687 | 8.27k | assert(offset_hint == index(idx)); | 1688 | 8.27k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 8.27k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 8.27k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&) Line | Count | Source | 1686 | 25.3k | { | 1687 | 25.3k | assert(offset_hint == index(idx)); | 1688 | 25.3k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 25.3k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 25.3k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1686 | 35.1k | { | 1687 | 35.1k | assert(offset_hint == index(idx)); | 1688 | 35.1k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 35.1k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 35.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1686 | 37.1k | { | 1687 | 37.1k | assert(offset_hint == index(idx)); | 1688 | 37.1k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 37.1k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 37.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1686 | 17.9k | { | 1687 | 17.9k | assert(offset_hint == index(idx)); | 1688 | 17.9k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 17.9k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 17.9k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1686 | 16.8k | { | 1687 | 16.8k | assert(offset_hint == index(idx)); | 1688 | 16.8k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1689 | 16.8k | return towards_oh_sbh(v, idx, offset_hint, left_size, args...); | 1690 | 16.8k | } |
|
1691 | | |
1692 | | template <typename Visitor, typename... Args> |
1693 | | decltype(auto) towards_oh_sbh(Visitor v, |
1694 | | size_t idx, |
1695 | | count_t offset_hint, |
1696 | | size_t left_size_hint, |
1697 | | Args&&... args) |
1698 | 178k | { |
1699 | 178k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); |
1700 | 178k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1698 | 28.1k | { | 1699 | 28.1k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 28.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned long) Line | Count | Source | 1698 | 10.0k | { | 1699 | 10.0k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 10.0k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned long) Line | Count | Source | 1698 | 8.27k | { | 1699 | 8.27k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 8.27k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 1698 | 25.3k | { | 1699 | 25.3k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 25.3k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1698 | 35.1k | { | 1699 | 35.1k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 35.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1698 | 37.1k | { | 1699 | 37.1k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 37.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1698 | 17.9k | { | 1699 | 17.9k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 17.9k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1698 | 16.8k | { | 1699 | 16.8k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...); | 1700 | 16.8k | } |
|
1701 | | |
1702 | | template <typename Visitor, typename... Args> |
1703 | | decltype(auto) |
1704 | | towards_sub_oh(Visitor v, size_t idx, count_t offset_hint, Args&&... args) |
1705 | 109k | { |
1706 | 109k | assert(offset_hint == index(idx)); |
1707 | 109k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; |
1708 | 109k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...); |
1709 | 109k | } decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int) Line | Count | Source | 1705 | 1.42k | { | 1706 | 1.42k | assert(offset_hint == index(idx)); | 1707 | 1.42k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1708 | 1.42k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...); | 1709 | 1.42k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int) Line | Count | Source | 1705 | 107k | { | 1706 | 107k | assert(offset_hint == index(idx)); | 1707 | 107k | auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0; | 1708 | 107k | return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...); | 1709 | 107k | } |
|
1710 | | |
1711 | | template <typename Visitor, typename... Args> |
1712 | | decltype(auto) towards_sub_oh_sbh(Visitor v, |
1713 | | size_t idx, |
1714 | | count_t offset_hint, |
1715 | | size_t left_size_hint, |
1716 | | Args&&... args) |
1717 | 288k | { |
1718 | 288k | assert(offset_hint == index(idx)); |
1719 | 288k | assert(left_size_hint == |
1720 | 288k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); |
1721 | 288k | auto child = node_->inner()[offset_hint]; |
1722 | 288k | auto is_leaf = shift_ == BL; |
1723 | 288k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; |
1724 | 288k | auto next_idx = idx - left_size_hint; |
1725 | 288k | return is_leaf |
1726 | 288k | ? make_leaf_sub_pos(child, next_size) |
1727 | 37.0k | .visit(v, next_idx, args...) |
1728 | 288k | : visit_maybe_relaxed_sub( |
1729 | 251k | child, shift_ - B, next_size, v, next_idx, args...); |
1730 | 288k | } flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1717 | 28.1k | { | 1718 | 28.1k | assert(offset_hint == index(idx)); | 1719 | 28.1k | assert(left_size_hint == | 1720 | 28.1k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 28.1k | auto child = node_->inner()[offset_hint]; | 1722 | 28.1k | auto is_leaf = shift_ == BL; | 1723 | 28.1k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 28.1k | auto next_idx = idx - left_size_hint; | 1725 | 28.1k | return is_leaf | 1726 | 28.1k | ? make_leaf_sub_pos(child, next_size) | 1727 | 3.32k | .visit(v, next_idx, args...) | 1728 | 28.1k | : visit_maybe_relaxed_sub( | 1729 | 24.8k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 28.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned long) Line | Count | Source | 1717 | 10.0k | { | 1718 | 10.0k | assert(offset_hint == index(idx)); | 1719 | 10.0k | assert(left_size_hint == | 1720 | 10.0k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 10.0k | auto child = node_->inner()[offset_hint]; | 1722 | 10.0k | auto is_leaf = shift_ == BL; | 1723 | 10.0k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 10.0k | auto next_idx = idx - left_size_hint; | 1725 | 10.0k | return is_leaf | 1726 | 10.0k | ? make_leaf_sub_pos(child, next_size) | 1727 | 734 | .visit(v, next_idx, args...) | 1728 | 10.0k | : visit_maybe_relaxed_sub( | 1729 | 9.29k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 10.0k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned long) Line | Count | Source | 1717 | 8.27k | { | 1718 | 8.27k | assert(offset_hint == index(idx)); | 1719 | 8.27k | assert(left_size_hint == | 1720 | 8.27k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 8.27k | auto child = node_->inner()[offset_hint]; | 1722 | 8.27k | auto is_leaf = shift_ == BL; | 1723 | 8.27k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 8.27k | auto next_idx = idx - left_size_hint; | 1725 | 8.27k | return is_leaf | 1726 | 8.27k | ? make_leaf_sub_pos(child, next_size) | 1727 | 2.76k | .visit(v, next_idx, args...) | 1728 | 8.27k | : visit_maybe_relaxed_sub( | 1729 | 5.50k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 8.27k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long, unsigned int, unsigned long) Line | Count | Source | 1717 | 1.42k | { | 1718 | 1.42k | assert(offset_hint == index(idx)); | 1719 | 1.42k | assert(left_size_hint == | 1720 | 1.42k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 1.42k | auto child = node_->inner()[offset_hint]; | 1722 | 1.42k | auto is_leaf = shift_ == BL; | 1723 | 1.42k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 1.42k | auto next_idx = idx - left_size_hint; | 1725 | 1.42k | return is_leaf | 1726 | 1.42k | ? make_leaf_sub_pos(child, next_size) | 1727 | 0 | .visit(v, next_idx, args...) | 1728 | 1.42k | : visit_maybe_relaxed_sub( | 1729 | 1.42k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 1.42k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long, unsigned int, unsigned long) Line | Count | Source | 1717 | 107k | { | 1718 | 107k | assert(offset_hint == index(idx)); | 1719 | 107k | assert(left_size_hint == | 1720 | 107k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 107k | auto child = node_->inner()[offset_hint]; | 1722 | 107k | auto is_leaf = shift_ == BL; | 1723 | 107k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 107k | auto next_idx = idx - left_size_hint; | 1725 | 107k | return is_leaf | 1726 | 107k | ? make_leaf_sub_pos(child, next_size) | 1727 | 11.9k | .visit(v, next_idx, args...) | 1728 | 107k | : visit_maybe_relaxed_sub( | 1729 | 95.8k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 107k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 1717 | 25.3k | { | 1718 | 25.3k | assert(offset_hint == index(idx)); | 1719 | 25.3k | assert(left_size_hint == | 1720 | 25.3k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 25.3k | auto child = node_->inner()[offset_hint]; | 1722 | 25.3k | auto is_leaf = shift_ == BL; | 1723 | 25.3k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 25.3k | auto next_idx = idx - left_size_hint; | 1725 | 25.3k | return is_leaf | 1726 | 25.3k | ? make_leaf_sub_pos(child, next_size) | 1727 | 3.54k | .visit(v, next_idx, args...) | 1728 | 25.3k | : visit_maybe_relaxed_sub( | 1729 | 21.8k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 25.3k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1717 | 35.1k | { | 1718 | 35.1k | assert(offset_hint == index(idx)); | 1719 | 35.1k | assert(left_size_hint == | 1720 | 35.1k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 35.1k | auto child = node_->inner()[offset_hint]; | 1722 | 35.1k | auto is_leaf = shift_ == BL; | 1723 | 35.1k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 35.1k | auto next_idx = idx - left_size_hint; | 1725 | 35.1k | return is_leaf | 1726 | 35.1k | ? make_leaf_sub_pos(child, next_size) | 1727 | 2.41k | .visit(v, next_idx, args...) | 1728 | 35.1k | : visit_maybe_relaxed_sub( | 1729 | 32.7k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 35.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1717 | 37.1k | { | 1718 | 37.1k | assert(offset_hint == index(idx)); | 1719 | 37.1k | assert(left_size_hint == | 1720 | 37.1k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 37.1k | auto child = node_->inner()[offset_hint]; | 1722 | 37.1k | auto is_leaf = shift_ == BL; | 1723 | 37.1k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 37.1k | auto next_idx = idx - left_size_hint; | 1725 | 37.1k | return is_leaf | 1726 | 37.1k | ? make_leaf_sub_pos(child, next_size) | 1727 | 1.61k | .visit(v, next_idx, args...) | 1728 | 37.1k | : visit_maybe_relaxed_sub( | 1729 | 35.5k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 37.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1717 | 17.9k | { | 1718 | 17.9k | assert(offset_hint == index(idx)); | 1719 | 17.9k | assert(left_size_hint == | 1720 | 17.9k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 17.9k | auto child = node_->inner()[offset_hint]; | 1722 | 17.9k | auto is_leaf = shift_ == BL; | 1723 | 17.9k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 17.9k | auto next_idx = idx - left_size_hint; | 1725 | 17.9k | return is_leaf | 1726 | 17.9k | ? make_leaf_sub_pos(child, next_size) | 1727 | 4.54k | .visit(v, next_idx, args...) | 1728 | 17.9k | : visit_maybe_relaxed_sub( | 1729 | 13.3k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 17.9k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::towards_sub_oh_sbh<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1717 | 16.8k | { | 1718 | 16.8k | assert(offset_hint == index(idx)); | 1719 | 16.8k | assert(left_size_hint == | 1720 | 16.8k | (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0)); | 1721 | 16.8k | auto child = node_->inner()[offset_hint]; | 1722 | 16.8k | auto is_leaf = shift_ == BL; | 1723 | 16.8k | auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint; | 1724 | 16.8k | auto next_idx = idx - left_size_hint; | 1725 | 16.8k | return is_leaf | 1726 | 16.8k | ? make_leaf_sub_pos(child, next_size) | 1727 | 6.21k | .visit(v, next_idx, args...) | 1728 | 16.8k | : visit_maybe_relaxed_sub( | 1729 | 10.6k | child, shift_ - B, next_size, v, next_idx, args...); | 1730 | 16.8k | } |
|
1731 | | |
1732 | | template <typename Visitor, typename... Args> |
1733 | | decltype(auto) last_oh_csh(Visitor v, |
1734 | | count_t offset_hint, |
1735 | | size_t child_size_hint, |
1736 | | Args&&... args) |
1737 | 950k | { |
1738 | 950k | assert(offset_hint == count() - 1); |
1739 | 950k | assert(child_size_hint == size(offset_hint)); |
1740 | 950k | auto child = node_->inner()[offset_hint]; |
1741 | 950k | auto is_leaf = shift_ == BL; |
1742 | 950k | return is_leaf |
1743 | 950k | ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...) |
1744 | 950k | : visit_maybe_relaxed_sub( |
1745 | 950k | child, shift_ - B, child_size_hint, v, args...); |
1746 | 950k | } decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh_csh<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned int, unsigned long, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1737 | 44.2k | { | 1738 | 44.2k | assert(offset_hint == count() - 1); | 1739 | 44.2k | assert(child_size_hint == size(offset_hint)); | 1740 | 44.2k | auto child = node_->inner()[offset_hint]; | 1741 | 44.2k | auto is_leaf = shift_ == BL; | 1742 | 44.2k | return is_leaf | 1743 | 44.2k | ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...) | 1744 | 44.2k | : visit_maybe_relaxed_sub( | 1745 | 44.2k | child, shift_ - B, child_size_hint, v, args...); | 1746 | 44.2k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh_csh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1737 | 884k | { | 1738 | 884k | assert(offset_hint == count() - 1); | 1739 | 884k | assert(child_size_hint == size(offset_hint)); | 1740 | 884k | auto child = node_->inner()[offset_hint]; | 1741 | 884k | auto is_leaf = shift_ == BL; | 1742 | 884k | return is_leaf | 1743 | 884k | ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...) | 1744 | 884k | : visit_maybe_relaxed_sub( | 1745 | 884k | child, shift_ - B, child_size_hint, v, args...); | 1746 | 884k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_oh_csh<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned int, unsigned long, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1737 | 21.6k | { | 1738 | 21.6k | assert(offset_hint == count() - 1); | 1739 | 21.6k | assert(child_size_hint == size(offset_hint)); | 1740 | 21.6k | auto child = node_->inner()[offset_hint]; | 1741 | 21.6k | auto is_leaf = shift_ == BL; | 1742 | 21.6k | return is_leaf | 1743 | 21.6k | ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...) | 1744 | 21.6k | : visit_maybe_relaxed_sub( | 1745 | 21.6k | child, shift_ - B, child_size_hint, v, args...); | 1746 | 21.6k | } |
|
1747 | | |
1748 | | template <typename Visitor, typename... Args> |
1749 | | decltype(auto) last_sub(Visitor v, Args&&... args) |
1750 | 926k | { |
1751 | 926k | auto offset = relaxed_->d.count - 1; |
1752 | 926k | auto child = node_->inner()[offset]; |
1753 | 926k | auto child_size = size(offset); |
1754 | 926k | auto is_leaf = shift_ == BL; |
1755 | 926k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) |
1756 | 926k | : visit_maybe_relaxed_sub( |
1757 | 823k | child, shift_ - B, child_size, v, args...); |
1758 | 926k | } decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 3.34k | { | 1751 | 3.34k | auto offset = relaxed_->d.count - 1; | 1752 | 3.34k | auto child = node_->inner()[offset]; | 1753 | 3.34k | auto child_size = size(offset); | 1754 | 3.34k | auto is_leaf = shift_ == BL; | 1755 | 3.34k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 3.34k | : visit_maybe_relaxed_sub( | 1757 | 3.34k | child, shift_ - B, child_size, v, args...); | 1758 | 3.34k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 2.11k | { | 1751 | 2.11k | auto offset = relaxed_->d.count - 1; | 1752 | 2.11k | auto child = node_->inner()[offset]; | 1753 | 2.11k | auto child_size = size(offset); | 1754 | 2.11k | auto is_leaf = shift_ == BL; | 1755 | 2.11k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 2.11k | : visit_maybe_relaxed_sub( | 1757 | 2.11k | child, shift_ - B, child_size, v, args...); | 1758 | 2.11k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 2.04k | { | 1751 | 2.04k | auto offset = relaxed_->d.count - 1; | 1752 | 2.04k | auto child = node_->inner()[offset]; | 1753 | 2.04k | auto child_size = size(offset); | 1754 | 2.04k | auto is_leaf = shift_ == BL; | 1755 | 2.04k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 2.04k | : visit_maybe_relaxed_sub( | 1757 | 782 | child, shift_ - B, child_size, v, args...); | 1758 | 2.04k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 2.09k | { | 1751 | 2.09k | auto offset = relaxed_->d.count - 1; | 1752 | 2.09k | auto child = node_->inner()[offset]; | 1753 | 2.09k | auto child_size = size(offset); | 1754 | 2.09k | auto is_leaf = shift_ == BL; | 1755 | 2.09k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 2.09k | : visit_maybe_relaxed_sub( | 1757 | 1.35k | child, shift_ - B, child_size, v, args...); | 1758 | 2.09k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 206k | { | 1751 | 206k | auto offset = relaxed_->d.count - 1; | 1752 | 206k | auto child = node_->inner()[offset]; | 1753 | 206k | auto child_size = size(offset); | 1754 | 206k | auto is_leaf = shift_ == BL; | 1755 | 206k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 206k | : visit_maybe_relaxed_sub( | 1757 | 171k | child, shift_ - B, child_size, v, args...); | 1758 | 206k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 194k | { | 1751 | 194k | auto offset = relaxed_->d.count - 1; | 1752 | 194k | auto child = node_->inner()[offset]; | 1753 | 194k | auto child_size = size(offset); | 1754 | 194k | auto is_leaf = shift_ == BL; | 1755 | 194k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 194k | : visit_maybe_relaxed_sub( | 1757 | 194k | child, shift_ - B, child_size, v, args...); | 1758 | 194k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 229k | { | 1751 | 229k | auto offset = relaxed_->d.count - 1; | 1752 | 229k | auto child = node_->inner()[offset]; | 1753 | 229k | auto child_size = size(offset); | 1754 | 229k | auto is_leaf = shift_ == BL; | 1755 | 229k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 229k | : visit_maybe_relaxed_sub( | 1757 | 229k | child, shift_ - B, child_size, v, args...); | 1758 | 229k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 2.08k | { | 1751 | 2.08k | auto offset = relaxed_->d.count - 1; | 1752 | 2.08k | auto child = node_->inner()[offset]; | 1753 | 2.08k | auto child_size = size(offset); | 1754 | 2.08k | auto is_leaf = shift_ == BL; | 1755 | 2.08k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 2.08k | : visit_maybe_relaxed_sub( | 1757 | 745 | child, shift_ - B, child_size, v, args...); | 1758 | 2.08k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 39.6k | { | 1751 | 39.6k | auto offset = relaxed_->d.count - 1; | 1752 | 39.6k | auto child = node_->inner()[offset]; | 1753 | 39.6k | auto child_size = size(offset); | 1754 | 39.6k | auto is_leaf = shift_ == BL; | 1755 | 39.6k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 39.6k | : visit_maybe_relaxed_sub( | 1757 | 6.51k | child, shift_ - B, child_size, v, args...); | 1758 | 39.6k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::last_sub<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1750 | 244k | { | 1751 | 244k | auto offset = relaxed_->d.count - 1; | 1752 | 244k | auto child = node_->inner()[offset]; | 1753 | 244k | auto child_size = size(offset); | 1754 | 244k | auto is_leaf = shift_ == BL; | 1755 | 244k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1756 | 244k | : visit_maybe_relaxed_sub( | 1757 | 213k | child, shift_ - B, child_size, v, args...); | 1758 | 244k | } |
|
1759 | | |
1760 | | template <typename Visitor, typename... Args> |
1761 | | decltype(auto) first_sub(Visitor v, Args&&... args) |
1762 | 551k | { |
1763 | 551k | auto child = node_->inner()[0]; |
1764 | 551k | auto child_size = relaxed_->d.sizes[0]; |
1765 | 551k | auto is_leaf = shift_ == BL; |
1766 | 551k | assert(child_size); |
1767 | 551k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) |
1768 | 551k | : visit_maybe_relaxed_sub( |
1769 | 551k | child, shift_ - B, child_size, v, args...); |
1770 | 551k | } decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1762 | 5.86k | { | 1763 | 5.86k | auto child = node_->inner()[0]; | 1764 | 5.86k | auto child_size = relaxed_->d.sizes[0]; | 1765 | 5.86k | auto is_leaf = shift_ == BL; | 1766 | 5.86k | assert(child_size); | 1767 | 5.86k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1768 | 5.86k | : visit_maybe_relaxed_sub( | 1769 | 5.86k | child, shift_ - B, child_size, v, args...); | 1770 | 5.86k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1762 | 11.1k | { | 1763 | 11.1k | auto child = node_->inner()[0]; | 1764 | 11.1k | auto child_size = relaxed_->d.sizes[0]; | 1765 | 11.1k | auto is_leaf = shift_ == BL; | 1766 | 11.1k | assert(child_size); | 1767 | 11.1k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1768 | 11.1k | : visit_maybe_relaxed_sub( | 1769 | 11.1k | child, shift_ - B, child_size, v, args...); | 1770 | 11.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1762 | 170k | { | 1763 | 170k | auto child = node_->inner()[0]; | 1764 | 170k | auto child_size = relaxed_->d.sizes[0]; | 1765 | 170k | auto is_leaf = shift_ == BL; | 1766 | 170k | assert(child_size); | 1767 | 170k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1768 | 170k | : visit_maybe_relaxed_sub( | 1769 | 170k | child, shift_ - B, child_size, v, args...); | 1770 | 170k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1762 | 13.8k | { | 1763 | 13.8k | auto child = node_->inner()[0]; | 1764 | 13.8k | auto child_size = relaxed_->d.sizes[0]; | 1765 | 13.8k | auto is_leaf = shift_ == BL; | 1766 | 13.8k | assert(child_size); | 1767 | 13.8k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1768 | 13.8k | : visit_maybe_relaxed_sub( | 1769 | 13.8k | child, shift_ - B, child_size, v, args...); | 1770 | 13.8k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1762 | 124k | { | 1763 | 124k | auto child = node_->inner()[0]; | 1764 | 124k | auto child_size = relaxed_->d.sizes[0]; | 1765 | 124k | auto is_leaf = shift_ == BL; | 1766 | 124k | assert(child_size); | 1767 | 124k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1768 | 124k | : visit_maybe_relaxed_sub( | 1769 | 124k | child, shift_ - B, child_size, v, args...); | 1770 | 124k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1762 | 225k | { | 1763 | 225k | auto child = node_->inner()[0]; | 1764 | 225k | auto child_size = relaxed_->d.sizes[0]; | 1765 | 225k | auto is_leaf = shift_ == BL; | 1766 | 225k | assert(child_size); | 1767 | 225k | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) | 1768 | 225k | : visit_maybe_relaxed_sub( | 1769 | 225k | child, shift_ - B, child_size, v, args...); | 1770 | 225k | } |
|
1771 | | |
1772 | | template <typename Visitor, typename... Args> |
1773 | | decltype(auto) first_sub_leaf(Visitor v, Args&&... args) |
1774 | 110k | { |
1775 | 110k | assert(shift_ == BL); |
1776 | 110k | auto child = node_->inner()[0]; |
1777 | 110k | auto child_size = relaxed_->d.sizes[0]; |
1778 | 110k | return make_leaf_sub_pos(child, child_size).visit(v, args...); |
1779 | 110k | } decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1774 | 1.53k | { | 1775 | 1.53k | assert(shift_ == BL); | 1776 | 1.53k | auto child = node_->inner()[0]; | 1777 | 1.53k | auto child_size = relaxed_->d.sizes[0]; | 1778 | 1.53k | return make_leaf_sub_pos(child, child_size).visit(v, args...); | 1779 | 1.53k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1774 | 38.8k | { | 1775 | 38.8k | assert(shift_ == BL); | 1776 | 38.8k | auto child = node_->inner()[0]; | 1777 | 38.8k | auto child_size = relaxed_->d.sizes[0]; | 1778 | 38.8k | return make_leaf_sub_pos(child, child_size).visit(v, args...); | 1779 | 38.8k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1774 | 3.71k | { | 1775 | 3.71k | assert(shift_ == BL); | 1776 | 3.71k | auto child = node_->inner()[0]; | 1777 | 3.71k | auto child_size = relaxed_->d.sizes[0]; | 1778 | 3.71k | return make_leaf_sub_pos(child, child_size).visit(v, args...); | 1779 | 3.71k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::first_sub_leaf<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1774 | 66.4k | { | 1775 | 66.4k | assert(shift_ == BL); | 1776 | 66.4k | auto child = node_->inner()[0]; | 1777 | 66.4k | auto child_size = relaxed_->d.sizes[0]; | 1778 | 66.4k | return make_leaf_sub_pos(child, child_size).visit(v, args...); | 1779 | 66.4k | } |
|
1780 | | |
1781 | | template <typename Visitor, typename... Args> |
1782 | | decltype(auto) first_sub_inner(Visitor v, Args&&... args) |
1783 | | { |
1784 | | assert(shift_ > BL); |
1785 | | auto child = node_->inner()[0]; |
1786 | | auto child_size = relaxed_->d.sizes[0]; |
1787 | | return visit_maybe_relaxed_sub( |
1788 | | child, shift_ - B, child_size, v, args...); |
1789 | | } |
1790 | | |
1791 | | template <typename Visitor, typename... Args> |
1792 | | decltype(auto) nth_sub(count_t offset, Visitor v, Args&&... args) |
1793 | | { |
1794 | | auto child = node_->inner()[offset]; |
1795 | | auto child_size = size(offset); |
1796 | | auto is_leaf = shift_ == BL; |
1797 | | return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...) |
1798 | | : visit_maybe_relaxed_sub( |
1799 | | child, shift_ - B, child_size, v, args...); |
1800 | | } |
1801 | | |
1802 | | template <typename Visitor, typename... Args> |
1803 | | decltype(auto) nth_sub_leaf(count_t offset, Visitor v, Args&&... args) |
1804 | | { |
1805 | | assert(shift_ == BL); |
1806 | | auto child = node_->inner()[offset]; |
1807 | | auto child_size = size(offset); |
1808 | | return make_leaf_sub_pos(child, child_size).visit(v, args...); |
1809 | | } |
1810 | | |
1811 | | template <typename Visitor, typename... Args> |
1812 | | decltype(auto) visit(Visitor v, Args&&... args) |
1813 | 11.7M | { |
1814 | 11.7M | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); |
1815 | 11.7M | } decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_visitor>(immer::detail::rbts::dec_visitor) Line | Count | Source | 1813 | 640k | { | 1814 | 640k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 640k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1813 | 49.2k | { | 1814 | 49.2k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 49.2k | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1813 | 28.1k | { | 1814 | 28.1k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 28.1k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 1813 | 14.2k | { | 1814 | 14.2k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 14.2k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 1813 | 4.09k | { | 1814 | 4.09k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 4.09k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 1813 | 14.8k | { | 1814 | 14.8k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 14.8k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 1813 | 94.3k | { | 1814 | 94.3k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 94.3k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 1.73k | { | 1814 | 1.73k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 1.73k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1813 | 4.10M | { | 1814 | 4.10M | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 4.10M | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 1.35M | { | 1814 | 1.35M | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 1.35M | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 5.66k | { | 1814 | 5.66k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 5.66k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 1813 | 41.8k | { | 1814 | 41.8k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 41.8k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 39.2k | { | 1814 | 39.2k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 39.2k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 3.01k | { | 1814 | 3.01k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 3.01k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 10.3k | { | 1814 | 10.3k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 10.3k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 170k | { | 1814 | 170k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 170k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 1.77k | { | 1814 | 1.77k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 1.77k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 556 | { | 1814 | 556 | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 556 | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 912 | { | 1814 | 912 | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 912 | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 168k | { | 1814 | 168k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 168k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 806 | { | 1814 | 806 | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 806 | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1813 | 896k | { | 1814 | 896k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 896k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1813 | 18.9k | { | 1814 | 18.9k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 18.9k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&) Line | Count | Source | 1813 | 5.51k | { | 1814 | 5.51k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 5.51k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 1813 | 19.8k | { | 1814 | 19.8k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 19.8k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 53.0k | { | 1814 | 53.0k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 53.0k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 34.4k | { | 1814 | 34.4k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 34.4k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::dec_right_visitor, unsigned int>(immer::detail::rbts::dec_right_visitor, unsigned int&&) Line | Count | Source | 1813 | 43.9k | { | 1814 | 43.9k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 43.9k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 10.8k | { | 1814 | 10.8k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 10.8k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 8.73k | { | 1814 | 8.73k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 8.73k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 3.98k | { | 1814 | 3.98k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 3.98k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 2.75M | { | 1814 | 2.75M | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 2.75M | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 13.5k | { | 1814 | 13.5k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 13.5k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 1813 | 106k | { | 1814 | 106k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 106k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 66.8k | { | 1814 | 66.8k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 66.8k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 193k | { | 1814 | 193k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 193k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 121k | { | 1814 | 121k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 121k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 224k | { | 1814 | 224k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 224k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 228k | { | 1814 | 228k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 228k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 491 | { | 1814 | 491 | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 491 | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 843 | { | 1814 | 843 | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 843 | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1813 | 180k | { | 1814 | 180k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 180k | } |
decltype(auto) immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >::visit<immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1813 | 3.52k | { | 1814 | 3.52k | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); | 1815 | 3.52k | } |
|
1816 | | }; |
1817 | | |
1818 | | template <typename Pos> |
1819 | | using is_relaxed = std::is_same<relaxed_pos<typename std::decay_t<Pos>::node_t>, |
1820 | | std::decay_t<Pos>>; |
1821 | | |
1822 | | template <typename Pos> |
1823 | | constexpr auto is_relaxed_v = is_relaxed<Pos>::value; |
1824 | | |
1825 | | template <typename NodeT> |
1826 | | relaxed_pos<NodeT> |
1827 | | make_relaxed_pos(NodeT* node, shift_t shift, typename NodeT::relaxed_t* relaxed) |
1828 | 11.6M | { |
1829 | 11.6M | assert(node); |
1830 | 11.6M | assert(relaxed); |
1831 | 11.6M | assert(shift >= NodeT::bits_leaf); |
1832 | 11.6M | return {node, shift, relaxed}; |
1833 | 11.6M | } |
1834 | | |
1835 | | template <typename NodeT, typename Visitor, typename... Args> |
1836 | | decltype(auto) visit_maybe_relaxed_sub( |
1837 | | NodeT* node, shift_t shift, size_t size, Visitor v, Args&&... args) |
1838 | 8.59M | { |
1839 | 8.59M | assert(node); |
1840 | 8.59M | auto relaxed = node->relaxed(); |
1841 | 8.59M | if (relaxed) { |
1842 | 7.40M | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); |
1843 | 7.40M | return make_relaxed_pos(node, shift, relaxed) |
1844 | 7.40M | .visit(v, std::forward<Args>(args)...); |
1845 | 7.40M | } else { |
1846 | 1.18M | return make_regular_sub_pos(node, shift, size) |
1847 | 1.18M | .visit(v, std::forward<Args>(args)...); |
1848 | 1.18M | } |
1849 | 8.59M | } decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::dec_visitor>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::dec_visitor) Line | Count | Source | 1838 | 259k | { | 1839 | 259k | assert(node); | 1840 | 259k | auto relaxed = node->relaxed(); | 1841 | 259k | if (relaxed) { | 1842 | 210k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 210k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 210k | .visit(v, std::forward<Args>(args)...); | 1845 | 210k | } else { | 1846 | 49.2k | return make_regular_sub_pos(node, shift, size) | 1847 | 49.2k | .visit(v, std::forward<Args>(args)...); | 1848 | 49.2k | } | 1849 | 259k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::push_tail_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1838 | 44.2k | { | 1839 | 44.2k | assert(node); | 1840 | 44.2k | auto relaxed = node->relaxed(); | 1841 | 44.2k | if (relaxed) { | 1842 | 36.0k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 36.0k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 36.0k | .visit(v, std::forward<Args>(args)...); | 1845 | 36.0k | } else { | 1846 | 8.13k | return make_regular_sub_pos(node, shift, size) | 1847 | 8.13k | .visit(v, std::forward<Args>(args)...); | 1848 | 8.13k | } | 1849 | 44.2k | } |
flex-vector-gc.cpp:decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::update_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, LLVMFuzzerTestOneInput::$_5::operator()<fuzzer_input>(fuzzer_input&) const::{lambda(auto:1)#1}&)Line | Count | Source | 1838 | 30.1k | { | 1839 | 30.1k | assert(node); | 1840 | 30.1k | auto relaxed = node->relaxed(); | 1841 | 30.1k | if (relaxed) { | 1842 | 28.1k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 28.1k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 28.1k | .visit(v, std::forward<Args>(args)...); | 1845 | 28.1k | } else { | 1846 | 2.03k | return make_regular_sub_pos(node, shift, size) | 1847 | 2.03k | .visit(v, std::forward<Args>(args)...); | 1848 | 2.03k | } | 1849 | 30.1k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 1838 | 19.3k | { | 1839 | 19.3k | assert(node); | 1840 | 19.3k | auto relaxed = node->relaxed(); | 1841 | 19.3k | if (relaxed) { | 1842 | 14.2k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 14.2k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 14.2k | .visit(v, std::forward<Args>(args)...); | 1845 | 14.2k | } else { | 1846 | 5.12k | return make_regular_sub_pos(node, shift, size) | 1847 | 5.12k | .visit(v, std::forward<Args>(args)...); | 1848 | 5.12k | } | 1849 | 19.3k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 1838 | 5.50k | { | 1839 | 5.50k | assert(node); | 1840 | 5.50k | auto relaxed = node->relaxed(); | 1841 | 5.50k | if (relaxed) { | 1842 | 4.09k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 4.09k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 4.09k | .visit(v, std::forward<Args>(args)...); | 1845 | 4.09k | } else { | 1846 | 1.41k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.41k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.41k | } | 1849 | 5.50k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, unsigned long&) Line | Count | Source | 1838 | 17.6k | { | 1839 | 17.6k | assert(node); | 1840 | 17.6k | auto relaxed = node->relaxed(); | 1841 | 17.6k | if (relaxed) { | 1842 | 14.8k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 14.8k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 14.8k | .visit(v, std::forward<Args>(args)...); | 1845 | 14.8k | } else { | 1846 | 2.78k | return make_regular_sub_pos(node, shift, size) | 1847 | 2.78k | .visit(v, std::forward<Args>(args)...); | 1848 | 2.78k | } | 1849 | 17.6k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, unsigned long&) Line | Count | Source | 1838 | 95.8k | { | 1839 | 95.8k | assert(node); | 1840 | 95.8k | auto relaxed = node->relaxed(); | 1841 | 95.8k | if (relaxed) { | 1842 | 94.3k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 94.3k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 94.3k | .visit(v, std::forward<Args>(args)...); | 1845 | 94.3k | } else { | 1846 | 1.55k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.55k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.55k | } | 1849 | 95.8k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 2.89k | { | 1839 | 2.89k | assert(node); | 1840 | 2.89k | auto relaxed = node->relaxed(); | 1841 | 2.89k | if (relaxed) { | 1842 | 1.73k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 1.73k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 1.73k | .visit(v, std::forward<Args>(args)...); | 1845 | 1.73k | } else { | 1846 | 1.15k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.15k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.15k | } | 1849 | 2.89k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 5.86k | { | 1839 | 5.86k | assert(node); | 1840 | 5.86k | auto relaxed = node->relaxed(); | 1841 | 5.86k | if (relaxed) { | 1842 | 5.66k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 5.66k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 5.66k | .visit(v, std::forward<Args>(args)...); | 1845 | 5.66k | } else { | 1846 | 201 | return make_regular_sub_pos(node, shift, size) | 1847 | 201 | .visit(v, std::forward<Args>(args)...); | 1848 | 201 | } | 1849 | 5.86k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_rebalance_plan_fill_visitor, immer::detail::rbts::concat_rebalance_plan<2u, 2u>&) Line | Count | Source | 1838 | 2.67M | { | 1839 | 2.67M | assert(node); | 1840 | 2.67M | auto relaxed = node->relaxed(); | 1841 | 2.67M | if (relaxed) { | 1842 | 2.52M | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 2.52M | return make_relaxed_pos(node, shift, relaxed) | 1844 | 2.52M | .visit(v, std::forward<Args>(args)...); | 1845 | 2.52M | } else { | 1846 | 145k | return make_regular_sub_pos(node, shift, size) | 1847 | 145k | .visit(v, std::forward<Args>(args)...); | 1848 | 145k | } | 1849 | 2.67M | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_merger_visitor, immer::detail::rbts::concat_merger<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 963k | { | 1839 | 963k | assert(node); | 1840 | 963k | auto relaxed = node->relaxed(); | 1841 | 963k | if (relaxed) { | 1842 | 950k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 950k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 950k | .visit(v, std::forward<Args>(args)...); | 1845 | 950k | } else { | 1846 | 12.5k | return make_regular_sub_pos(node, shift, size) | 1847 | 12.5k | .visit(v, std::forward<Args>(args)...); | 1848 | 12.5k | } | 1849 | 963k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 1838 | 47.6k | { | 1839 | 47.6k | assert(node); | 1840 | 47.6k | auto relaxed = node->relaxed(); | 1841 | 47.6k | if (relaxed) { | 1842 | 41.8k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 41.8k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 41.8k | .visit(v, std::forward<Args>(args)...); | 1845 | 41.8k | } else { | 1846 | 5.77k | return make_regular_sub_pos(node, shift, size) | 1847 | 5.77k | .visit(v, std::forward<Args>(args)...); | 1848 | 5.77k | } | 1849 | 47.6k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 41.8k | { | 1839 | 41.8k | assert(node); | 1840 | 41.8k | auto relaxed = node->relaxed(); | 1841 | 41.8k | if (relaxed) { | 1842 | 39.2k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 39.2k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 39.2k | .visit(v, std::forward<Args>(args)...); | 1845 | 39.2k | } else { | 1846 | 2.60k | return make_regular_sub_pos(node, shift, size) | 1847 | 2.60k | .visit(v, std::forward<Args>(args)...); | 1848 | 2.60k | } | 1849 | 41.8k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 3.34k | { | 1839 | 3.34k | assert(node); | 1840 | 3.34k | auto relaxed = node->relaxed(); | 1841 | 3.34k | if (relaxed) { | 1842 | 3.01k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 3.01k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 3.01k | .visit(v, std::forward<Args>(args)...); | 1845 | 3.01k | } else { | 1846 | 326 | return make_regular_sub_pos(node, shift, size) | 1847 | 326 | .visit(v, std::forward<Args>(args)...); | 1848 | 326 | } | 1849 | 3.34k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 11.1k | { | 1839 | 11.1k | assert(node); | 1840 | 11.1k | auto relaxed = node->relaxed(); | 1841 | 11.1k | if (relaxed) { | 1842 | 10.3k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 10.3k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 10.3k | .visit(v, std::forward<Args>(args)...); | 1845 | 10.3k | } else { | 1846 | 826 | return make_regular_sub_pos(node, shift, size) | 1847 | 826 | .visit(v, std::forward<Args>(args)...); | 1848 | 826 | } | 1849 | 11.1k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 170k | { | 1839 | 170k | assert(node); | 1840 | 170k | auto relaxed = node->relaxed(); | 1841 | 170k | if (relaxed) { | 1842 | 170k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 170k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 170k | .visit(v, std::forward<Args>(args)...); | 1845 | 170k | } else { | 1846 | 409 | return make_regular_sub_pos(node, shift, size) | 1847 | 409 | .visit(v, std::forward<Args>(args)...); | 1848 | 409 | } | 1849 | 170k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 2.11k | { | 1839 | 2.11k | assert(node); | 1840 | 2.11k | auto relaxed = node->relaxed(); | 1841 | 2.11k | if (relaxed) { | 1842 | 1.77k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 1.77k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 1.77k | .visit(v, std::forward<Args>(args)...); | 1845 | 1.77k | } else { | 1846 | 342 | return make_regular_sub_pos(node, shift, size) | 1847 | 342 | .visit(v, std::forward<Args>(args)...); | 1848 | 342 | } | 1849 | 2.11k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 782 | { | 1839 | 782 | assert(node); | 1840 | 782 | auto relaxed = node->relaxed(); | 1841 | 782 | if (relaxed) { | 1842 | 556 | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 556 | return make_relaxed_pos(node, shift, relaxed) | 1844 | 556 | .visit(v, std::forward<Args>(args)...); | 1845 | 556 | } else { | 1846 | 226 | return make_regular_sub_pos(node, shift, size) | 1847 | 226 | .visit(v, std::forward<Args>(args)...); | 1848 | 226 | } | 1849 | 782 | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 1.35k | { | 1839 | 1.35k | assert(node); | 1840 | 1.35k | auto relaxed = node->relaxed(); | 1841 | 1.35k | if (relaxed) { | 1842 | 912 | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 912 | return make_relaxed_pos(node, shift, relaxed) | 1844 | 912 | .visit(v, std::forward<Args>(args)...); | 1845 | 912 | } else { | 1846 | 441 | return make_regular_sub_pos(node, shift, size) | 1847 | 441 | .visit(v, std::forward<Args>(args)...); | 1848 | 441 | } | 1849 | 1.35k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 171k | { | 1839 | 171k | assert(node); | 1840 | 171k | auto relaxed = node->relaxed(); | 1841 | 171k | if (relaxed) { | 1842 | 168k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 168k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 168k | .visit(v, std::forward<Args>(args)...); | 1845 | 168k | } else { | 1846 | 3.21k | return make_regular_sub_pos(node, shift, size) | 1847 | 3.21k | .visit(v, std::forward<Args>(args)...); | 1848 | 3.21k | } | 1849 | 171k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 5.77k | { | 1839 | 5.77k | assert(node); | 1840 | 5.77k | auto relaxed = node->relaxed(); | 1841 | 5.77k | if (relaxed) { | 1842 | 806 | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 806 | return make_relaxed_pos(node, shift, relaxed) | 1844 | 806 | .visit(v, std::forward<Args>(args)...); | 1845 | 4.96k | } else { | 1846 | 4.96k | return make_regular_sub_pos(node, shift, size) | 1847 | 4.96k | .visit(v, std::forward<Args>(args)...); | 1848 | 4.96k | } | 1849 | 5.77k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1838 | 884k | { | 1839 | 884k | assert(node); | 1840 | 884k | auto relaxed = node->relaxed(); | 1841 | 884k | if (relaxed) { | 1842 | 204k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 204k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 204k | .visit(v, std::forward<Args>(args)...); | 1845 | 679k | } else { | 1846 | 679k | return make_regular_sub_pos(node, shift, size) | 1847 | 679k | .visit(v, std::forward<Args>(args)...); | 1848 | 679k | } | 1849 | 884k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::push_tail_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false>, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&) Line | Count | Source | 1838 | 21.6k | { | 1839 | 21.6k | assert(node); | 1840 | 21.6k | auto relaxed = node->relaxed(); | 1841 | 21.6k | if (relaxed) { | 1842 | 18.9k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 18.9k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 18.9k | .visit(v, std::forward<Args>(args)...); | 1845 | 18.9k | } else { | 1846 | 2.76k | return make_regular_sub_pos(node, shift, size) | 1847 | 2.76k | .visit(v, std::forward<Args>(args)...); | 1848 | 2.76k | } | 1849 | 21.6k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&&) Line | Count | Source | 1838 | 10.3k | { | 1839 | 10.3k | assert(node); | 1840 | 10.3k | auto relaxed = node->relaxed(); | 1841 | 10.3k | if (relaxed) { | 1842 | 5.51k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 5.51k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 5.51k | .visit(v, std::forward<Args>(args)...); | 1845 | 5.51k | } else { | 1846 | 4.81k | return make_regular_sub_pos(node, shift, size) | 1847 | 4.81k | .visit(v, std::forward<Args>(args)...); | 1848 | 4.81k | } | 1849 | 10.3k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::get_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>**&) Line | Count | Source | 1838 | 21.8k | { | 1839 | 21.8k | assert(node); | 1840 | 21.8k | auto relaxed = node->relaxed(); | 1841 | 21.8k | if (relaxed) { | 1842 | 19.8k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 19.8k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 19.8k | .visit(v, std::forward<Args>(args)...); | 1845 | 19.8k | } else { | 1846 | 1.97k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.97k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.97k | } | 1849 | 21.8k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 67.8k | { | 1839 | 67.8k | assert(node); | 1840 | 67.8k | auto relaxed = node->relaxed(); | 1841 | 67.8k | if (relaxed) { | 1842 | 53.0k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 53.0k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 53.0k | .visit(v, std::forward<Args>(args)...); | 1845 | 53.0k | } else { | 1846 | 14.8k | return make_regular_sub_pos(node, shift, size) | 1847 | 14.8k | .visit(v, std::forward<Args>(args)...); | 1848 | 14.8k | } | 1849 | 67.8k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, true, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 35.5k | { | 1839 | 35.5k | assert(node); | 1840 | 35.5k | auto relaxed = node->relaxed(); | 1841 | 35.5k | if (relaxed) { | 1842 | 34.4k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 34.4k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 34.4k | .visit(v, std::forward<Args>(args)...); | 1845 | 34.4k | } else { | 1846 | 1.06k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.06k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.06k | } | 1849 | 35.5k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, true>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 13.3k | { | 1839 | 13.3k | assert(node); | 1840 | 13.3k | auto relaxed = node->relaxed(); | 1841 | 13.3k | if (relaxed) { | 1842 | 10.8k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 10.8k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 10.8k | .visit(v, std::forward<Args>(args)...); | 1845 | 10.8k | } else { | 1846 | 2.58k | return make_regular_sub_pos(node, shift, size) | 1847 | 2.58k | .visit(v, std::forward<Args>(args)...); | 1848 | 2.58k | } | 1849 | 13.3k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::slice_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, false, false>, unsigned long&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 10.6k | { | 1839 | 10.6k | assert(node); | 1840 | 10.6k | auto relaxed = node->relaxed(); | 1841 | 10.6k | if (relaxed) { | 1842 | 8.73k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 8.73k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 8.73k | .visit(v, std::forward<Args>(args)...); | 1845 | 8.73k | } else { | 1846 | 1.88k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.88k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.88k | } | 1849 | 10.6k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 7.23k | { | 1839 | 7.23k | assert(node); | 1840 | 7.23k | auto relaxed = node->relaxed(); | 1841 | 7.23k | if (relaxed) { | 1842 | 3.98k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 3.98k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 3.98k | .visit(v, std::forward<Args>(args)...); | 1845 | 3.98k | } else { | 1846 | 3.25k | return make_regular_sub_pos(node, shift, size) | 1847 | 3.25k | .visit(v, std::forward<Args>(args)...); | 1848 | 3.25k | } | 1849 | 7.23k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::singleton_regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::empty_leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 13.8k | { | 1839 | 13.8k | assert(node); | 1840 | 13.8k | auto relaxed = node->relaxed(); | 1841 | 13.8k | if (relaxed) { | 1842 | 13.5k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 13.5k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 13.5k | .visit(v, std::forward<Args>(args)...); | 1845 | 13.5k | } else { | 1846 | 269 | return make_regular_sub_pos(node, shift, size) | 1847 | 269 | .visit(v, std::forward<Args>(args)...); | 1848 | 269 | } | 1849 | 13.8k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_merger_mut_visitor, immer::detail::rbts::concat_merger_mut<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 1.70M | { | 1839 | 1.70M | assert(node); | 1840 | 1.70M | auto relaxed = node->relaxed(); | 1841 | 1.70M | if (relaxed) { | 1842 | 1.57M | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 1.57M | return make_relaxed_pos(node, shift, relaxed) | 1844 | 1.57M | .visit(v, std::forward<Args>(args)...); | 1845 | 1.57M | } else { | 1846 | 133k | return make_regular_sub_pos(node, shift, size) | 1847 | 133k | .visit(v, std::forward<Args>(args)...); | 1848 | 133k | } | 1849 | 1.70M | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*&, unsigned int&, unsigned long&) Line | Count | Source | 1838 | 113k | { | 1839 | 113k | assert(node); | 1840 | 113k | auto relaxed = node->relaxed(); | 1841 | 113k | if (relaxed) { | 1842 | 106k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 106k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 106k | .visit(v, std::forward<Args>(args)...); | 1845 | 106k | } else { | 1846 | 6.42k | return make_regular_sub_pos(node, shift, size) | 1847 | 6.42k | .visit(v, std::forward<Args>(args)...); | 1848 | 6.42k | } | 1849 | 113k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 106k | { | 1839 | 106k | assert(node); | 1840 | 106k | auto relaxed = node->relaxed(); | 1841 | 106k | if (relaxed) { | 1842 | 66.8k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 66.8k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 66.8k | .visit(v, std::forward<Args>(args)...); | 1845 | 66.8k | } else { | 1846 | 39.7k | return make_regular_sub_pos(node, shift, size) | 1847 | 39.7k | .visit(v, std::forward<Args>(args)...); | 1848 | 39.7k | } | 1849 | 106k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 194k | { | 1839 | 194k | assert(node); | 1840 | 194k | auto relaxed = node->relaxed(); | 1841 | 194k | if (relaxed) { | 1842 | 193k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 193k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 193k | .visit(v, std::forward<Args>(args)...); | 1845 | 193k | } else { | 1846 | 1.71k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.71k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.71k | } | 1849 | 194k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 124k | { | 1839 | 124k | assert(node); | 1840 | 124k | auto relaxed = node->relaxed(); | 1841 | 124k | if (relaxed) { | 1842 | 121k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 121k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 121k | .visit(v, std::forward<Args>(args)...); | 1845 | 121k | } else { | 1846 | 2.70k | return make_regular_sub_pos(node, shift, size) | 1847 | 2.70k | .visit(v, std::forward<Args>(args)...); | 1848 | 2.70k | } | 1849 | 124k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 225k | { | 1839 | 225k | assert(node); | 1840 | 225k | auto relaxed = node->relaxed(); | 1841 | 225k | if (relaxed) { | 1842 | 224k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 224k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 224k | .visit(v, std::forward<Args>(args)...); | 1845 | 224k | } else { | 1846 | 1.24k | return make_regular_sub_pos(node, shift, size) | 1847 | 1.24k | .visit(v, std::forward<Args>(args)...); | 1848 | 1.24k | } | 1849 | 225k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 229k | { | 1839 | 229k | assert(node); | 1840 | 229k | auto relaxed = node->relaxed(); | 1841 | 229k | if (relaxed) { | 1842 | 228k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 228k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 228k | .visit(v, std::forward<Args>(args)...); | 1845 | 228k | } else { | 1846 | 611 | return make_regular_sub_pos(node, shift, size) | 1847 | 611 | .visit(v, std::forward<Args>(args)...); | 1848 | 611 | } | 1849 | 229k | } |
Unexecuted instantiation: decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_left_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::full_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 745 | { | 1839 | 745 | assert(node); | 1840 | 745 | auto relaxed = node->relaxed(); | 1841 | 745 | if (relaxed) { | 1842 | 491 | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 491 | return make_relaxed_pos(node, shift, relaxed) | 1844 | 491 | .visit(v, std::forward<Args>(args)...); | 1845 | 491 | } else { | 1846 | 254 | return make_regular_sub_pos(node, shift, size) | 1847 | 254 | .visit(v, std::forward<Args>(args)...); | 1848 | 254 | } | 1849 | 745 | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 6.51k | { | 1839 | 6.51k | assert(node); | 1840 | 6.51k | auto relaxed = node->relaxed(); | 1841 | 6.51k | if (relaxed) { | 1842 | 843 | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 843 | return make_relaxed_pos(node, shift, relaxed) | 1844 | 843 | .visit(v, std::forward<Args>(args)...); | 1845 | 5.67k | } else { | 1846 | 5.67k | return make_regular_sub_pos(node, shift, size) | 1847 | 5.67k | .visit(v, std::forward<Args>(args)...); | 1848 | 5.67k | } | 1849 | 6.51k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_both_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::relaxed_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&) Line | Count | Source | 1838 | 213k | { | 1839 | 213k | assert(node); | 1840 | 213k | auto relaxed = node->relaxed(); | 1841 | 213k | if (relaxed) { | 1842 | 180k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 180k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 180k | .visit(v, std::forward<Args>(args)...); | 1845 | 180k | } else { | 1846 | 32.2k | return make_regular_sub_pos(node, shift, size) | 1847 | 32.2k | .visit(v, std::forward<Args>(args)...); | 1848 | 32.2k | } | 1849 | 213k | } |
decltype(auto) immer::detail::rbts::visit_maybe_relaxed_sub<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&>(immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u>*, unsigned int, unsigned long, immer::detail::rbts::concat_trees_right_mut_visitor<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&, immer::detail::rbts::regular_sub_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::detail::rbts::leaf_pos<immer::detail::rbts::node<int, immer::memory_policy<immer::heap_policy<immer::gc_heap>, immer::no_refcount_policy, immer::spinlock_policy, immer::gc_transience_policy, false, false>, 2u, 2u> >&, immer::gc_transience_policy::apply<immer::heap_policy<immer::gc_heap> >::type::edit&) Line | Count | Source | 1838 | 6.42k | { | 1839 | 6.42k | assert(node); | 1840 | 6.42k | auto relaxed = node->relaxed(); | 1841 | 6.42k | if (relaxed) { | 1842 | 3.52k | assert(size == relaxed->d.sizes[relaxed->d.count - 1]); | 1843 | 3.52k | return make_relaxed_pos(node, shift, relaxed) | 1844 | 3.52k | .visit(v, std::forward<Args>(args)...); | 1845 | 3.52k | } else { | 1846 | 2.89k | return make_regular_sub_pos(node, shift, size) | 1847 | 2.89k | .visit(v, std::forward<Args>(args)...); | 1848 | 2.89k | } | 1849 | 6.42k | } |
|
1850 | | |
1851 | | template <typename NodeT, |
1852 | | shift_t Shift, |
1853 | | bits_t B = NodeT::bits, |
1854 | | bits_t BL = NodeT::bits_leaf> |
1855 | | struct relaxed_descent_pos |
1856 | | { |
1857 | | static_assert(Shift > 0, "not leaf..."); |
1858 | | |
1859 | | using node_t = NodeT; |
1860 | | using relaxed_t = typename NodeT::relaxed_t; |
1861 | | node_t* node_; |
1862 | | relaxed_t* relaxed_; |
1863 | | |
1864 | | count_t count() const { return relaxed_->d.count; } |
1865 | | node_t* node() const { return node_; } |
1866 | | shift_t shift() const { return Shift; } |
1867 | | size_t size() const { return relaxed_->d.sizes[relaxed_->d.count - 1]; } |
1868 | | |
1869 | | count_t index(size_t idx) const |
1870 | | { |
1871 | | // make gcc happy |
1872 | | #if !defined(_MSC_VER) |
1873 | | #pragma GCC diagnostic push |
1874 | | #pragma GCC diagnostic ignored "-Wshift-count-overflow" |
1875 | | #endif |
1876 | | auto offset = idx >> Shift; |
1877 | | #if !defined(_MSC_VER) |
1878 | | #pragma GCC diagnostic pop |
1879 | | #endif |
1880 | | while (relaxed_->d.sizes[offset] <= idx) |
1881 | | ++offset; |
1882 | | return offset; |
1883 | | } |
1884 | | |
1885 | | template <typename Visitor> |
1886 | | decltype(auto) descend(Visitor v, size_t idx) |
1887 | | { |
1888 | | auto offset = index(idx); |
1889 | | auto child = node_->inner()[offset]; |
1890 | | auto left_size = offset ? relaxed_->d.sizes[offset - 1] : 0; |
1891 | | auto next_idx = idx - left_size; |
1892 | | auto r = child->relaxed(); |
1893 | | return r ? relaxed_descent_pos<NodeT, Shift - B>{child, r}.visit( |
1894 | | v, next_idx) |
1895 | | : regular_descent_pos<NodeT, Shift - B>{child}.visit(v, |
1896 | | next_idx); |
1897 | | } |
1898 | | |
1899 | | template <typename Visitor, typename... Args> |
1900 | | decltype(auto) visit(Visitor v, Args&&... args) |
1901 | | { |
1902 | | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); |
1903 | | } |
1904 | | }; |
1905 | | |
1906 | | template <typename NodeT, bits_t B, bits_t BL> |
1907 | | struct relaxed_descent_pos<NodeT, BL, B, BL> |
1908 | | { |
1909 | | using node_t = NodeT; |
1910 | | using relaxed_t = typename NodeT::relaxed_t; |
1911 | | node_t* node_; |
1912 | | relaxed_t* relaxed_; |
1913 | | |
1914 | | count_t count() const { return relaxed_->d.count; } |
1915 | | node_t* node() const { return node_; } |
1916 | | shift_t shift() const { return BL; } |
1917 | | size_t size() const { return relaxed_->d.sizes[relaxed_->d.count - 1]; } |
1918 | | |
1919 | | count_t index(size_t idx) const |
1920 | | { |
1921 | | auto offset = (idx >> BL) & mask<B>; |
1922 | | while (relaxed_->d.sizes[offset] <= idx) |
1923 | | ++offset; |
1924 | | return offset; |
1925 | | } |
1926 | | |
1927 | | template <typename Visitor> |
1928 | | decltype(auto) descend(Visitor v, size_t idx) |
1929 | | { |
1930 | | auto offset = index(idx); |
1931 | | auto child = node_->inner()[offset]; |
1932 | | auto left_size = offset ? relaxed_->d.sizes[offset - 1] : 0; |
1933 | | auto next_idx = idx - left_size; |
1934 | | return leaf_descent_pos<NodeT>{child}.visit(v, next_idx); |
1935 | | } |
1936 | | |
1937 | | template <typename Visitor, typename... Args> |
1938 | | decltype(auto) visit(Visitor v, Args&&... args) |
1939 | | { |
1940 | | return Visitor::visit_relaxed(*this, std::forward<Args>(args)...); |
1941 | | } |
1942 | | }; |
1943 | | |
1944 | | template <typename NodeT, typename Visitor, typename... Args> |
1945 | | decltype(auto) |
1946 | | visit_maybe_relaxed_descent(NodeT* node, shift_t shift, Visitor v, size_t idx) |
1947 | | { |
1948 | | constexpr auto B = NodeT::bits; |
1949 | | constexpr auto BL = NodeT::bits_leaf; |
1950 | | assert(node); |
1951 | | assert(shift >= BL); |
1952 | | auto r = node->relaxed(); |
1953 | | if (r) { |
1954 | | switch (shift) { |
1955 | | case BL + B * 0: |
1956 | | return relaxed_descent_pos<NodeT, BL + B * 0>{node, r}.visit(v, |
1957 | | idx); |
1958 | | case BL + B * 1: |
1959 | | return relaxed_descent_pos<NodeT, BL + B * 1>{node, r}.visit(v, |
1960 | | idx); |
1961 | | case BL + B * 2: |
1962 | | return relaxed_descent_pos<NodeT, BL + B * 2>{node, r}.visit(v, |
1963 | | idx); |
1964 | | case BL + B * 3: |
1965 | | return relaxed_descent_pos<NodeT, BL + B * 3>{node, r}.visit(v, |
1966 | | idx); |
1967 | | case BL + B * 4: |
1968 | | return relaxed_descent_pos<NodeT, BL + B * 4>{node, r}.visit(v, |
1969 | | idx); |
1970 | | case BL + B * 5: |
1971 | | return relaxed_descent_pos<NodeT, BL + B * 5>{node, r}.visit(v, |
1972 | | idx); |
1973 | | #if IMMER_DESCENT_DEEP |
1974 | | default: |
1975 | | for (auto level = shift; level != endshift<B, BL>; level -= B) { |
1976 | | auto r = node->relaxed(); |
1977 | | if (r) { |
1978 | | auto node_idx = (idx >> level) & mask<B>; |
1979 | | while (r->d.sizes[node_idx] <= idx) |
1980 | | ++node_idx; |
1981 | | if (node_idx) |
1982 | | idx -= r->d.sizes[node_idx - 1]; |
1983 | | node = node->inner()[node_idx]; |
1984 | | } else { |
1985 | | do { |
1986 | | node = node->inner()[(idx >> level) & mask<B>]; |
1987 | | } while ((level -= B) != endshift<B, BL>); |
1988 | | return make_leaf_descent_pos(node).visit(v, idx); |
1989 | | } |
1990 | | } |
1991 | | return make_leaf_descent_pos(node).visit(v, idx); |
1992 | | #endif // IMMER_DESCENT_DEEP |
1993 | | } |
1994 | | IMMER_UNREACHABLE; |
1995 | | } else { |
1996 | | return visit_regular_descent(node, shift, v, idx); |
1997 | | } |
1998 | | } |
1999 | | |
2000 | | } // namespace rbts |
2001 | | } // namespace detail |
2002 | | } // namespace immer |