Граф коммитов

565 Коммитов

Автор SHA1 Сообщение Дата
Kris Maglione f37317cad0 Bug 1369533: Return dead wrappers rather than null for dead CallbackObject values. r=bz
We don't have access to an appropriate context to create the dead wrapper in
when the callback is nuked, so instead, this patch creates a new dead wrapper
in the caller compartment each time the property is accessed. This is the same
behavior we'd get when trying to re-wrap a cross-compartment dead wrapper, so
it's consistent with the way we handle these situations elsewhere.

MozReview-Commit-ID: 3cMeR4z8EOe

--HG--
extra : rebase_source : 7e8cf4a195ef64deb7677ce4ac9818d342815667
2017-09-04 17:21:06 -07:00
Boris Zbarsky 4d16655b25 Bug 1393806 part 3. Change dom::ReparentWrapper to take an ErrorResult. r=peterv
This makes it easier for its consumers to avoid leaving a dangling exception on
the JSContext.

MozReview-Commit-ID: Xep7IkYxSx
2017-09-13 13:34:55 -04:00
Jon Coppeard a3c0357907 Bug 1399141 - Attribute malloc memory when creating reflector object r=baku 2017-09-13 11:21:12 +01:00
Jon Coppeard a4fe4cbe3c Bug 1301863 - Tell the JS engine how much memory blob reflectors hold alive r=baku 2017-09-12 10:46:51 +01:00
Nicolas Silva 8c73d0d120 Bug 1398134 - Fix warning in BindingUtils.h. r=bkelly 2017-09-11 14:50:15 +02:00
Benjamin Bouvier b5407c81cc Bug 1391633: Remove the unused JSContext parameter in SetDocumentAndPageUseCounter; r=froydnj
MozReview-Commit-ID: KtVP5JgLIFC

--HG--
extra : rebase_source : 210f0a479cf0919e1d6e589a5857f43fb50fa8c5
extra : histedit_source : 2f08891b3dba80e117e3f5e4a0e0367b51e42606
2017-08-18 16:02:15 +02:00
Edgar Chen 12bce104dc Bug 1299363 - Part 2: Allow prototype swizzling in html constructor. r=bz
MozReview-Commit-ID: KGVfbAxpbfq

--HG--
extra : rebase_source : f9b5150eb2c988b0d18b44cdcce820bc8d3f4bf3
extra : histedit_source : a6f4f69740f3622959557e1fc0ae44bb05151c37
2017-02-17 18:33:44 +08:00
Boris Zbarsky d226db3321 Bug 1371259 followup. Fix rooting analysis hazards in UnwrapObjectInternal. r=peterv pending 2017-07-10 18:04:49 -04:00
Boris Zbarsky cdd8fe10d4 Bug 1371259 part 4. Stop using UnwrapArg to unwrap this values. r=peterv 2017-07-10 16:05:25 -04:00
Boris Zbarsky 5c76874a46 Bug 1371259 part 3. Change UnwrapObject<> and the UNWRAP_OBJECT macro to allow passing in mutable object or value handles for the thing being unwrapped, and do so at various callsites. r=peterv
I did audit all UNWRAP_OBJECT callers to make sure that the lifetimes of all the
temporary Rooted or the RefPtrs they unwrap into are long enough.
2017-07-10 16:05:24 -04:00
Ting-Yu Chou 2a8c9b7ffd Bug 1348099 part 1 - Binary search property id when resolve DOM Xrays own property. r=bz
Currently we resolve a property by iterating every prefable and check whether it
is enabled.  If it is, we linear search the ids that it manages.  This patch
changes that to binary searching to find whether the id being resolved is
present first, and checking whether its prefable is enabled only when we find
it.  This improves the performance of property resolution, especially when the
property is not present.

