Most of our ipdl-generated classes have a member layout like so: Channel* mChannel; int32 mId; mozilla::ipc::IProtocolManager<mozilla::ipc::RPCChannel::RPCListener>* mManager; State mState; As bug 492185 pointed out, this layout produces two 4-byte "holes" on 64-bit platforms, one after mId and one after mState. We should be smarter about laying out the members. We won't be able to pack all the holes all the time, but we can get the common cases right.
Created attachment 615380 [details] [diff] [review] patch Like this. I don't think we can do much with the other two cases, but judging by the generated headers, this is the only case that really matters.