Commit Graph

288 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
Masatoshi Kimura
f1e6b8f196 Bug 764234 - Implement StringEncoding API. r=dougt,smontagu 2012-09-28 11:19:18 +01:00
Terrence Cole
185355684f Bug 791322 - Move Rooted to js:: namespace; r=billm
These should not be part of the public API.

--HG--
extra : rebase_source : 00a69ee54f06e3f557cd9ec2f3b059df10aa32df
2012-09-24 18:08:22 -07:00
Bill McCloskey
f13e8e29d9 Bug 787856 - Convert JS_GetPrototype to support lazy protos (r=bhackett) 2012-09-03 16:42:17 -07:00
Bill McCloskey
83bc2a1a11 Bug 787856 - Convert js::GetObjectProto to support lazy protos (r=bhackett) 2012-09-03 16:42:10 -07:00
Ehsan Akhgari
5366306b68 Bug 793294 - Implement AudioBuffer; r=bzbarsky,smaug
This is the full implementation of the AudioBuffer object.  There are
two ways to create these objects from an audio context and this patch
implements only one of them.

The construction of the AudioBuffer object is a two step process: the
object should be created with operator new first, and then
InitializeBuffers should be called on it.  InitializeBuffers is
fallible, because it uses the JS API to create the underlying typed
arrays, but that's fine, since the length of the buffers comes from web
content, and we don't want to use infallible allocations for those
anyways.

We hold on to the JS objects from the C++ implementation, and trace
through all of those objects, so that a GC does not kill those object
without us knowing.

