It's the same mechanism that sort uses for in-place sorting in 5.10. I've thought about patching List::Util::shuffle() in the same way.
I thought what you meant was that a subroutine can detect its being called in void context? But if I am not mistaken, 5.10's in-place sorting does not happen in void context:
% perl5.10.0 -lwe '@a = (2,1); sort @a; print @a'
Useless use of sort in void context at -e line 1.
As I understand it, perl (5.10) will detect that in @a = sort @a, the destination array is the same as the source array, so it uses a more efficient algorithm (but it's still in list context).