Skip to content

Commit e28f6ad

Browse files
committed
avoid boxing mergedface by moving it out of the function
1 parent d980342 commit e28f6ad

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/faces.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,11 @@ Base.merge(a::Face, b::Face, others::Face...) = merge(merge(a, b), others...)
523523

524524
## Getting the combined face from a set of properties ##
525525

526+
# Putting these inside `getface` causes the julia compiler to box it
527+
_mergedface(face::Face) = face
528+
_mergedface(face::Symbol) = get(FACES.current[], face, Face())
529+
_mergedface(faces::Vector) = mapfoldl(_mergedface, merge, Iterators.reverse(faces))
530+
526531
"""
527532
getface(faces)
528533
@@ -531,10 +536,7 @@ Obtain the final merged face from `faces`, an iterator of
531536
"""
532537
function getface(faces)
533538
isempty(faces) && return FACES.current[][:default]
534-
mergedface(face::Face) = face
535-
mergedface(face::Symbol) = get(FACES.current[], face, Face())
536-
mergedface(faces::Vector) = mapfoldl(mergedface, merge, Iterators.reverse(faces))
537-
combined = mapfoldl(mergedface, merge, faces)::Face
539+
combined = mapfoldl(_mergedface, merge, faces)::Face
538540
if !isempty(combined.inherit)
539541
combined = merge(Face(), combined)
540542
end

0 commit comments

Comments
 (0)