Next: Experimental results.
Up: Case Study: System Call
Previous: Applying compiler optimizations
The looped multi-call is a variant of the basic multi-call
mechanism that repeats the multi-call sequence a specific number of times.
It is applicable in the situation where, after other transformations have
been applied, the entire body of a loop consists of a single multi-call.
In this case, the number of boundary crossings can be reduced to one rather
than one per iteration by moving the loop into the kernel.
For example, in the copy program, the entire loop can be moved into the
kernel using the looped multi-call construct once the write-read
sequence is replaced by a multi-call.
This optimization is actually a simple extension of traditional
loop invariant motion  applied across address spaces.