The patch stores all the property ids a NativePropertiesN owns in a single array
of PropertyInfo structs.  Each struct contains an id and the information needed
to find the corresponding Prefable for the enabled check, as well as the
information needed to find the correct property descriptor in the Prefable.  We
also store an array of indices into the PropertyInfo array, sorted by bits of
the corresponding jsid.  Given a jsid, this allows us to binary search for the
index of the corresponding PropertyInfo, if any.  The index array requires 2
bytes for each property, which is ~20k across all our bindings.  The extra
information stored in each PropertyInfo requires 4 bytes for each property,
which is about 40k across all our bindings in 32-bit builds, or 80k in 64-bit
builds due to alignment requirements on PropertyInfo.  However we save a bit of
memory from changing NativePropertiesN's trios to duos.

The array of unsorted ids is kept because XrayOwnPropertyKeys() includes only
properties that are enabled.  Without it, we will need to check every single
property to know whether its prefable is enabled or not, which is inefficient.

With this patch, initializing property ids takes longer because of the sorting.
I measured also insertion sort because I thought the ids should be nearly sorted
as they are generated sequentially at run time, but that's not the case and
NS_QuickSort() runs faster.

MozReview-Commit-ID: Lc4Z1ui3t0o

--HG--
extra : rebase_source : 314efe467a14428c57f90af2ecc0ec5c47a31993
2017-06-12 12:13:38 +08:00
Jan de Mooij bf6aed7a06 Bug 1370608 part 3 - Use JS_NewEnumerateStandardClasses outside js/src. r=bz 2017-06-14 10:39:11 +02:00
Boris Zbarsky 2f1f31e6d0 Bug 1370640. Get rid of ProtoAndIfaceCache::EntrySlotIfExists. r=peterv 2017-06-07 12:56:27 -04:00
Boris Zbarsky 40b47041ab Bug 1370614. Replace some uses of ProtoAndIfaceCache::EntrySlotIfExists with a faster boolean-returning test function. r=froydnj 2017-06-07 12:56:27 -04:00
Jan de Mooij f480e9ecdf Bug 1237504 - Refactor proxy slot layout to allow proxies to have more than 2 slots. r=bz,jonco
The patch makes the following proxy changes:

* The number of slots in ProxyValueArray is now dynamic and depends on the number of reserved slots we get from the Class.
* "Extra slots" was renamed to "Reserved slots" to make this clearer.
* All proxy Classes now have 2 reserved slots, but it should be easy to change that for proxy Classes that need more than 2 slots.
* Proxies now store a pointer to these slots and this means GetReservedSlot and SetReservedSlot can be used on proxies as well. We no longer need GetReservedOrProxyPrivateSlot and SetReservedOrProxyPrivateSlot.

And some changes to make DOM Proxies work with this:

* We now store the C++ object in the first reserved slot (DOM_OBJECT_SLOT) instead of in the proxy's private slot. This is pretty nice because it matches what we do for non-proxy DOM objects.
* We now store the expando in the proxy's private slot so I removed GetDOMProxyExpandoSlot and changed the IC code to get the expando from the private slot instead.
2017-04-28 14:12:28 +02:00
Jon Coppeard eb3c9870bf Bug 1352430 - Add barrier to wrapper cache to clear dying objects that have not yet been finalized r=bz r=sfink
* * *
Code review followup

--HG--
extra : rebase_source : 10c1fd603c2dd1ac2ff5770ae9aec2e9131681ce
2017-04-26 11:18:39 +01:00
Jon Coppeard d7e0c83dcc Bug 1359001 - Make AutoAssertGCCallback a no-op in opt builds r=sfink 2017-04-25 10:56:34 +01:00
John Dai b32e4c240b Bug 1309147 - Part 3: Implement the support for CEReactions in Codegen. r=bz
MozReview-Commit-ID: F1mxKzlru9s

