Commit Graph

732 Commits

Author SHA1 Message Date
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Simon Giesecke
a9046592c2 Bug 1648440 - Cleanup/simplify some loops in RuntimeService. r=dom-workers-and-storage-reviewers,asuth
Replace BROADCAST_ALL_WORKERS macro by a BroadcastAllWorkers member function.

Use RemoveIf instead of custom for loop.

Use range-based for where possible.

Use std::transform to transform an array into another instead of custom for loop.

Use std::copy_if for conditional copy of an array into another instead of custom for loop.

Differential Revision: https://phabricator.services.mozilla.com/D81056
2020-06-26 14:51:55 +00:00
Logan Smyth
2746f14953 Bug 1601179 - Enable async stacks but limit captured async stacks to debuggees. r=jorendorff,smaug
The 'asyncStack' flag on JS execution contexts is used as a general switch
to enable async stack capture across all locations in SpiderMonkey, but
this causes problems because it can at times be too much of a performance
burden to general and track all of these stacks.

Since the introduction of this option, we have only enabled it on Nightly
and DevEdition for non-mobile builds, which has left a lot of users unable
to take advantage of this data while debugging.

This patch enables async stack traces across all of Firefox, but introduces
a new pref to toggle the scope of the actual expensive part of async stacks,
which is _capturing_ them and keeping them alive in memory. The new pref
limits the capturing of async stack traces to only debuggees, unless an
explicit pref is flipped to capture async traces for all cases.

This means that while async stacks are technically enabled, and code could
manually capture a stack and pass it back to SpiderMonkey and see that stack
reflected in later captured stacks, SpiderMonkey itself and related async
DOM APIs, among others, will not capture stacks or pass them to SpiderMonkey,
so there should be no general change in performance by enabling the broader
feature itself, unless the user is actively debugging the page.

One effect of this patch is that if you have the debugger open and then close
it, objects that have async stacks associated with them will retain those
stacks and they will continue to show up in stack traces, no _new_ stacks
will be captured. jorendorff and I have decided that this is okay because
the expectation that the debugger fully revert every possible effect that it
could have on a page is a nice goal but not a strict requirement.

Differential Revision: https://phabricator.services.mozilla.com/D68503
2020-06-14 02:41:45 +00:00
Noemi Erli
998c92cee6 Backed out changeset 550164313c4f (bug 1601179) for causing failures in test_async CLOSED TREE 2020-06-12 08:16:14 +03:00
Logan Smyth
578d25ba11 Bug 1601179 - Enable async stacks but limit captured async stacks to debuggees. r=jorendorff,smaug
The 'asyncStack' flag on JS execution contexts is used as a general switch
to enable async stack capture across all locations in SpiderMonkey, but
this causes problems because it can at times be too much of a performance
burden to general and track all of these stacks.

Since the introduction of this option, we have only enabled it on Nightly
and DevEdition for non-mobile builds, which has left a lot of users unable
to take advantage of this data while debugging.

This patch enables async stack traces across all of Firefox, but introduces
a new pref to toggle the scope of the actual expensive part of async stacks,
which is _capturing_ them and keeping them alive in memory. The new pref
limits the capturing of async stack traces to only debuggees, unless an
explicit pref is flipped to capture async traces for all cases.

This means that while async stacks are technically enabled, and code could
manually capture a stack and pass it back to SpiderMonkey and see that stack
reflected in later captured stacks, SpiderMonkey itself and related async
DOM APIs, among others, will not capture stacks or pass them to SpiderMonkey,
so there should be no general change in performance by enabling the broader
feature itself, unless the user is actively debugging the page.

One affect of this patch is that if you have the debugger open and then close
it, objects that have async stacks associated with them will retain those
stacks and they will continue to show up in stack traces, no _new_ stacks
will be captured. jorendorff and I have decided that this is okay because
the expectation that the debugger fully revert every possible effect that it
could have on a page is a nice goal but not a strict requirement.

