Closed
Bug 747516
Opened 13 years ago
Closed 13 years ago
mozilla::dom::Link should be one word smaller
Categories
(Core :: DOM: Core & HTML, defect)
Core
DOM: Core & HTML
Tracking
()
RESOLVED
FIXED
mozilla15
People
(Reporter: froydnj, Assigned: ehsan.akhgari)
References
Details
(Whiteboard: [MemShrink])
Attachments
(1 file)
|
1.64 KB,
patch
|
bzbarsky
:
review+
|
Details | Diff | Splinter Review |
Link's members are laid out like so:
nsLinkState mLinkState;
mutable nsCOMPtr<nsIURI> mCachedURI;
bool mRegistered;
Element * const mElement;
// Strong reference to History. The link has to unregister before History
// can disappear.
nsCOMPtr<IHistory> mHistory;
Besides this introducing 11 (!) bytes of padding on a 64-bit system, there's no need for mLinkState to be a full integer. nsLinkState only has a handful of values. mLinkState should be a PRUInt16 or similar; mRegistered could then be packed with it, which would save a word on 32-bit and 64-bit systems.
| Assignee | ||
Comment 1•13 years ago
|
||
Comment 2•13 years ago
|
||
Comment on attachment 617105 [details] [diff] [review]
Patch (v1)
r=me. I wish compilers would get with the program and just let us declare the sizes of enums!
Attachment #617105 -
Flags: review?(bzbarsky) → review+
| Assignee | ||
Comment 3•13 years ago
|
||
(In reply to Boris Zbarsky (:bz) from comment #2)
> r=me. I wish compilers would get with the program and just let us declare
> the sizes of enums!
If you're holding your breath to inject some sanity into any C++ compiler soon, be warned that you might need to hold it for way longer than recommended by the medical community. :-)
| Assignee | ||
Comment 4•13 years ago
|
||
Nathan, thanks for filing this bug. :-)
https://hg.mozilla.org/projects/birch/rev/25f093f5a4bd
Target Milestone: --- → mozilla15
| Assignee | ||
Updated•13 years ago
|
Whiteboard: [MemShrink]
Comment 5•13 years ago
|
||
We don't need sanity. We just need to drop gcc 4.2 on Mac and switch to clang with -std=c++0x. Well, and probably turn on c++0x mode in gcc on Linux too.
Comment 6•13 years ago
|
||
Nice patch! I had to use PRInt16 instead of a sized enum in bug 712865 as well.
What were the before and after sizes (on both 32-bit and 64-bit)? And roughly how many Link objects do we have live at a time?
Comment 7•13 years ago
|
||
It depends on the page. Basically, one per <a> or <link> or <area> element. So order of dozens to hundreds per page, though pathological cases could have tens of thousands on a page, of course.
| Assignee | ||
Comment 8•13 years ago
|
||
(In reply to Nicholas Nethercote [:njn] from comment #6)
> Nice patch! I had to use PRInt16 instead of a sized enum in bug 712865 as
> well.
>
> What were the before and after sizes (on both 32-bit and 64-bit)? And
> roughly how many Link objects do we have live at a time?
This should save 4 bytes on 32-bit and 8 bytes on 64-bit per Link object.
Comment 9•13 years ago
|
||
> This should save 4 bytes on 32-bit and 8 bytes on 64-bit per Link object.
I should have guessed that from the bug title :) Thanks for clarifying!
| Assignee | ||
Comment 10•13 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
Updated•6 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•