--HG--
extra : rebase_source : a5e52ef2f3168028dec2c3186e857941953ad517
extra : histedit_source : 2336479daf177cb7ca55ee517c8317852bed09ef
2017-03-08 17:11:48 +08:00
Ben Kelly 4ffa062ade Bug 1350398 Remove Workers.h include from BindingUtils.h now that ThrowDOMExceptionForNSResult no longer exists. rs=bz 2017-03-24 15:27:11 -04:00
Jon Coppeard 82cbd987a2 Bug 1338623 - Add a slower but more exact gray marking check for checking correctness r=sfink r=mccr8 2017-03-02 10:22:47 +00:00
Boris Zbarsky a449ccb8fa Bug 1333045. Update Location object properties to current spec. r=qdot
Specifically, three changes:

1) valueOf should be non-enumerable.
2) valueOf should be === to Object.prototype.valueOf.
3) There should be no toJSON.

The tests come directly from https://github.com/w3c/web-platform-tests/pull/4623
so not much need to review them.
2017-02-15 00:01:48 -05:00
Boris Zbarsky 90896220ac Bug 1330699 part 11. Add ConvertJSValueTo*String functions that just take a value and hand out a string, without extra complications. r=qdot 2017-02-15 00:01:37 -05:00
Boris Zbarsky 1471a0e8e3 Bug 1330699 part 10. Rename the MozMap C++ type to "record" and give it a template parameter for the key type. r=qdot
Also renames all the test functions to mention "Record" instead of "MozMap".

--HG--
rename : dom/bindings/MozMap.h => dom/bindings/Record.h
2017-02-15 00:01:35 -05:00
Boris Zbarsky 538d57c3f6 Bug 1330699 part 2. Change the MozMap API and data storage to more what we want record<> to look like. r=qdot,smaug 2017-02-15 00:00:00 -05:00
Andrea Marchesini 16bc4a8d06 Bug 1334564 - Deprecate URL.createObjectURL(mediastream), r=smaug, r=rjesup 2017-02-07 08:58:35 +01:00
Boris Zbarsky da79ef55fe Bug 1335368 part 8. Stop using IsCallerChrome in UnwrapArgImpl. r=bholley 2017-02-01 15:43:37 -05:00
Brian Hackett 8033ed29a8 Bug 1324002 - Mark atoms separately in each zone, r=jonco,mccr8,peterv.
--HG--
extra : rebase_source : 53cf4fa94f122a991c2adbd7bae3714de4391bb4
2017-01-30 06:31:47 -07:00
Boris Zbarsky 39d50c2647 Bug 1332713 part 4. Make Promise-returning getters return a rejected Promise on exception instead of throwing. r=qdot 2017-01-27 18:53:37 -05:00
Kris Maglione 729b7a2019 Bug 1273251: Part 3 - Allow CallbackObject to contain a null callable. r=peterv
MozReview-Commit-ID: FCXVHouhG3I

--HG--
extra : rebase_source : f3e9325559d40bcb4017ec2505f435275d4fea7f
2016-11-14 21:25:37 -08:00
Boris Zbarsky fbf9e7a22b Bug 1330536 part 3. Add a subclass of FastErrorResult that can be used only to throw OOM. r=smaug 2017-01-17 23:52:13 -05:00
Edgar Chen 881cbd80bd Bug 1274159 - Part 2-2: Support HTMLConstructor WebIDL extended attribute for custom elements; r=bz,wchen
MozReview-Commit-ID: 6egmavfTmFT
2016-11-17 23:31:50 +08:00
Sebastian Hengst 5e1b29b9c0 Backed out changeset f2a5fc3e8c4e (bug 1274159) 2016-12-14 13:27:22 +01:00
Edgar Chen da0139302c Bug 1274159 - Part 2-2: Support HTMLConstructor WebIDL extended attribute for custom elements; r=bz,wchen
MozReview-Commit-ID: 6egmavfTmFT

