Some progress: running one of the failing tests through nodejs with the --no-opt flag (for no optimizations) makes it consistently pass.
It looks like V8 is optimizing too aggressively, and incorrectly.
I can observe that when values start diverging, ft() is being called with s===2, and despite that the "other" code path is run (return b ^ c ^ d).
Some progress: running one of the failing tests through nodejs with the --no-opt flag (for no optimizations) makes it consistently pass.
It looks like V8 is optimizing too aggressively, and incorrectly.
I can observe that when values start diverging, ft() is being called with s===2, and despite that the "other" code path is run (return b ^ c ^ d).