RunImpl allocated the reflection mask (1 byte/pixel) and the owner map (4 bytes/pixel) afresh for every image - 90 MB at 18 Mpixel, above the malloc mmap threshold, so each call paid an mmap, a zero-fill page fault per 4 kB and an munmap (with its TLB shootdown across the other workers). On a CPU-only rotation run of a 16M set that was 79 M page faults and 794 s of system time. Both are now members of the engine, and each call clears the rectangles the previous one wrote before it starts. Contents at every read are unchanged, so the output is byte-identical; CPU-only wall 297 -> 262 s, system time 794 -> 214 s. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D1G8gJVAy6gp1K5Dz3NE5C