Commit Graph

91 Commits

Author SHA1 Message Date
Trevor Saunders
c55a85644c bug 822289 - remove NS_IMPL_CYCLE_COLLECTION_CLASS and friends r=mccr8 2013-01-12 07:40:33 -05:00
Benoit Jacob
2f61a3a0d4 Bug 806279 - CC macros refactoring: part 2: generic BEGIN_ macros folding in the NATIVE case - r=mccr8,smaug 2012-11-15 02:32:39 -05:00
Boris Zbarsky
176d3950cc Bug 795221 part 3. Implement cycle collection for GroupRule objects. r=smaug,dbaron 2012-10-07 22:39:09 -04:00
Boris Zbarsky
68dd5c75e0 Bug 795221 part 1. Implement cycle collection for nsCSSStyleSheet objects, so we don't leak through them. r=smaug,dbaron
Each nsCSSStyleSheet has a pointer to a nsCSSStyleSheetInner.  The
nsCSSStyleSheetInner is shared across multiple stylesheets, in
general.  The nsCSSStyleSheetInner owns the rules and the child
stylesheets.

What this means is that a given rule object is effectively owned by
multiple sheets.  However, cycles can only form through rule objects
that have been JS-wrapped, and if we're JS-wrapping a rule object that
means we have ensured that it's owned by only one stylesheet.
Therefore, we only traverse and unlink mInner if it's uniquely owned
by our sheet.

Similarly, if our child sheets or any of their rules have been
JS-wrapped, that means that we must have an mInner that we own
outright.
2012-10-07 22:39:08 -04:00
Kyle Huey
0ee82049a5 Bug 760331: Coalesce data for inline style across nodes. r=bz
This patch enables sharing of an nsAttrValue's MiscContainer between nodes for style rules.  MiscContainers of type eCSSStyleRule are now refcounted (with some clever struct packing to ensure that the amount of memory allocated for MiscContainer remains unchanged on 32 and 64 bit).  This infrastructure can be used to share most MiscContainer types in the future if we find advantages to sharing other types than just eCSSStyleRuley.  A cache mapping strings to MiscContainers has been added to nsHTMLCSSStyleSheet.  MiscContainers can be shared between nsAttrValues when one nsAttrValue is SetTo another nsAttrValue or when there is a cache hit in this cache.  This patch also adds the ability to tell a style rule that it belongs to an nsHTMLCSSStyleSheet, with appropriate accessor functions to separate that from the existing case of belonging to an nsCSSStyleSheet.

The primary use case is to reduce memory use for pages that have lots of inline style attributes with the same value.  This can happen easily with large pages that are automatically generated.  An (admittedly pathological) testcase in Bug 686975 sees over 250 MB of memory savings with this change.  Reusing the same MiscContainer for multiple nodes saves the overhead of maintaining separate copies of the string containing the serialized value of the style attribute and of creating separate style rules for each node.  Eliminating duplicate style rules enables further savings in layout through style context sharing.  The testcase sees the amount of memory used by style contexts go from over 250 MB to 10 KB.

Because the cache is based on the text value of the style attribute, it will not handle attributes that have different text values but are parsed into identical style rules.  We also do not attempt to share MiscContainers when the node's base URI differs from the document URI.  The effect of these limitations is expected to be low.
2012-09-30 09:40:24 -07:00
Isaac Aggrey
990e90e88a Bug 791906: Replace NSPR integer limit constants with stdint ones; r=ehsan 2012-09-28 01:57:33 -05:00
Ehsan Akhgari
243c878d26 Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg
This patch was generated by a script.  Here's the source of the script for
future reference:

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert PRInt8 int8_t
convert PRUint8 uint8_t
convert PRInt16 int16_t
convert PRUint16 uint16_t
convert PRInt32 int32_t
convert PRUint32 uint32_t
convert PRInt64 int64_t
convert PRUint64 uint64_t

convert PRIntn int
convert PRUintn unsigned

convert PRSize size_t

convert PROffset32 int32_t
convert PROffset64 int64_t

convert PRPtrdiff ptrdiff_t

