Skip to content

Commit 439c164

Browse files
committed
Try to inline more calls
1 parent 17d4e7e commit 439c164

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/tree_map.jl

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,12 @@ end
108108
if tree.degree == 0
109109
return @inline(f_leaf(tree))
110110
elseif tree.degree == 1
111-
return op(@inline(f_branch(tree)), _tree_mapreduce(f_leaf, f_branch, op, tree.l))
111+
l = _tree_mapreduce(f_leaf, f_branch, op, tree.l)
112+
return @inline(op(@inline(f_branch(tree)), l))
112113
else
113-
return op(
114-
@inline(f_branch(tree)),
115-
_tree_mapreduce(f_leaf, f_branch, op, tree.l),
116-
_tree_mapreduce(f_leaf, f_branch, op, tree.r),
117-
)
114+
l = _tree_mapreduce(f_leaf, f_branch, op, tree.l)
115+
r = _tree_mapreduce(f_leaf, f_branch, op, tree.r)
116+
return @inline(op(@inline(f_branch(tree)), l, r))
118117
end
119118
end
120119

@@ -123,9 +122,12 @@ function mapreduce(f::F, op::G, tree::Node; init=nothing) where {F<:Function,G<:
123122
if tree.degree == 0
124123
return @inline(f(tree))
125124
elseif tree.degree == 1
126-
return op(@inline(f(tree)), mapreduce(f, op, tree.l; init))
125+
l = mapreduce(f, op, tree.l; init)
126+
return @inline(op(@inline(f(tree)), l))
127127
else
128-
return op(op(@inline(f(tree)), mapreduce(f, op, tree.l; init)), mapreduce(f, op, tree.r; init))
128+
l = mapreduce(f, op, tree.l; init)
129+
r = mapreduce(f, op, tree.r; init)
130+
return @inline(op(op(@inline(f(tree)), l), r))
129131
end
130132
end
131133
#! format: on
@@ -315,8 +317,8 @@ Note that this will *not* preserve loops in graphs.
315317
function copy_node(tree::N; preserve_sharing::Bool=false) where {T,N<:Node{T}}
316318
return tree_mapreduce(
317319
t -> t.constant ? Node(; val=t.val::T) : Node(T; feature=t.feature),
318-
t -> t.op,
319-
(op, c...) -> Node(op, c...),
320+
identity,
321+
(p, c...) -> Node(p.op, c...),
320322
tree;
321323
preserve_sharing,
322324
result_type=N,

0 commit comments

Comments
 (0)