Commit Graph

5274 Commits

Author SHA1 Message Date
Bill McCloskey
1613c2cbc9 Bug 1279086 - Allow multiple interrupt callbacks (r=dvander) 2016-08-19 14:40:52 -07:00
Wes Kocher
3a31be9c17 Backed out 2 changesets (bug 1279086) for failures in browser_menu_item_01.js a=backout
Backed out changeset 00bb53b58e96 (bug 1279086)
Backed out changeset cff59fe2b933 (bug 1279086)
2016-08-19 12:31:55 -07:00
Bill McCloskey
95c5d71549 Bug 1279086 - Allow multiple interrupt callbacks (r=dvander) 2016-08-19 09:59:39 -07:00
Wes Kocher
55897634c1 Backed out 3 changesets (bug 1288870) for hazards a=backout
Backed out changeset 83bbd356da97 (bug 1288870)
Backed out changeset 4f0ab1a0d8dd (bug 1288870)
Backed out changeset 8d71aba5c1e7 (bug 1288870)
2016-08-18 16:50:13 -07:00
Andrew McCreight
e5e0b12c27 Bug 1288870, part 3 - Remove the now-vestigial Mark code for XPCNativeInterface. r=billm
XPCNativeInterface::Mark(), Unmark() and IsMarked() don't do anything
any more, so anything that calls them can be deleted. This removes the
only use of XPCCallContext::CanGetInterface(), so delete that, too.

MozReview-Commit-ID: 4w3aPTVXNDI
2016-08-18 15:20:48 -07:00
Andrew McCreight
f8d14c904a Bug 1288870, part 2 - Make XPCNativeInterface refcounted. r=billm
There are four classes that call Root() on XPCNativeInterface, and
thus keep interfaces alive. Each of these gets converted to use a
RefPtr:

1. XPCCallContext. This could be on some kind of hot path, but the
FindMemberCall involves various string operations and hashtable
lookups, so adding a single AddRef shouldn't matter. One weirdness
here is that the context only roots the interface when |mState >=
HAVE_NAME|. With a RefPtr<>, this requires nulling out
mInterface. Fortunately, in most cases where it moves from rooting to
non-rooting, it already does this. The one case it does not is in
SystemIsBeingShutDown(), so my patch adds that.

2. XPCNativeSet. This holds an array of interfaces in a weird
placement new array at the end of the object. I wasn't sure how a
non-POD class would interact with the way the array is handled with
casting, so I manually AddRef and Release things put into or removed
from the array.

3. AutoMarkingNativeInterfacePtr simply becomes RefPtr<>. This is the
bulk of the patch, in terms of number of lines changed.

4. Similarly, the one AutoMarkingNativeInterfacePtrArrayPtr becomes
nsTArray<RefPtr<>>. This is the last use of the auto marking array
class, so I deleted it.

Here are some other notes on what the patch does:

- XPCNativeInterfaces are created with placement new. This requires a
special version of refcounting that calls DestroyInstance, defined in
the previous patch. The GetNewOrUsed methods used to explicitly call
DestroyInstance(), but with refcounting this is no longer needed.

- The Mark() etc. methods are gutted so they don't do anything and
mMarked is removed because it is no longer used. The methods will be
cleaned up in later patches in this bug.

- Interfaces are removed from mIID2NativeInterfaceMap in the dtor
instead of during sweeping, requiring an extra hash table lookup.

- All of the methods that can create a new interface (NewInstance,
GetISupports, GetNewOrUsed) now return an already_AddRefed<>, which
gives some static checking that we don't accidentally fail to hold
onto a newly created interface.

MozReview-Commit-ID: CrlH1ENAzvr
2016-08-18 15:20:48 -07:00
Tom Schuster
92024846c1 Bug 1114580 - Define getBuiltinClass on Xray. r=peterv 2016-08-18 10:59:36 +02:00
Chris Manchester
b0b84a1928 Bug 1240134 - Incorporate the interfaces.xpt from downloaded artifacts instead of building XPIDL during an artifact build. r=glandium
MozReview-Commit-ID: 8oEyS1xLOwV
2016-08-17 15:02:31 -07:00
Bob Clary
faa4e6f42c Bug 1295138 - remove expected assertion from test_chrometoSource.xul, r=nfroyd 2016-08-16 22:26:40 -07:00
Nicholas Nethercote
e0229c761e Bug 1295053 (part 5) - Remove an unnecessary use of NS_CALLBACK in ClassInfoData. r=froydnj.
--HG--
extra : rebase_source : 6b14b91e8cd4c056e40148064b396a55c6f451a3
2016-08-16 07:56:26 +10:00
Andrew McCreight
b42d29f1f8 Bug 1288817, part 3 - Stop calling XPCNativeScriptableInfo::Mark() from various places because it doesn't do anything. r=billm
MozReview-Commit-ID: IcjcFti2k7A
2016-08-16 14:29:51 -07:00
Andrew McCreight
323130b5ec Bug 1288817, part 2 - Remove marking methods from XPCNativeScriptableShared and XPCNativeScriptableFlags. r=billm
Nothing depends on the value of the mark bit now.

