gecko-dev/ipc
Nathan Froyd 117f140c46 Bug 909922 - don't pragma pack ipc message headers; r=bent
The IPC::Message header is surrounded by:

#pragma pack(push,2)
...
#pragma pack(pop)

which (at least on GCC) specifies that structure members defined lexically
within the pragma should be two-byte aligned, rather than the ABI's declared
alignment.

But for IPC::Message::Header, this is a silly requirement, as everything there
is four bytes; there's no reason to pack the members any tighter.  And packing
tighter means that strict alignment platforms (like ARM) need to use more
complex code for something as simple as storing to one of the members--like
when we set a message's request ID, over and over and over.  The current code
for setting a message's request ID on ARM looks like:

     264:	6863      	ldr	r3, [r4, #4]
     266:	696a      	ldr	r2, [r5, #20]
     268:	809a      	strh	r2, [r3, #4]
     26a:	0c12      	lsrs	r2, r2, #16
     26c:	80da      	strh	r2, [r3, #6]

With the patch, it looks like:

     264:	6863      	ldr	r3, [r4, #4]
     266:	696a      	ldr	r2, [r5, #20]
     268:	605a      	str	r2, [r3, #4]

Only four bytes, but multiplied over several hundred set_routing_id calls, it
saves some code size and runtime.  I verified that the header's length doesn't
change by looking at debug information.
2013-08-27 16:32:44 -04:00
..
app Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps 2013-09-05 09:01:46 +09:00
chromium Bug 909922 - don't pragma pack ipc message headers; r=bent 2013-08-27 16:32:44 -04:00
dbus Merge m-c to inbound 2013-09-04 18:04:50 -07:00
glue Merge m-c to b2g-inbound. 2013-09-12 20:41:54 -04:00
ipdl Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps 2013-09-05 09:01:46 +09:00
netd Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps 2013-09-05 09:01:46 +09:00
nfc Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps 2013-09-05 09:01:46 +09:00
ril Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps 2013-09-05 09:01:46 +09:00
testshell Bug 912293 - Remove now redundant boilerplate from Makefile.in. r=gps 2013-09-05 09:01:46 +09:00
unixsocket Bug 912996: Remove memcpy when reading from Unix socket, r=qdot 2013-09-06 10:18:35 +02:00
moz.build Bug 855465 - Add emacs python mode comments to moz.build files; r=gps 2013-04-01 11:36:59 -07:00
pull-chromium.py