Differential Revision: https://phabricator.services.mozilla.com/D68503
2020-06-11 21:24:16 +00:00
Simon Giesecke
00eddcee05 Bug 1642949 - Replace uses of RemoveElementAt by RemoveLastElement/PopLastElement where possible. r=necko-reviewers,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D78027
2020-06-10 10:46:14 +00:00
Butkovits Atila
7f9b16b938 Backed out 3 changesets (bug 1643289, bug 1642949) for causing failure at test_headless_screenshot.html. CLOSED TREE
Backed out changeset 98c420f73380 (bug 1643289)
Backed out changeset 9447ea8910aa (bug 1643289)
Backed out changeset 0c827da9d847 (bug 1642949)
2020-06-10 10:07:23 +03:00
Simon Giesecke
1c59dae9e4 Bug 1642949 - Replace uses of RemoveElementAt by RemoveLastElement/PopLastElement where possible. r=necko-reviewers,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D78027
2020-06-10 05:49:28 +00:00
Alexis Beingessner
48fa189124 Bug 1642344 - Remove unused field from JSSettings and flatten away a struct. r=baku
Differential Revision: https://phabricator.services.mozilla.com/D77847
2020-06-09 15:05:46 +00:00
Jon Coppeard
5c542a439c Bug 1642974 - Don't expose WeakRef targets which are DOM wrappers whose target has been collected r=smaug,sfink
WeakRef targets that are wrappers to DOM objects are preserved when the WeakRef is created.  This checks whether the wrapper is still preserved in deref() and if it is found to have been released, the target is cleared.

The patch adds a new DOMJSClass hook to deal with getting the wrapper cache for non-nsISupports objects.

Differential Revision: https://phabricator.services.mozilla.com/D78061
2020-06-06 06:58:42 +00:00
Andrea Marchesini
bd6a9308f6 Bug 1639833 - IntrisincStoragePrincipal should always be partitioned - part 3 - Cleanup storage access methods, r=dimi
Differential Revision: https://phabricator.services.mozilla.com/D76916
2020-06-03 06:10:58 +00:00
Yaron Tausky
f9ed28325d Bug 1641812 - Apply pointer guidelines to RuntimeService.cpp r=sg,dom-workers-and-storage-reviewers,asuth
Differential Revision: https://phabricator.services.mozilla.com/D77431
2020-06-02 08:53:52 +00:00
Csoregi Natalia
ed3350ab9b Backed out 5 changesets (bug 1639833) for failures on browser_blockingIndexedDbInWorkers.js. CLOSED TREE
Backed out changeset 6b4f76d65540 (bug 1639833)
Backed out changeset c77acba1aacb (bug 1639833)
Backed out changeset 30c97666919e (bug 1639833)
Backed out changeset d769b313441a (bug 1639833)
Backed out changeset ed41b41d1b03 (bug 1639833)
2020-06-02 15:02:31 +03:00
Andrea Marchesini
94eab0e791 Bug 1639833 - IntrisincStoragePrincipal should always be partitioned - part 3 - Cleanup storage access methods, r=dimi
Differential Revision: https://phabricator.services.mozilla.com/D76916
2020-06-02 08:29:15 +00:00
Noemi Erli
2b060384fc Backed out 5 changesets (bug 1639833) for causing sessionstorage related failures CLOSED TREE
Backed out changeset b36af8d9db34 (bug 1639833)
Backed out changeset 712c11904dbe (bug 1639833)
Backed out changeset 14f1e4783582 (bug 1639833)
Backed out changeset b7f14c4cfe5d (bug 1639833)
Backed out changeset b4b25034dd83 (bug 1639833)
2020-06-01 19:31:50 +03:00
Andrea Marchesini
28760b5629 Bug 1639833 - IntrisincStoragePrincipal should always be partitioned - part 3 - Cleanup storage access methods, r=dimi
Differential Revision: https://phabricator.services.mozilla.com/D76916
2020-06-01 11:07:36 +00:00
Yaron Tausky
f8e84898e9 Bug 1638170 - Don't dispatch buggy WorkerRunnables r=asuth,dom-workers-and-storage-reviewers,sg
This patch removes the dispatch of ReportGenericErrorRunnables when
a worker fails to start, since they were causing crashes and
weren't getting run anyway. It also adds an assertion that prevents
the creation of strong references to workers before they begin
their main loop.

Differential Revision: https://phabricator.services.mozilla.com/D76693
2020-05-26 11:38:58 +00:00
Andrew Sutherland
cc1eab0351 Bug 1634259 - Improve worker shutdown edge case handling. r=perry
Bug 1594572 attempted to fix a shutdown edge-case where a worker that was
started late enough would fail to create a PBackground connection and
early return.  This early return, however, left the worker never scheduled
for deletion, resulting in a shutdown hang.  See my restating block at
https://phabricator.services.mozilla.com/D73134#2224963 for more context.