MozReview-Commit-ID: 9k06XdtR9KB
2016-08-16 14:29:51 -07:00
Andrew McCreight
821b59184e Bug 1288817, part 1 - Make XPCNativeScriptableShared refcounted. r=billm
This adds a heap allocation in
XPCNativeScriptableSharedMap::GetNewOrUsed() on the fast
path. Hopefully that code is not hot enough for it to matter. I could
work around this if needed, but it would be ugly.

mNativeScriptableSharedMap has a weak pointer to
XPCNativeScriptableShared. I moved this removal from
XPCJSRuntime::FinalizeCallback() to the dtor.

There are two types of scriptable: one is a dummy one created in
GetNewOrUsed() to do a lookup, and the other is a fully filled out
one. The dummy one is not added to the hashtable, and may have had its
name stolen if we created a new scriptable. The latter makes it so
that you crash if you try to look it up in the hashtable anyways, so
this patch only looks up fully filled out scriptables.

This patch also removes MOZ_COUNT_CTOR/DTOR because they are not
needed for refcounted classes.

Stop destroying mScriptableInfo in XPCWrappedNative's
SystemIsBeingShutDown(), because that will end up destroying
XPCNativeScriptableShared, while their js::ClassOps are still in use
by JS objects. This matches the existing behavior, which does not
sweep these ScriptableShared during shutdown. (This came up in opt
xpcshell tests.)

MozReview-Commit-ID: GeG0pAYqXpR
2016-08-16 14:29:51 -07:00
Jon Coppeard
17304689a2 Bug 1291292 - Use dynamic chunk allocation for the nursery r=terrence 2016-08-11 17:14:56 +01:00
Jan de Mooij
c33bac8363 Bug 1292892 part 5 - Replace most nsContentUtils::RootingCx calls with dom::RootingCx. r=bz,terrence 2016-08-11 14:39:23 +02:00
Jan de Mooij
4ec9b6fc7e Bug 1292892 part 4 - Pass RootingContext to ModuleEntry. r=bz 2016-08-11 14:39:22 +02:00
Jan de Mooij
da9820d563 Bug 1292892 part 3 - Pass RootingContext to ScriptErrorEvent, DispatchScriptErrorEvent. r=bz 2016-08-11 14:39:22 +02: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
Jon Coppeard
5e361d2da5 Bug 1293262 - Refactor pretenuring after minor GC and add telemetry r=terrence 2016-08-11 10:41:06 +01:00
Nicholas Nethercote
4d2f91d5f5 Bug 1293117 (part 6) - Fix a comment and return type in XPCComponents.cpp. r=froydnj.
The comment is wrong. NS_METHOD is the appropriate thing to use here.

--HG--
extra : rebase_source : 68ada96c01f7941d5266298356ba5f493bcda67c
2016-08-09 14:03:12 +10:00
Wes Kocher
565cdb97f5 Backed out changeset 3fbb8651a171 (bug 1121938) for breaking encrypted-media-syntax.html CLOSED TREE 2016-08-10 13:17:39 -07:00
André Bargull
878648c8cf Bug 1121938 - Implement TypedArray.prototype.toString and .toLocaleString. r=waldo, r=froydnj 2016-07-29 09:04:06 -07:00
Shih-Chiang Chien
a8326d97ea Bug 1288600 - reject promise with NotFoundError while no device, and NotAllowedError while canceled by user. r=smaug.
MozReview-Commit-ID: ArQHhdIpQjg
2016-08-09 09:58:14 +08:00
Carsten "Tomcat" Book
553a2da922 merge mozilla-inbound to mozilla-central a=merge 2016-08-10 15:54:26 +02:00
Nicholas Nethercote
e7f10a07fd Bug 1293603 (part 2) - Make Run() declarations consistent. r=erahm.
This patch makes most Run() declarations in subclasses of nsIRunnable have the
same form: |NS_IMETHOD Run() override|.