convert PRFloat64 double
2012-08-22 11:56:38 -04:00
Aryeh Gregor
691ef24b2a Bug 780618 - Move all error codes to nsError.h; r=ehsan 2012-07-27 17:03:27 +03:00
Boris Zbarsky
8f41ab9fae Bug 753517 part 2.75. Fix the QI impls to not lie. r=bustage 2012-08-06 01:24:43 -04:00
Boris Zbarsky
7e045aa8f8 Bug 753517 part 2. Make all CSS declarations wrappercached and make them correctly handle preserved wrappers. r=mccr8,peterv,smaug,dbaron 2012-08-05 22:16:30 -04:00
Boris Zbarsky
17d5ce7f42 Bug 753517 part 1. Make GetParentObject() on CSS declarations return a useful nsINode if possible. r=peterv,dbaron 2012-08-05 22:14:52 -04:00
Aryeh Gregor
8b4a23fc4c Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Olli Pettay
2067752f5b Bug 765163 - Implement code generator for simple DOM events, r=jst,khuey 2012-07-20 19:42:08 +03:00
Gervase Markham
cb6a072c2a Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Zack Weinberg
cb5a4ee507 Bug 729142 - Convert layout/style to MOZ_STATIC_ASSERT. r=dbaron 2012-02-23 08:19:00 -08:00
Nicholas Nethercote
4762ea78a3 Bug 671299 (part 3) - Add style sheet memory reporters. r=dbaron. 2012-01-02 18:19:14 -08:00
Ehsan Akhgari
478ad1a412 Bug 690892 - Replace PR_TRUE/PR_FALSE with true/false on mozilla-central; rs=dbaron
Landing on a CLOSED TREE
2011-10-17 10:59:28 -04:00
Michael Wu
0fe7772ece Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones 2011-09-28 23:19:26 -07:00
Masayuki Nakano
e9a6794dc8 Bug 669028 part.11 layout/style should use mozilla;LookAndFeel rather than nsILookAndFeel r=dbaron 2011-09-09 11:27:12 +09:00
Boris Zbarsky
5105f282e0 Bug 529750 part 4. Move GetImportantRule to css::StyleRule. r=dbaron 2011-05-23 16:45:44 -04:00
Craig Topper
8b8b6986cb Bug 648925 - Part 4: DeCOMtaminate GetDOMRule and GetDOMRuleWeak. r=bzbarsky 2011-04-07 23:36:09 -07:00
Craig Topper
4382f36c4b Bug 648925 - Part 3: Factor some common method bodies into css::Rule. r=bzbarsky 2011-04-11 19:46:35 -07:00
Craig Topper
ebb550cdf5 Bug 648925 - Part 1: Change uses of nsICSSRule to css::Rule. r=bzbarsky 2011-04-07 18:23:46 -07:00
L. David Baron
f0144db772 Audit for places in style rule code that need to check for a null sheet. (Bug 634373) r=bzbarsky 2011-05-02 18:43:44 -07:00
Boris Zbarsky
6a971e7ee6 Bug 649163. Stop refcounting the return values from GetCSSParsingEnvironment, where possible. r=dbaron 2011-04-27 16:53:49 -04:00
Zack Weinberg
145a79dd39 Bug 651017, part 1: minimize inclusion of ns*DeviceContext.h; move the printing error codes to nsIDeviceContextSpec.h; os2 small widget cleanup. 2011-04-16 18:22:41 -07:00
Zack Weinberg
e93c385aef Bug 174055, part 1: minimize inclusion of nsI(Thebes)FontMetrics.h. 2011-04-07 18:04:41 -07:00
L. David Baron
c67fd1c0b2 Share implementation of GetCSSParsingEnvironment so we can use it for both style rules' declarations and keyframe rules' declarations. (Bug 435442, patch 2) r=bzbarsky 2011-04-11 23:18:42 -07:00
Craig Topper
9234cb0eed Bug 645956 - Part 1: Remove NS_NewCSSStyleRule, r=bzbarsky 2011-03-22 19:56:47 -07:00
Craig Topper
662a2163bc Bug 577976 - Part 5: Remove AddRef from GetStyleSheet, r=bzbarsky 2010-08-07 22:33:15 -07:00
Craig Topper
3b1be64aff Bug 577976 - Part 4: Move AddRef/Release back to nsCSSRule, r=bzbarsky 2011-03-17 22:18:08 -07:00
Craig Topper
4dd63018ca Bug 577976 - Part 3: Rename nsCSSRule and put in css namespace, r=bzbarsky 2011-03-06 19:59:03 -08:00
Craig Topper
1495e807e6 Bug 577976 - Part 2: Remove forwarding methods to nsCSSRule from Rule classes, r=bzbarsky 2010-08-07 22:30:57 -07:00
Craig Topper
2c68d86266 Bug 577974 - Part 2: Remove nsICSSGroupRule, r=bzbarsky 2010-08-07 22:28:33 -07:00
Boris Zbarsky
c0495b9185 Bug 602341 part 7. Fix serialization of tree selectors. r=dbaron 2011-03-23 17:25:42 -04:00
Boris Zbarsky
954e2ba061 Bug 602341 part 4. Drop the nsIAtom arguments to AddPSeudoClass. r=dbaron 2011-03-23 09:52:25 -04:00
Boris Zbarsky
8b228e3cc3 Bug 602341 part 3. Get rid of the mAtom member of nsPseudoClassList. r=dbaron 2011-03-23 09:52:25 -04:00
Boris Zbarsky
13c0c3adbb Bug 602341 part 1. Switch the pseudoclass Has*Arg functions from atoms to pseudoclass types. r=dbaron 2011-03-23 09:52:24 -04:00
Craig Topper
a6108498c3 Bug 576831 part 6. DeCOMtaminate some StyleRule method signatures. r=bzbarsky. 2011-03-10 21:50:20 -05:00
Craig Topper
31a276fb06 Bug 576831 part 5. Make some methods that used to be virtual non-virtual. r=bzbarsky 2011-03-10 21:50:12 -05:00
Craig Topper
fc51c496b9 Bug 576831 part 4. Remove nsICSSStyleRule and use mozilla::css::StyleRule instead. r=bzbarsky 2011-03-10 21:48:57 -05:00