The problem with this was that the attempt to clear the main event queue
ran afoul of pre/post event-processing hooks intended to ensure that control
runnables are processed if some non-worker code goes and spins a nested
event loop on the worker thread.  But because we never got around to
creating a cycle collected JS runtime on the thread, the call to get it
would return null and when we tried to get the recursion depth of a null
pointer, we would crash a little.

This patch addresses the immediate regression by adding a helper that returns
a depth of 1 in this edge-case.  It also fixes another problem with the fix
that is now more obvious having reviewed bug 1636147... we were failing to
mark the status of the worker as dead and drain any control runnables, which
could have resulted in the CrashIfHangingRunnable usage not working out right.
(Note that CrashIfHangingRunnable does handle Cancel() correctly, so the
fact that we end up canceling the runnable shouldn't break things.)

Differential Revision: https://phabricator.services.mozilla.com/D75185
2020-05-14 07:44:44 +00:00
Yaron Tausky
d82175ea26 Bug 1636147 - Don't report dead workers as active r=dom-workers-and-storage-reviewers,sg,asuth
`RuntimeService::CrashIfHanging` uses `RuntimeService`'s registry
to determine which workers are still active. This approach is
flawed because the registry is updated on the main thread, so if
the main thread is stuck somewhere, dead workers could be reported
as active.
This commit adds an additional check: if dispatching a `Runnable`
to a worker fails, it assumes that the worker is dead. This way
main thread hangs would not be reported as worker hangs.

Differential Revision: https://phabricator.services.mozilla.com/D74256
2020-05-13 17:48:19 +00:00
Simon Giesecke
c5b14c1fe0 Bug 1626570 - Improve handling of copying arrays in dom/workers/. r=dom-workers-and-storage-reviewers,ytausky
Differential Revision: https://phabricator.services.mozilla.com/D73668
2020-05-11 08:22:17 +00:00
Logan Smyth
6f14e864e4 Bug 1628853 - Expose a feature flag to enable/disable //# sourceXX= parsing. r=arai
These pragmas can be used to influence stack trace filenames, and to affect
how and where files show up in developer tools. In some circumstances, it can
be nice to disable allof that functionality in order to ensure that you get
the stack trace and debug information as SpiderMonkey sees it.

Differential Revision: https://phabricator.services.mozilla.com/D72103
2020-05-08 00:37:21 +00:00
Lars T Hansen
19e35e81ba Bug 1478632 - wasm simd, part 1: feature gating and related prep. r=rhunt
We add a configuration option for SIMD and apply ENABLE_WASM_SIMD
throughout the engine as appropriate, mostly to insert #error or
MOZ_CRASH where things need to be done in later patches or for
architectures that we won't currently consider.

We add a command line switch for the shell and an option for
about:config and plumb the value of this through the engine.

Differential Revision: https://phabricator.services.mozilla.com/D57940
2020-05-05 08:17:47 +00:00
Benjamin Bouvier
d24dcb9044 Bug 1618595: Disable Cranelift on aarch64 when reftypes are enabled; r=lth,perftest-reviewers,sparky
This requires adding a new JSOptions field (for internal use within the shell),
as well as a new browser pref (to support possible Cranelift benchmarking on
aarch64).

Differential Revision: https://phabricator.services.mozilla.com/D72907
2020-04-30 11:55:13 +00:00
Cameron McCormack
c31982b631 Bug 1582293 - Part 4: Initialize worker prefs correctly. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D70593
2020-04-30 09:18:34 +00:00
Cameron McCormack
629b3f5daa Bug 1582293 - Part 3: Support zero values for worker GC prefs. r=asuth
And while we're touching JSSettings, make it use an nsTArray to store
the JS GC settings intead of a C array.

Differential Revision: https://phabricator.services.mozilla.com/D70592
2020-04-30 09:18:27 +00:00
Cameron McCormack
f22d153087 Bug 1582293 - Part 2: Fix interpretation of boolean worker GC prefs. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D70591
2020-04-30 09:18:25 +00:00
Cameron McCormack
0549a88764 Bug 1582293 - Part 1: Fix pref observation code formatting. r=asuth
Differential Revision: https://phabricator.services.mozilla.com/D70590
2020-04-30 09:18:23 +00:00
Jon Coppeard
b377be5cd1 Bug 1633457 - Rename some GC parameters for clarity r=sfink
Differential Revision: https://phabricator.services.mozilla.com/D73012
2020-04-29 21:54:22 +00:00
Kris Maglione
c1116675db Bug 1594572: Schedule worker deletion when primary runnable fails. r=asuth
If we try to start a worker too close to shutdown, the main runnable for its
thread runs after shutdown has begun, bails out early trying to create a
BackgroundChild for its thread. Unlike bail-outs in WorkerPrivate::DoRunLoop,
though, nothing winds up scheduling the deletion of the worker after it
returns, and afterwards the worker is stuck forever in a pending state.
Attempts to shut it down from the main thread just dispatch an impotent
notification to be processed by the workers main event loop (which, of course,
will not ever happen).

This patch fixes the behavior of WorkerThreadPrimaryRunnable to always call
ScheduleDeletion when it exits, rather than only doing so when it succeeds
in entering the worker's main loop.

Differential Revision: https://phabricator.services.mozilla.com/D73134
2020-04-30 03:52:56 +00:00
Jon Coppeard
c3b204df69 Bug 1633405 - Remove dynamic GC options that are enabled everywhere r=sfink
Differential Revision: https://phabricator.services.mozilla.com/D72696
2020-04-28 07:59:47 +00:00
Noemi Erli
1eaee04fd4 Backed out changeset 1fc50aa5c6bc (bug 1633405) for causing bustages in bigint.js CLOSED TREE 2020-04-28 13:49:51 +03:00
Jon Coppeard
73bca2cede Bug 1633405 - Remove dynamic GC options that are enabled everywhere r=sfink
Differential Revision: https://phabricator.services.mozilla.com/D72696
2020-04-28 07:59:47 +00:00
Jean-Yves Avenard
969a5bbc94 Bug 1630802 - P4. Remove unused member. r=bholley
It lead the AbstractThread's assumption that there can only be one active per thread be invalid.

Differential Revision: https://phabricator.services.mozilla.com/D71441
2020-04-21 03:08:55 +00:00
Andrea Marchesini
1fb5fc06bf Bug 1625568 - Add compatibility heuristics to third-party cookie blocking - part 2 - enable storageAccess API and heuristics, r=dimi,timhuang
Differential Revision: https://phabricator.services.mozilla.com/D69047
2020-04-02 15:30:57 +00:00
Lars T Hansen
7a943fdd6a Bug 1620986 - Workers should read multi-value pref. r=bbouvier
Differential Revision: https://phabricator.services.mozilla.com/D68353
2020-03-26 11:47:59 +00:00
Perry Jiang
c9d5444ffb Bug 1615014 - ensure performance storage/counter is set before being read r=dom-workers-and-storage-reviewers,asuth
WorkerThreadPrimaryRunnable possibly indirectly creates a
SendInitBackgroundRunnable (runs on the main thread), which causes a data race
with CompileScriptRunnable (runs on the worker thread) by having an
unsynchronized read/write of WorkerPrivate::mPerformanceCounter.

Differential Revision: https://phabricator.services.mozilla.com/D67434
2020-03-26 03:22:42 +00:00
Simon Giesecke
5431b0ef4b Bug 1620632 - Ensure nsTArray_Impl only declares a copy-constructor/assignment operator if E is copy-constructible. r=froydnj
To correctly implement this, it must be known on instantiation whether E is
copy-constructible, which is not the case if only a forward declaration is
available. This can be resolved either by making sure a full definition of E is
available, which is preferable. But in cases where this is not (easily) possible,
the information can be explicitly provided by the MOZ_DECLARE_COPY_CONSTRUCTIBLE
and MOZ_DECLARE_NON_COPY_CONSTRUCTIBLE macros. In particular, declarations for
IPDL-declared types are added to nsTArray.h itself, like it was already done
for MOZ_DECLARE_RELOCATE_USING_MOVE_CONSTRUCTOR.

Differential Revision: https://phabricator.services.mozilla.com/D66244
2020-03-20 17:13:51 +00:00
Tom Schuster
cc8787dc4a Bug 1275508 - Remove JavaScript werror from browser. r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D66255
2020-03-11 12:20:21 +00:00
Tom Schuster
90b3d0e361 Bug 1619177 - Remove remaining extra warnings code. r=tcampbell,mccr8
Differential Revision: https://phabricator.services.mozilla.com/D65830
2020-03-10 22:59:41 +00:00
Ehsan Akhgari
ad14267240 Bug 1620322 - Part 8: Rename AntiTrackingCommon to ContentBlocking; r=baku
Differential Revision: https://phabricator.services.mozilla.com/D65821
2020-03-09 23:36:39 +00:00
Narcis Beleuzu
422807b8e0 Backed out 8 changesets (bug 1620322) for bustages on nsContentSink.cpp . CLOSED TREE
Backed out changeset f41739c64dff (bug 1620322)
Backed out changeset be942a7f329e (bug 1620322)
Backed out changeset a916987c7c71 (bug 1620322)
Backed out changeset ead3484ffb5f (bug 1620322)
Backed out changeset 4e1e8b9afa1a (bug 1620322)
Backed out changeset 473bba698e5a (bug 1620322)
Backed out changeset 0e5e5d41597d (bug 1620322)
Backed out changeset 31b24d79db3d (bug 1620322)
2020-03-09 22:18:36 +02:00
Ehsan Akhgari
d7d656e700 Bug 1620322 - Part 8: Rename AntiTrackingCommon to ContentBlocking; r=baku
Differential Revision: https://phabricator.services.mozilla.com/D65821
2020-03-09 18:12:40 +00:00
Noemi Erli
f3729f347c Backed out 8 changesets (bug 1620322) for causing bustages in ContentBlockingLog.cpp CLOSED TREE
Backed out changeset 3dcf513e36cb (bug 1620322)
Backed out changeset 46714855ce1d (bug 1620322)
Backed out changeset 0eb2b5f7322f (bug 1620322)
Backed out changeset 72d640fa0740 (bug 1620322)
Backed out changeset 4533bb4e5177 (bug 1620322)
Backed out changeset 659270edd419 (bug 1620322)
Backed out changeset 6802c18b1914 (bug 1620322)
Backed out changeset 60ff34db9f15 (bug 1620322)
2020-03-09 19:19:41 +02:00
Ehsan Akhgari
eaebe39024 Bug 1620322 - Part 8: Rename AntiTrackingCommon to ContentBlocking; r=baku
Differential Revision: https://phabricator.services.mozilla.com/D65821
2020-03-09 10:23:07 +00:00
Tim Huang
37f162c69d Bug 1616570 - Part 1: Rename CookieSettings to CookieJarSettings. r=Ehsan
Given that we are going to add ContentBlockingAllowList in
CookieSettings, so CookieSettings will be responsible for more stuff than the
cookie behavior and cookie permission. We should use a proper name to
reflect the purpose of it. The name 'CookieSettings' is misleading that
this is only for cookie related stuff. So, we decide to rename
'CookieSettins' to 'CookieJarSettings' which serves better meaning here.

Differential Revision: https://phabricator.services.mozilla.com/D63935
2020-03-04 08:59:08 +00:00
Andrew McCreight
611f5029e6 Bug 1609815 - Remove Web Replay C++ implementation. r=jgilbert,jandem,gbrown
Patch by bhackett and jlaster. Also reviewed by mccr8.

Differential Revision: https://phabricator.services.mozilla.com/D60197
2020-02-27 17:39:15 +00:00
Ciure Andrei
c06273c350 Backed out changeset d407a28318e6 (bug 1609815) for causing windows ming bustages CLOSED TREE 2020-02-27 07:05:19 +02:00
Andrew McCreight
179c12c3e5 Bug 1609815 - Remove Web Replay C++ implementation. r=jgilbert,jandem,gbrown
Patch by bhackett and jlaster. Also reviewed by mccr8.

Differential Revision: https://phabricator.services.mozilla.com/D60197
2020-02-27 04:43:48 +00:00
Tom Schuster
9dcba5783c Bug 1615405 - eval(nonString) should not have observable side effects. r=tcampbell,baku
After this change we can restrict contentSecurityPolicyAllows callbacks to just strings, because everything
else is excluded before calling that callback.

Differential Revision: https://phabricator.services.mozilla.com/D62794
2020-02-14 15:05:27 +00:00
Bogdan Tara
fedc1ed701 Backed out changeset bc387540075d (bug 1615405) on evilpie's request CLOSED TREE 2020-02-14 14:34:53 +02:00