That's very interesting. I had noticed the same thing. Your conclusion might very well be correct, and I hadn't even thought of that possibility.
Could the next be a special common case, too?
perl -MO=Deparse,x7 -e'sort { $b cmp $a } @x'
sort @x;
-e syntax OK
Well well well, it looks like it.
It would explain why there appears to be no overhead for the callback. It can also explain the huge speed difference between "<=>" and "-": only the latter actually uses the callback. Otherwise, it would make no sense: "-" is a very fast operator, and checking the sign of the result should be just as fast. So it
must be the overhead of the callback.
Nevertheless, B::Deparse is broken, because the code it produces is obviously not equivalent to the original source code.