mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
b97b9da178
For the same reason as previous commit, the code clang generates for ~AutoOutputRegister when inlined in CacheIRCompiler::emitArrayJoinResult makes valgrind unhappy. The reason is that TypedOrValueRegister contains a union with two types of different sizes, where clang makes the code do a check against the larger variant before validating the union tag says that's the type in use, and that doesn't go well under valgrind when the union value was set for the smaller variant. One way to fix this is to make the TypedOrValueRegister constructor fill the uninitialized bytes of the union, but it also appears that the types used in the union, as well as the union tag itself, are larger than they actually need to be: - AnyRegister::Code is a 32-bits integer representing a register number, when no supported platform has more than 254 registers (accounting for AnyRegister::Invalid), - MIRType is a 32-bits integer (enum, actually) representing values that are all below 256. Changing only the former would make valgrind happy, avoiding the uninitialized bytes being tested against in ~AutoOutputRegister, but it was too tempting to do MIRType as well. |
||
---|---|---|
.. | ||
ductwork/debugger | ||
examples | ||
ipc | ||
public | ||
rust | ||
src | ||
xpconnect | ||
app.mozbuild | ||
ffi.configure | ||
moz.build | ||
moz.configure |