Status: New
Owner: ----

New issue 2357 by [email protected]: Uint8Array codegen errors with Chrome 22/Linux/x64
http://code.google.com/p/v8/issues/detail?id=2357

One of the users of my emulator reported that it seemed to stop working as Chrome 22 was released.

https://github.com/hulkholden/n64js/issues/3

The attached test.html reproduces the bug with Ubunutu 12.04/64-bit and Chrome 22.0.1229.79. The bug does not seem to occur with Chrome 22 in OSX/64bit or Ubuntu/32-bit.

I hesitated about raising this issue as it appears that the the bug is fixed in Chrome 23+. But I'm unsure how long the Chrome release cycles are, and perhaps this is significant enough to warrant hotfixing. Or perhaps not :)

Anyway, the bug seems to be that after a number of iterations, the following code seems to be optimised incorrectly.

return ((this.u8[offset] << 24) | (this.u8[offset+1] << 16) | (this.u8[offset+2] << 8) | this.u8[offset+3])>>>0;

this.u8 is a Uint8Array. The bug seems to manifest with the top byte of the result being thrown away (it comes through as 0). What's weird is that if I change the value that's written to the array from 0xaaaaaaaa to 0x0aaaaaaa, the bug appears to happen less frequently (about 25% of the time, vs 100% of the time when 0xaaaaaaaa is used).

As I mentioned above, the bug does seem to be fixed (I tested using the latest version of d8 on Ubuntu/64 and the test passed), but I'm just raising in case someone thinks it's worth pushing a fix out to Chrome stable.

Thanks,
Paul

Attachments:
        test.html  2.2 KB

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to