The buffer should be possible to manipulate from both C++ and JS, and
the C++ object probably needs to support a set of methods for the C++
callers at some point.
2012-09-25 17:58:50 -04:00
Ehsan Akhgari
9d98e76815 Bug 792646 - Implement the skeleton of Web Audio source and destination nodes; r=bzbarsky
This is the bare minimum that one needs in order to get those interfaces
implemented.  The work to make the simplest of Web Audio test cases
actually pass will be done in bug 792649.
2012-09-21 11:33:03 -04:00
Kyle Huey
f29709dd83 Bug 793025: Convert FileReaderSync to WebIDL bindings. r=bz 2012-09-20 19:47:47 -07:00
Ehsan Akhgari
b6f864617f Backout changeset 7d0776416955 (bug 792646) because of leaks 2012-09-20 19:47:07 -04:00
Ehsan Akhgari
bbd265ce79 Bug 792646 - Implement the skeleton of Web Audio source and destination nodes; r=bzbarsky
This is the bare minimum that one needs in order to get those interfaces
implemented.  The work to make the simplest of Web Audio test cases
actually pass will be done in bug 792649.
2012-09-20 18:05:38 -04:00
Ms2ger
8222a8a563 Bug 776239 - Unpref XHR bindings; r=bz 2012-09-20 09:55:37 +02:00
Ms2ger
33b350e909 Bug 776243 - Unpref WebGL context bindings; r=peterv 2012-09-20 09:55:36 +02:00
Boris Zbarsky
76cb861fd1 Bug 790975. Support sequences as dictionary members in WebIDL. r=peterv 2012-09-18 23:24:27 -04:00
Ed Morley
d9623c5b84 Merge last PGO-green changeset of mozilla-inbound to mozilla-central 2012-09-17 20:19:57 +01:00
Ehsan Akhgari
42e4bb1beb Bug 787574 follow-up: Forward declare JSContext as a struct
DONTBUILD
2012-09-17 15:16:13 -04:00
Peter Van der Beken
83170deef5 Fix for bug 791345 (Support non-wrappercached objects in proxy-based bindings). r=bz.
--HG--
extra : rebase_source : 884073cf7dccc2e9d1fa1769b00d5ee581d22573
2012-09-17 11:44:59 +02:00
Peter Van der Beken
d21c8a19b6 Fix for bug 788532 (Add the new DOM bindings API to DOM lists). r=bz.
--HG--
extra : rebase_source : 18e21a786b6a9cc2aeada52ba5ca3a2614cb596b
2012-09-05 22:49:53 +02:00
Boris Zbarsky
7fcdacaf95 Bug 790273. Add support for [LenientThis] in WebIDL. r=peterv 2012-09-12 17:24:58 +01:00
Boris Zbarsky
2268aac36b Bug 787554. Don't prefix WebIDL getters names with a Get if they look like simple member access on the C++ side. r=peterv 2012-09-11 20:08:24 +01:00
Boris Zbarsky
970e3b916e Bug 789636. Make getInterface on XHR and QueryInterface on all WebIDL objects be [ChromeOnly]. r=peterv 2012-09-11 20:08:24 +01:00
Boris Zbarsky
907ebb8422 Bug 790123. Make sure to not lose a single trailing newline in stripTrailingWhitespace. r=mats 2012-09-11 18:37:22 +01:00
Peter Van der Beken
c707cfbc30 Fix for bug 768684 (Fix sequence<any> return type in WebIDL). r=bz.
--HG--
extra : rebase_source : acbd2ce77f62146e9bd7fc285a8042073ed95722
2012-06-13 17:15:05 +02:00
Andrea Marchesini
f1e34bab53 Bug 775368 - Porting Websockets to WebIDL, r=bz
--HG--
rename : content/base/src/nsWebSocket.cpp => content/base/src/WebSocket.cpp
rename : content/base/src/nsWebSocket.h => content/base/src/WebSocket.h
2012-09-10 09:48:14 -04:00
Ryan VanderMeulen
02efefb2a8 Merge the last PGO-green inbound changeset to m-c. 2012-09-07 23:51:19 -04:00
Ryan VanderMeulen
a6780e64c5 Merge the last PGO-green inbound changeset to m-c. 2012-09-07 19:48:15 -04:00
Ryan VanderMeulen
82c0f60280 Merge the last PGO-green inbound changeset to m-c. 2012-09-06 20:37:59 -04:00
Jeff Walden
df94506af9 Bug 789309 - Stop installing jsatom.h and jsatom.tbl. r=jorendorff 2012-09-06 17:51:50 -07:00
Ed Morley
5dcf26da5e Merge last PGO-green changeset of mozilla-inbound to mozilla-central 2012-09-06 10:19:16 +01:00
Ms2ger
c84831a407 Bug 763367 - Add support for [EnforceRange] and [Clamp]; r=bz 2012-09-06 09:25:03 +02:00
Ms2ger
40c67660e9 No bug - Move the bool specialization of PrimitiveConversionTraits from between the integer ones. 2012-09-06 09:20:29 +02:00
Ms2ger
541b92080a Bug 768793 - Remove DOMJSClass::mGetWrapperCacheVTableOffset; r=khuey 2012-09-06 09:14:49 +02:00
Ms2ger
71c9573199 Bug 788211 - Fix a few bugs in CGDOMJSProxyHandler_defineProperty; r=bz 2012-09-06 09:14:48 +02:00
Terrence Cole
a171a91eeb Bug 787580 - Root all jsval at the API surface; r=sfink sr=dmandelin
--HG--
rename : layout/reftests/text-decoration/underline-select-2-ref.html => layout/reftests/text-decoration/underline-button-1-ref.html
rename : layout/reftests/text-decoration/underline-select-2.html => layout/reftests/text-decoration/underline-button-1.html
extra : rebase_source : 008f2bab76a005947a4c0bd10b6d9ea8531ea6d0
2012-09-04 16:40:12 -07:00
Boris Zbarsky
41c2bbabd7 Bug 788369. Allow passing strings to the XHR constructor, since CoffeeScript seems to want to do it. r=peterv 2012-09-07 11:07:12 -04:00
Ehsan Akhgari
5880ff1bc0 Bug 787574 - Add a script for creating stub implementations of Web IDL interfaces; r=bzbarsky
DONTBUILD since this is just a script, and NPOTB.
2012-09-06 13:53:43 -04:00
Nathan Froyd
317b7be203 Bug 774757 - don't generate static initializers with new bindings; r=bz 2012-08-29 17:16:23 -04:00
Boris Zbarsky
82186c4dca Bug 742144. Implement support for typedefs in WebIDL. r=khuey 2012-09-06 10:23:51 -04:00
Boris Zbarsky
a860438a8a Bug 778044. Add a way to pref off Paris binding constructor objects. r=peterv 2012-09-05 13:37:28 -04:00
Boris Zbarsky
89f13df7a0 Bug 788149. Don't use jsids in worker code in bindings, because those are runtime-specific and workers can run on multiple runtimes. r=peterv 2012-09-05 13:37:27 -04:00
Boris Zbarsky
4f2844b1a2 Bug 778150 part 3. Default attributes to infallible. Allow annotation of fallible attributes in WebIDL. r=peterv
The valid annotations are [Throws], [GetterThrows], and [SetterThrows], which can all either take no value or
be set to MainThread or Workers if the throwing behavior is only happening on main thread or in workers
2012-09-05 09:21:33 -04:00
Boris Zbarsky
2ec1495f64 Bug 778150 part 2. Default methods to infallible. Allow annotation of fallible methods in WebIDL using [Throws]. r=peterv
[Throws] can either take no value, or can take MainThread or Workers if the
throwing behavior is only happening on main thread or in workers.
2012-09-05 09:21:33 -04:00
Boris Zbarsky
f37002f468 Bug 778150 part 1. Remove the vestigial ability to specify infallibility stuff in the conf file. r=peterv 2012-09-05 09:21:33 -04:00
Eric Faust
c46ac3f166 Bug 781387 - Codegen infallibility data for Paris bindings methods. (r=peterv) 2012-09-04 14:46:38 -04:00
Boris Zbarsky
f7db6bf41a Bug 786105. Setting inline style properties to null should remove them, just like setting them to empty string does. r=peterv 2012-08-31 20:59:46 -04:00
Ehsan Akhgari
4ccf1a400c Bug 775302 - Stub out the implementation of mozAudioContext; r=bzbarsky,khuey 2012-08-31 16:59:37 -04:00
Daniel Holbert
e15f0640ee Bug 785981: Pass global #defines to the process that generates the Paris bindings CSS2Properties.webidl file. r=khuey 2012-08-28 11:14:53 -07:00
Boris Zbarsky
ce68006223 Bug 774970. Add the ability to generate code for dealing with an XPConnect 'this' object in some cases. r=peterv 2012-08-28 13:10:09 -04:00
Boris Zbarsky
95b6463acc Bug 779046. Have saner defaults for the nativeType of a WebIDL bindings. r=peterv 2012-08-28 13:10:09 -04:00
Boris Zbarsky
50289e9c67 Bug 767930. Add support for typed array return values (as just JSObject*) in WebIDL bindings. r=peterv 2012-08-28 13:10:09 -04:00
Peter Van der Beken
bb71680e0a Bug 753517 part 5. Enable the list IC for new DOM bindings too. r=bz. 2012-08-24 09:32:26 -07:00