It doesn't handle saving/restoring registers across write barrier slow path calls correctly. We don't take into account that there could be other registers in use that the ScratchRegisterAllocator doesn't know/care about.