Skip to main content

bulk

Function bulk 

Source
pub fn bulk(func: &mut Func, names: &mut Interner, word: u32)
Expand description

Rewrites every bulk copy and bulk fill, into moves when that is worth it and into a call to the runtime when it is not.

A copy of more than UNROLL moves becomes a call, and so does a fill whose byte is not a constant, which the front end does not write today and which would need the byte spread across a word at runtime. A memmove is always a call, because the two sides may overlap and a run of moves in one direction is only right for one of the two ways they can.

word is how many bytes the widest move on this machine carries. Nothing here reads a target otherwise, and a copy is the same run of loads and stores everywhere.