Adjust the HeaderWord union to layout correctly under MSVC
commitb62cfc4d4817421ca40df2cc93811d09dcf65dd5
authorChristopher Dykes <cdykes@fb.com>
Tue, 7 Feb 2017 19:28:36 +0000 (7 11:28 -0800)
committerHhvm Bot <hhvm-bot@users.noreply.github.com>
Tue, 7 Feb 2017 19:36:52 +0000 (7 11:36 -0800)
treeaba0a1ca04a2e87efcab8c1feac62b03d08f25d8
parentc6fd95d5dc47dd99156eebe3b1e8633a621d9eb3
Adjust the HeaderWord union to layout correctly under MSVC

Summary:
MSVC refuses to lay out bitfields in the same byte unless they are the exact same type, so switch the fields in `HeaderWord` to `uint8_t` so they get laid out correctly under MSVC.
As we are directly dependent on it being exactly 8 bytes, and I only noticed this because MSVC was generating a warning due to a value being shifted too far left, I've added a static assert to ensure it is exactly 8 bytes.

Reviewed By: mofarrell

Differential Revision: D4492198

fbshipit-source-id: d04ac885a5c12e11c5f4ecc36886264794b30a1d
hphp/runtime/base/header-kind.h