--HG--
extra : rebase_source : 07436a4b8dfc1960f0cc24b67b8cc5d1e2ffd5cd
2016-11-17 23:31:50 +08:00
Boris Zbarsky 679c9e41a6 Bug 1321835. Assert that the givenProto argument for binding wrap methods is in the right compartment. r=peterv 2016-12-08 16:41:45 -10:00
Tomislav Jurin 348bfffc19 Bug 1296189 - Replace NS_RUNTIMEABORT("some string literal message") with MOZ_CRASH(). r=froydnj 2016-12-02 13:46:53 -08:00
Boris Zbarsky 099ef6f007 Bug 1315135. Remove the RegExp (and some Date) special casing from our dictionary conversions and Web IDL overload resolution. r=peterv 2016-11-23 22:57:29 -05:00
Peter Van der Beken 3f830565b0 Bug 1287912. r=bz
--HG--
extra : rebase_source : 68af5c520e775f3c92cb99d192f73a3300c2a0cf
2016-11-23 16:58:59 -05:00
Boris Zbarsky 598f3f4180 Bug 1021289 part 4. Implement support for WebIDL deleters over Xrays. r=peterv 2016-11-04 12:41:26 -04:00
Jeff Walden bc403f8efa Bug 1306540 - FindEnumStringIndex should follow JSAPI interface conventions. r=bz
--HG--
extra : rebase_source : 68b64ef7dc44e52dfdf64c527ab78f8b7ab14d85
2016-09-30 13:11:41 -07:00
Boris Zbarsky 13514334ba Bug 946906 part 8. When getting a cacheable property off a DOM Xray, cache it on the Xray's expando object. r=bholley 2016-10-10 18:16:26 -04:00
Boris Zbarsky 8070de70a2 Bug 946906 part 5. Use the codegenned JSClass, if available, when creating Xray expando objects. r=bholley 2016-10-10 18:16:26 -04:00
Tooru Fujisawa 64346ea2e2 Bug 1289050 - Part 11: Use UTF8 variant of JS_ReportErrorNumberVA. r=jwalden 2016-08-14 20:39:30 +09:00
Boris Zbarsky 4d0f8a0705 Bug 1302858. Remove unnecessary JS_WrapValue from dom::MaybeWrapObjectValue. r=peterv 2016-09-20 13:25:05 +01:00
Jan de Mooij a53986bf29 Bug 1302448 part 1 - Rename CycleCollectedJSRuntime to CycleCollectedJSContext. r=mccr8
--HG--
rename : xpcom/base/CycleCollectedJSRuntime.cpp => xpcom/base/CycleCollectedJSContext.cpp
rename : xpcom/base/CycleCollectedJSRuntime.h => xpcom/base/CycleCollectedJSContext.h
extra : rebase_source : 075214b5057f151520926715b6154e99ae80a0b3
2016-09-14 15:47:32 +02:00
John Dai afa50be601 Bug 1294100 - Part 3: Modify Codegen to generate including FakeString's binding files and fix build errors. r=bz
--HG--
rename : dom/bindings/BindingUtils.h => dom/bindings/FakeString.h
2016-09-01 18:10:54 +08:00
Boris Zbarsky 10a9e4c620 Bug 1297717. Stop using an unforgeable holder for global objects with unforgeable properties, since it's just pure slowdown in that case. r=peterv 2016-09-02 17:55:38 -04:00
Jan de Mooij 0ad12515f4 Bug 1292892 part 1 - Stop using JSRuntime outside SpiderMonkey. r=bz,terrence,fitzgen,kanru 2016-08-11 14:39:22 +02:00
Boris Zbarsky d7821950f4 Bug 1278583 part 5. Switch DOM code from using hasInstance class hooks to using Symbol.hasInstance. r=peterv 2016-08-03 18:32:07 -07:00
Boris Zbarsky ba5962ed70 Bug 1278583 part 4. Rip out the now-unused construct hook holder bits in bindings. r=peterv 2016-08-03 18:32:06 -07:00
Boris Zbarsky ab204ba73e Bug 1278583 part 3. Make static stuff (static attributes, methods, constants) actually work on globals. r=peterv 2016-08-03 18:32:06 -07:00