No, it's not a fluke. The calling convention for 64 bit code is that the caller cleans the stack, not the callee. But this code should do the right thing anyway, and it's easy anyway. If you don't want to do it, put in an assert(I32).