Commit Graph

78 Commits

Author SHA1 Message Date
Kyle Huey
1ccfbe810b 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
a53c93b026 Bug 795351: Replace LL_MAXINT, LL_MININT, LL_MAXUINT with stdint versions; r=ehsan 2012-09-28 14:55:23 -05:00
Isaac Aggrey
84680bfb39 Bug 789847 - Remove PR_CALLBACK usage from tree 2012-09-25 11:18:38 -05:00
Ehsan Akhgari
8c296bbcd4 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
57c0ad57fb Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Rafael Ávila de Espíndola
1cfc592a31 Bug 774028 - Fix variable declaration. r=dholbert. 2012-07-15 00:12:53 -04:00
Brian Birtles
917037a94e Bug 752902 - Call Unlink before clearing time value specs; r=dholbert 2012-05-23 08:21:23 +09:00
Gervase Markham
87620f5676 Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Brian Birtles
b9f83ac5c5 Bug 512525 - Implement SVG Fragment Identifier parsing and animation hyperlinking - Part 1 infrastructure to support hyperlinking. r=dholbert 2012-05-17 10:56:57 +01:00
Nicholas Nethercote
ba5600fd65 Bug 711895 - Tweak the warning options used for GCC builds (3rd attempt). r=waldo,derf,khuey,mhommey.
--HG--
extra : rebase_source : 20540c9b838ee3be6cb0847c1b90fdc3bd44059d
2012-03-21 22:21:16 -07:00
Nicholas Nethercote
256772d52e Backed out changeset 0124795a8cbb (bug 711895) due to i10n build bustage. r=me. 2012-03-21 21:46:27 -07:00
Nicholas Nethercote
1859bc3ea6 Bug 711895 - Tweak the warning options used for GCC builds (2nd attempt). r=waldo,derf,khuey,mhommey,jwatt. 2012-03-15 19:40:00 -07:00
Rafael Ávila de Espíndola
ec2d4903e9 Bug 723534 - Remove dead default cases. r=ehsan. 2012-02-24 08:36:53 -05:00
Brian Birtles
51354a911b Bug 705236 part 1 - Allow trailing separator in SMIL values list; r=dholbert 2012-02-24 09:45:40 +09:00
Brian Birtles
878a0b9023 Bug 720103 - Detect and break create-delete cycles in SMIL timegraphs; r=dholbert 2012-02-02 08:58:58 +09:00
Brian Birtles
da0e7068e0 Bug 720103 - Pass timed element not interval to notify new interval callback; r=dholbert 2012-01-31 09:54:10 +09:00
Matt Brubeck
d742cbe60a Back out da3319e4987c (bug 704482) because of test_smilAccessKey.xhtml failure 2011-11-23 19:02:43 -08:00
Daniel Holbert
38fb982b29 Bug 704482: Reject 'accessKey' time specifications in SVG animation elements when scripting is disabled. r=birtles r=roc 2011-11-23 17:49:26 -08:00
Brian Birtles
d151d32ec2 Bug 691337 - Detect integer overflow when creating instance times; r=longsonr 2011-11-16 08:56:32 +13:00
Brian Birtles
0de65659eb Bug 697640 - Ignore self-dependent end instance times when determining if an open-ended interval is ok; r=dholbert 2011-11-14 16:58:30 +13:00
Brian Birtles
7710c0c97d Bug 690994 - Check for self-dependent times when there are coincident zero-duration intervals; r=dholbert 2011-11-14 16:58:30 +13:00
Ehsan Akhgari
2a602a5685 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
d8e503c38b Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones
--HG--
rename : tools/trace-malloc/bloatblame.c => tools/trace-malloc/bloatblame.cpp
2011-09-28 23:19:26 -07:00
Brian Birtles
a819b6b88c Bug 682184 part 2 - Add nsSMILTimeValue::IsResolved; r=dholbert 2011-09-07 09:20:40 +09:00
Brian Birtles
08eeeda336 Bug 682184 part 1 - Rename nsSMILTimeValue::IsResolved to IsDefinite; r=dholbert 2011-09-07 09:20:40 +09:00
Ehsan Akhgari
78f4e1ccb9 Revert to 176fae7de173 which was fine.
Sorry for breaking the history, won't trust TBPL, ever again. :(
2011-09-02 09:15:54 -04:00
Ehsan Akhgari
a171549936 Revert to changeset e6fc4594c22e which was the last one to get a green Win7 tp run 2011-09-02 09:03:08 -04:00
Brian Birtles
cfb3ac26f3 Bug 678938 - SMIL: Make sure current interval is properly cleared when doing a rewind; r=dholbert 2011-09-02 08:15:44 +09:00
Brian Birtles
2be626a78f Bug 678847 part 2 - SMIL: Fix recursion with self-referential end conditions on open intervals; r=dholbert 2011-09-02 08:14:58 +09:00
Brian Birtles
c05de232af Bug 670313 - Check range of instance time values when they are passed in; r=dholbert 2011-07-25 10:46:08 -07:00
Brian Birtles
dd63118982 Bug 669225 part 7 - Mark stack classes as such; r=dholbert 2011-07-25 10:46:04 -07:00
Brian Birtles
0a4ca726ca Bug 669225 part 6 - Break dependencies sooner on unlink; r=dholbert 2011-07-25 10:45:49 -07:00
Brian Birtles
ac3e371931 Bug 669225 part 5 - Make sure other removal functors don't remove instance times that should be preserved; r=dholbert 2011-07-25 10:45:29 -07:00
Brian Birtles
e94f86fd06 Bug 669225 part 4 - Make sure filtering of instance times doesn't remove the previous interval's end time; r=dholbert 2011-07-25 10:45:03 -07:00
Brian Birtles
5fc127fdbc Bug 669225 part 3 - Add assertion to catch potentially problematic instance time deletion; r=dholbert 2011-07-25 10:44:58 -07:00
Brian Birtles
a9772f3991 Bug 669225 part 2 - Preserve instance times that belong to intervals; r=dholbert 2011-07-25 10:44:54 -07:00
Brian Birtles
5c758ce335 Bug 669234 - Use AutoRestore to manage depth recursion tracking in nsSMILTimedElement, r=dholbert 2011-07-15 11:17:15 +09:00
Brian Birtles
e5b308da49 Bug 665334 part 3 - Don't remove instance times used as fixed interval endpoints, r=dholbert 2011-07-02 12:37:56 +09:00
Brian Birtles
dbea318c75 Bug 665334 part 2 - Add fallback to detect infinite recursion when updating the interval and bail out, r=dholbert 2011-07-02 12:37:47 +09:00
Brian Birtles
3606b29e7b Bug 664343 - Batch updates to current interval, r=dholbert 2011-07-02 12:37:10 +09:00
Brian Birtles
1ffb9cb392 Bug 663288 - Don't allow instance times to be self-dependent, r=dholbert 2011-06-22 10:12:35 +09:00
Brian Birtles
df2767992e Bug 650732 - Move interval change notifications into the timed element, r=dholbert 2011-06-15 09:16:57 +09:00
Daniel Holbert
0ed416d521 Bug 604147: Make nsSMILTimedElement::GetNextInterval return PRBool instead of nsresult. r=birtles 2011-03-27 19:10:33 -04:00
Brian Birtles
2b13cacbcd Bug 615872 Part 2 - SVG SMIL: Remove local resamples from timed elements; r=dholbert; a=roc 2010-12-23 14:48:31 +09:00
Brian Birtles
365bdf5a91 Bug 615002 - SVG SMIL: Ignore previous milestones if we've been reset; r=dholbert; a=roc 2010-12-14 09:38:14 +09:00
Brian Birtles
c6097b97f5 Bug 605345 - SVG SMIL: Fix time container pause state handling to avoid negative container times; r=dholbert; a=blocking-2.0 2010-11-10 08:22:02 +09:00
Brian Birtles
c9ec008e48 Bug 579828 - SVG SMIL: Trim, don't prune invalid active intervals; r=dholbert; a=roc 2010-10-20 08:55:09 +09:00
Brian Birtles
721bffca0b Bug 596796 - SVG SMIL: Fix inconsistent state when resetting current interval; r=dholbert; a=roc 2010-10-13 09:20:12 +09:00
Brian Birtles
a7ca4fe4a3 Bug 594653 - SVG SMIL: Don't use InstanceTimeComparator on times without serial numbers; r=dholbert; a=roc 2010-10-13 09:17:55 +09:00
Brian Birtles
e679591d1a Bug 588287 - SVG SMIL: Fix reparenting animation to younger time container; r=dholbert; a=blocking-final 2010-10-13 09:15:32 +09:00