Commit Graph

22 Commits

Author SHA1 Message Date
Catalin Iacob
6f4758d23e Bug 798914 (part 5) - Use newly introduced mozilla::MallocSizeOf instead of nsMallocSizeOfFun. r=njn.
--HG--
extra : rebase_source : fc472490dd978d165f02f77ed37f07aed6e5bb61
2013-06-23 14:03:39 +02:00
John Daggett
0eae803e8f Bug 549861 - reland font-variant subproperties with DOM-peer review. r=khuey 2013-05-20 11:59:20 +09:00
Ms2ger
7786ea6954 Backout bug 549861 (changesets 27fb48df15ce:7ecd4e3863b4) for insufficient review. 2013-05-19 20:23:19 +02:00
John Daggett
5b570d8745 Bug 549861. Implement support for @font-feature-values rule. r=dbaron 2013-05-13 18:45:37 +09:00
Joshua Cranmer
5765d5aec4 Bug 767563 - Add a clang static checker, part 3: Move the MOZ_MUST_OVERRIDE macro to MFBT. r=Waldo 2013-03-23 21:14:43 -05:00
Boris Zbarsky
7f699883ea Bug 795221 part 3. Implement cycle collection for GroupRule objects. r=smaug,dbaron
--HG--
rename : content/html/content/crashtests/795221-1.html => content/html/content/crashtests/795221-2.html
2012-10-07 22:39:09 -04:00
Boris Zbarsky
fd9c6f7979 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
43e58e33c8 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
Ehsan Akhgari
e368dc9c85 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
Boris Zbarsky
c4ec20c33e 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
Cameron McCormack
1528758ac5 Bug 649740 - Implement @supports. r=dbaron,bz 2012-08-02 10:32:12 +10:00
Aryeh Gregor
d0ad5a7d0c Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Gervase Markham
82ff7027aa Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Nicholas Nethercote
0709e1673b Bug 671299 (part 3) - Add style sheet memory reporters. r=dbaron. 2012-01-02 18:19:14 -08:00
Matheus Kerschbaum ext:(%2C%20L.%20David%20Baron%20%3Cdbaron%40dbaron.org%3E)
1b406143bc Bug 664924 - Remove MOZ_CSS_ANIMATIONS ifdefs. r=dbaron 2011-06-20 16:47:09 -07:00
Craig Topper
a96af92a84 Bug 648925 - Part 4: DeCOMtaminate GetDOMRule and GetDOMRuleWeak. r=bzbarsky 2011-04-07 23:36:09 -07:00
Craig Topper
17f74aee24 Bug 648925 - Part 3: Factor some common method bodies into css::Rule. r=bzbarsky 2011-04-11 19:46:35 -07:00
Craig Topper
0a33ba66bb Bug 648925 - Part 2: Make several css::Rule methods non-virtual and inline. r=bzbarsky 2011-04-07 20:51:25 -07:00
Craig Topper
c3d4c659c7 Bug 648925 - Part 1: Change uses of nsICSSRule to css::Rule. r=bzbarsky 2011-04-07 18:23:46 -07:00
Craig Topper
8bbf26beb9 Bug 577976 - Part 5: Remove AddRef from GetStyleSheet, r=bzbarsky 2010-08-07 22:33:15 -07:00
Craig Topper
d78fcbd193 Bug 577976 - Part 4: Move AddRef/Release back to nsCSSRule, r=bzbarsky 2011-03-17 22:18:08 -07:00
Craig Topper
8ef5f341e8 Bug 577976 - Part 3: Rename nsCSSRule and put in css namespace, r=bzbarsky
--HG--
rename : layout/style/nsCSSRule.h => layout/style/Rule.h
2011-03-06 19:59:03 -08:00