As a result of these changes, I had to add |override| to a couple of other
functions to satisfy clang's -Winconsistent-missing-override warning.

--HG--
extra : rebase_source : 815d0018b0b13329bb5698c410f500dddcc3ee12
2016-08-08 12:18:10 +10:00
Andrew McCreight
b22f612021 Bug 1289137 - Make XPCNativeSet::NewInstance() take an nsTArray argument. r=billm
I could clean up ArrayAutoMarkingPtr more, but it is going to be
removed entirely in bug 1288870.

MozReview-Commit-ID: Jyjc2ZfvF3i

--HG--
extra : rebase_source : d7954ab821722b26fe5fc4f5ddc319dd824c6879
2016-07-27 16:36:48 -07:00
Andrew McCreight
d2be3b7515 Bug 1292289, part 1 - Stop unnecessarily using xpcprivate in XPCWrapper.h. r=mrbkap
This file is included in caps/, but it only uses generic JS things,
aside from a macro.

AccessCheck.cpp was bootlegging xpcprivate.h.

MozReview-Commit-ID: C6fGOFxsTvg

--HG--
extra : rebase_source : bd5e7bf9010acf83ccab8ce6cce77a557ad76196
2016-08-04 11:14:35 -07:00
Alexandre Lissy
0af5b943b6 Bug 1284674 - Remove NUWA r=cyu
MozReview-Commit-ID: GyMRNzOBKw6

--HG--
extra : rebase_source : 293af1cd55f2035ce6a99f4ebf144059c32a2b8f
2016-08-02 14:54:00 +02:00
Tooru Fujisawa
f9e30f8e42 Bug 1284099 - Part 2: Assert nsIScriptError.*Flags constants match to JSREPORT_*. r=baku 2016-08-03 18:09:42 +09:00
Tom Schuster
c955774058 Bug 1251364 - Remove our custom printf implementation (jsprf.cpp). r=tromey 2016-08-02 22:16:15 +02:00
Boris Zbarsky
7ad35e1f86 Bug 1289428. Make sure JSCompartment::wrap never returns a gray object, except when it returns "existing". r=bholley,jonco
The basic idea is that we assume the invariant that the "obj" argument is never
gray if "existing" is null (and add asserts to that effect).  Starting from that
assumption, terrence and I audited all the return paths to ensure that gray
objects are never returned.  We found a few places, generally after crossing
compartments with UncheckedUnwrap, where we could have gray things and inserted
corresponding calls to ExposeObjectToActiveJS.

If "existing" is passed in, all bets are off: both "obj" and "existing" can be
gray and can get returned from here.  But the only caller that passes "existing"
doesn't allow the return value to escape, so it's actually safe to do this.
2016-08-02 11:10:58 -07:00
Boris Zbarsky
599897e926 Bug 1291142. Ensure that we don't return gray objects when getting child windows by name or index. r=bholley 2016-08-02 11:06:25 -07:00
Carsten "Tomcat" Book
bd81ddd0b0 merge mozilla-inbound to mozilla-central a=merge 2016-08-02 17:09:31 +02:00
Andrew McCreight
800e8e167f Bug 1290612 - XPCNativeSet::NewInstanceMutate() is always called with a non-null first argument. r=mrbkap
MozReview-Commit-ID: FQGL7pe02xY

--HG--
extra : rebase_source : ec4cb70c54cb0c9775612f68a676fbfcd5f60793
2016-07-29 10:50:12 -07:00
Andrew McCreight
526180e419 Bug 1290587, part 6 - Remove unused method NativeSetMap::Add. r=mrbkap
Also convert some NS_PRECONDITION in NativeSetMap.

MozReview-Commit-ID: IU9C5oXKvGK

--HG--
extra : rebase_source : 5fc36e95667d42a1c0cdfb9bbbf99a7ea008bf34
2016-07-29 10:47:52 -07:00
Andrew McCreight
719e8d80ff Bug 1290587, part 5 - Add helper function to hash pointers in HashNativeKey. r=mrbkap
Also, use NS_PTR_TO_UINT32 instead of NS_PTR_TO_INT32 because it is not
undefined.

Get rid of the optimization of 0 ^ x which required a comment.

MozReview-Commit-ID: HPz5VgRnLN1

