Skip to content

Commit 8b97f36

Browse files
committed
Expand macro to simplify debugging
1 parent 439c164 commit 8b97f36

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/tree_map.jl

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,26 @@ function tree_mapreduce(
9797
preserve_sharing::Bool=false,
9898
result_type::Type{RT}=Nothing,
9999
) where {T,N<:Node{T},F1<:Function,F2<:Function,G<:Function,RT}
100-
preserve_sharing && return @with_memoization(
101-
_tree_mapreduce(f_leaf, f_branch, op, tree), IdDict{N,RT}()
102-
)
100+
preserve_sharing && return _tree_mapreduce(f_leaf, f_branch, op, tree, IdDict{N,RT}())
103101
return _tree_mapreduce(f_leaf, f_branch, op, tree)
104102
end
105-
@memoize_on tree function _tree_mapreduce(
103+
function _tree_mapreduce(
104+
f_leaf::F1, f_branch::F2, op::G, tree::Node, id_map
105+
) where {F1<:Function,F2<:Function,G<:Function}
106+
get!(id_map, tree) do
107+
if tree.degree == 0
108+
return @inline(f_leaf(tree))
109+
elseif tree.degree == 1
110+
l = _tree_mapreduce(f_leaf, f_branch, op, tree.l, id_map)
111+
return @inline(op(@inline(f_branch(tree)), l))
112+
else
113+
l = _tree_mapreduce(f_leaf, f_branch, op, tree.l, id_map)
114+
r = _tree_mapreduce(f_leaf, f_branch, op, tree.r, id_map)
115+
return @inline(op(@inline(f_branch(tree)), l, r))
116+
end
117+
end
118+
end
119+
function _tree_mapreduce(
106120
f_leaf::F1, f_branch::F2, op::G, tree::Node
107121
) where {F1<:Function,F2<:Function,G<:Function}
108122
if tree.degree == 0

0 commit comments

Comments
 (0)