--HG--
extra : rebase_source : a4602964ff739c4e37aaa5883e6ed667bff1a963
2016-07-29 10:46:54 -07:00
Andrew McCreight
9e43b3ee66 Bug 1290587, part 4 - Lower case Current in XPCNativeSetKey::Hash(). r=mrbkap
MozReview-Commit-ID: 809S9fDCCLj

--HG--
extra : rebase_source : d3885bb9ccb7778c9375bc2abd8f16d24b594ae8
2016-07-29 10:42:26 -07:00
Andrew McCreight
67ecabec0e Bug 1290587, part 3 - Inline accessors in XPCNativeSetKey::Hash(). r=mrbkap
MozReview-Commit-ID: DVp7uNo3Myn

--HG--
extra : rebase_source : 70e64e7401617d57e378707cd6f20f618d9d7635
2016-07-31 11:36:18 -07:00
Andrew McCreight
09b6a5dd3c Bug 1290587, part 2 - Make XPCNativeSetKey hashing a method. r=mrbkap
MozReview-Commit-ID: 67XbmFN4ThW

--HG--
extra : rebase_source : 812ff5e6926e49821e1949bec54fd554efc40f50
2016-07-29 10:42:05 -07:00
Andrew McCreight
5accbb517d Bug 1290587, part 1 - Fix style for XPCNativeSetKey. r=mrbkap
MozReview-Commit-ID: 4bsItyOAbpN

--HG--
extra : rebase_source : bf3f237038b9c376283127425da542a33c34d83c
2016-07-29 10:35:49 -07:00
Carsten "Tomcat" Book
fc8e03f0d8 Merge mozilla-central to autoland 2016-07-30 16:49:41 +02:00
Botond Ballo
36779c6cc3 Bug 1289608 - Define XrayWrapper<...>::singleton for all instantiations, instead of defining specializations for specific ones. r=bholley
MozReview-Commit-ID: GecaSstpxRQ

--HG--
extra : rebase_source : 30e95b590a18dee92a588d2cb4e8b44808bbe11a
2016-07-29 16:40:08 -04:00
Botond Ballo
34d65c1f90 Bug 1289608 - Provide explicit instantiation declarations for the various instantiations of XrapWrapper. r=bholley
MozReview-Commit-ID: 6rS9JJ1Ba9R

--HG--
extra : rebase_source : 29a69c5b0068bc2e948e007d656ef7b7d4efb13d
2016-07-29 16:39:14 -04:00
Andrew McCreight
82ac383602 Bug 1289457 - Take advantage of infallible new in XPCNativeSet::NewInstance{,Mutate} to skip checks. r=mrbkap
MozReview-Commit-ID: H4TEMzzT6iK
2016-07-29 16:08:06 -07:00
Andrew McCreight
28ba46abc8 Bug 1289252 - gDEBUG_LiveProtoCount does not need to be modified atomically. r=mrbkap
--HG--
extra : rebase_source : 4ed3e3d93f85d964d438d8281c21364315204ec9
2016-07-27 08:50:00 -04:00
Andrew McCreight
3e7a8efdae Bug 1289550 - Remove "fun little hack" from XPCNativeSetKey. r=bz
XPCNativeSetKey has a huge comment about this weird hack it does,
where it tags the first 16 bytes with a magic value. The purpose of
this seem to be that PLDHashtable used to require that the Match()
operation handle both the desired "key" type and the actual entry type
(NativeSetMap::Entry in this case), with the latter needed for
resizing. However, that duality in the match operation has not been
needed since bug 374906, which landed in 2007, so this class can be
greatly simplified.

IsAKey() can be replaced with true, which simplifies some hash
operations.
2016-07-27 10:11:40 -07:00
Andrew McCreight
e806f57820 Bug 1289136 - Fifth argument to XPCConvert::NativeInterface2JSObject() is always null. r=gabor 2016-07-27 10:11:40 -07:00
Matthew Wein
33de9c036e Bug 1285063 - Part 1: Add a helper to XPCOMUtils to iterate over entries in a category. r=kmag
MozReview-Commit-ID: 3mjrPrRuLej

--HG--
extra : rebase_source : 7b7dad1a4bab958a590c24d97f564e34b3355633
2016-07-11 17:33:06 -07:00
Boris Zbarsky
5b840d9b96 Bug 1288791 part 2. Rename WrapNativeParent to FindAssociatedGlobal and update it to actually do that. r=bkelly 2016-07-27 11:05:36 -04:00
Jon Coppeard
e110894730 Bug 1259347 - Add telemetry for nursery size r=terrence 2016-08-01 09:55:06 +01:00