Commit Graph

637 Commits

Author SHA1 Message Date
Kris Maglione
7cdbf75d48 Bug 1404198: Part 2i - Switch to NS_NewTimer* in dom. r=njn
MozReview-Commit-ID: 8Oei6TuXNbu
2017-10-15 23:15:40 -07:00
Luke Wagner
bda9877ba9 Bug 1347644 - Baldr: implement ConsumeStreamCallback in browser (r=bkelly)
MozReview-Commit-ID: DXv2MegefDw
2017-10-10 14:41:24 -05:00
Nicholas Nethercote
a35e82f193 Bug 1403868 (part 4) - Reduce tools/profiler/public/*.h to almost nothing in non-MOZ_GECKO_PROFILER builds. r=mstange.
Currently the Gecko Profiler defines a moderate amount of stuff when
MOZ_GECKO_PROFILER is undefined. It also #includes various headers, including
JS ones. This is making it difficult to separate Gecko's media stack for
inclusion in Servo.

This patch greatly simplifies how things are exposed. The starting point is:

- GeckoProfiler.h can be #included unconditionally;

- everything else from the profiler must be guarded by MOZ_GECKO_PROFILER.

In practice this introduces way too many #ifdefs, so the patch loosens it by
adding no-op macros for a number of the most common operations.

The net result is that #ifdefs and macros are used a bit more, but almost
nothing is exposed in non-MOZ_GECKO_PROFILER builds (including
ProfilerMarkerPayload.h and GeckoProfiler.h), and understanding what is exposed
is much simpler than before.

Note also that in BHR, ThreadStackHelper is now entirely absent in
non-MOZ_GECKO_PROFILER builds.
2017-10-04 09:11:18 +11:00
David Major
818b3fd94f Bug 1405735 - Make worker JS context options respect safe mode. r=billm 2017-10-06 12:50:50 -04:00
Nicholas Nethercote
e8236888ee Bug 1401813 - Rename Null[C]String() as Void[C]String(). r=erahm.
XPCOM's string API doesn't have the notion of a "null string". But it does have
the notion of a "void string" (or "voided string"), and that's what these
functions are returning. So the names should reflect that.
2017-09-22 14:35:46 +10:00
Blake Kaplan
2feaf02c41 Bug 1398396 - Initialize the locale stuff on runtimes instead of contexts. r=billm
MozReview-Commit-ID: Il9HAqYdTzK
2017-09-11 15:46:14 -07:00
Nicholas Nethercote
1e8cb8bfc1 Bug 1400081 - Don't use -1 to represent an unset JSGCParamKey. r=sfink.
Because UBSan complains about casting -1:

> runtime error: load of value 4294967295, which is not a valid value for type 'JSGCParamKey'
2017-09-15 10:50:33 +10:00
Lars T Hansen
1ff1b90966 Bug 1277562 - Part 16b: Implement javascript.options.wasm_ionjit. r=billm 2017-06-29 15:37:01 -07:00
Lars T Hansen
b376d932d0 Bug 1277562 - Part 5a: Change the meaning of the wasm-baseline switch. r=luke 2017-02-02 13:22:40 +01:00
Luke Wagner
629fb234bb Bug 1347644 - Simplify/rename JS::AsyncTask (r=till,bkelly,mccr8)
MozReview-Commit-ID: BahNzYPv0AO
2017-08-16 14:38:53 -05:00
Masatoshi Kimura
b821026da0 Bug 1390106 - Stop using versioned scripts in dom. r=mrbkap
MozReview-Commit-ID: 89KvCoTAg3I
2017-08-14 20:42:55 +09:00
Jan Varga
2efc566c2e Bug 1283609 - Part 2: Rename BackgroundChild::SynchronouslyCreateForCurrentThread to BackgroundChild::GetOrCreateForCurrentThread; r=billm 2017-08-03 11:21:53 +02:00
Nicholas Nethercote
a222153d9c Bug 1384835 (part 2, attempt 2) - Remove the Preferences::Get*String() variants that return nsAdoptingString. r=froydnj. 2017-07-31 14:23:50 +10:00
Till Schneidereit
908cba6dac Bug 1272697 - Part 2: Add runtime pref to enable streams. r=jonco,baku
MozReview-Commit-ID: FJMAxbtD3Uy
2017-07-29 16:47:12 +02:00
Sebastian Hengst
cc5f8a6fb8 Backed out changeset 5df4d8778602 (bug 1384835) 2017-07-28 10:29:29 +02:00
Nicholas Nethercote
a453476963 Bug 1384835 (part 2) - Remove the Preferences::Get*String() variants that return nsAdoptingString. r=froydnj.
Because we want to remove nsAdoptingString. We have other variants that don't
use nsAdoptingString, which can be used instead. There are three basic
patterns.

1. The easiest case is when we don't check for success.

> nsAdoptingString s = Preferences::GetString("foo");
> foo(s);

becomes:

> nsAutoString s;
> Preferences::GetString("foo", s);
> foo(s);

2. The next case is when we check if the result is empty.

> nsAdoptingString s = Preferences::GetString("foo");
> if (s.IsEmpty()) { ... }

becomes:

> nsAutoString s;
> Preferences::GetString("foo", s);
> if (s.IsEmpty()) { ... }

3. The final case is when we null check the result.

> nsAdoptingString s = Preferences::GetString("foo");
> if (s) { ... }

becomes:

> nsAutoString s;
> nsresult rv = Preferences::GetString("foo", s);
> if (NS_SUCCEEDED(rv)) { ... }

The patch also avoids some UTF8/UTF16 conversions in a few places.
2017-07-25 20:36:14 +10:00
Bill McCloskey
fd5fcf4db0 Bug 1377222 - Eliminate nsITimer::InitWithFuncCallback in favor of InitWithNamedFuncCallback (r=froydnj)
MozReview-Commit-ID: 9zN9aAd7daA
2017-07-03 16:19:56 -07:00
Bill McCloskey
ce42826bdf Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-26 14:19:58 -07:00
Carsten "Tomcat" Book
c7b7699387 merge mozilla-inbound to mozilla-central a=merge 2017-06-23 11:28:19 +02:00
Nicholas Nethercote
55c693e8f9 Bug 1375299 (part 1) - Reduce usage of MOZ_GECKO_PROFILER. r=mstange.
This patch reduces the differences between builds where the profiler is enabled
and those where the profiler is disabled. It does this by removing numerous
MOZ_GECKO_PROFILER checks.

These changes have the following consequences.

- Various functions and classes are now defined in all builds, and so can be
  used unconditionally: profiler_add_marker(), profiler_set_js_context(),
  profiler_clear_js_context(), profiler_get_pseudo_stack(), AutoProfilerLabel.
  (They are effectively no-ops in non-profiler builds, of course.)

- The no-op versions of PROFILER_* are now gone. The remaining versions are
  almost no-ops when the profiler isn't built.
2017-06-22 06:26:16 +10:00
Sylvestre Ledru
d75506c2f0 Bug 1375386 - Silence a -Wunused-lambda-capture warning r=froydnj
MozReview-Commit-ID: CoIXICb4nwY
2017-06-22 08:47:02 +02:00
Carsten "Tomcat" Book
238bf154d5 Backed out changeset 4f6302a98ae4 (bug 1372405) 2017-06-21 13:59:26 +02:00
Bill McCloskey
67e8af4720 Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-20 21:44:11 -07:00
Carsten "Tomcat" Book
bbe9441993 Backed out changeset 9846de3bd954 (bug 1372405) 2017-06-20 08:27:02 +02:00
Bill McCloskey
f69608368b Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-19 22:25:47 -07:00
Mats Palmgren
dd5298e9b8 Bug 1372317 part 2 - Replace LookupRemoveIf() calls with Lookup() + entry.Remove() where needed. r=froydnj
MozReview-Commit-ID: AoRNdbzh66c
2017-06-18 17:07:54 +02:00
Mats Palmgren
38e7a18492 Bug 1372356 part 2 - Use mWindowMap.LookupForAdd instead of Get+Put, and LookupRemoveIf instead of Get+Remove, to avoid unnecessary hashtable lookups. r=froydnj
MozReview-Commit-ID: 9L3GGGKDoJZ
2017-06-14 17:27:25 +02:00
Mats Palmgren
d32932443a Bug 1372356 - Use LookupForAdd instead of Get+Put to avoid unnecessary hashtable lookups. r=froydnj
MozReview-Commit-ID: 4jKIhueYx13
2017-06-14 17:27:25 +02:00
Bill McCloskey
284c3f3132 Bug 1365097 - Convert NS_GetCurrentThread uses in dom (except for dom/media) (r=smaug)
For the Quatum DOM project, it's better to work in terms of event targets than
threads. This patch converts DOM code to operate on event targets rather than
threads, when possible.

MozReview-Commit-ID: 5FgvpKadUA2
2017-06-12 20:20:08 -07:00
Andrea Marchesini
421fbb7b50 Bug 1364297 - Use nsString instead nsCString for Worker names, r=smaug 2017-05-17 16:49:34 +02:00
kedziorski.lukasz@gmail.com
af7965b07d Bug 1359436 - Add leak checking to CycleCollectedJSContext and related classes. r=mccr8 2017-05-09 13:59:00 +02:00
Chris Peterson
21b4ff5aa9 Bug 1360039 - Spoof navigator.hardwareConcurrency = 2 when privacy.resistFingerprinting = true. r=qdot
Trackers use navigator.hardwareConcurrency as yet another source of entropy to fingerprint users. The Firefox Hardware Report says 70% of Firefox users have exactly 2 cores. When the privacy.resistFingerprinting pref is set, we want to blend into the crowd so spoof navigator.hardwareConcurrency = 2 to reduce user uniqueness. This pref was added in bug 1345322 for the Tor uplift project.

https://metrics.mozilla.com/firefox-hardware-report/#goto-cpu-and-memory

MozReview-Commit-ID: CDWAaxjRpqe
2017-05-02 14:03:08 -07:00
Bill McCloskey
35b88671ac Bug 1359245 - Get rid of CycleCollectedJSRuntime::MainContext (r=mccr8)
This is another method that assumes one context per runtime. This patch
eliminates the method.

MozReview-Commit-ID: JHcQ1nyiHSP
2017-04-27 15:34:46 -07:00
Cervantes Yu
6bcb4f30a4 Bug 1024669 - Part 1: Annotate crash reports with thread names. r=gsvelto
NS_SetCurrentThreadName() is added as an alternative to PR_SetCurrentThreadName()
inside libxul. The thread names are collected in the form of crash annotation to
be processed on socorro.

MozReview-Commit-ID: 4RpAWzTuvPs
2017-02-07 18:57:23 +08:00
Bill McCloskey
612db5fd30 Bug 1343396 - Split CycledCollectedJSContext and XPCJSContext into separate context and runtime classes (r=mccr8)
To run JS in separate cooperative threads, we need to split up per-thread state
from per-runtime state. This patch does that for XPConnect.

MozReview-Commit-ID: 407SlJ7nR6v
2017-04-18 17:01:04 -07:00
Sebastian Hengst
189424cb45 Backed out changeset 7fdcabdbb675 (bug 1024669) for failing mda, GTest and talos jobs. r=backout on a CLOSED TREE 2017-04-10 19:05:44 +02:00
Cervantes Yu
c2014c712d Bug 1024669 - Part 1: Annotate crash reports with thread names. r=gsvelto
MozReview-Commit-ID: 4RpAWzTuvPs
2017-02-07 18:57:23 +08:00
Carsten "Tomcat" Book
e6d6caf1f8 Backed out changeset 7a52d887bcea (bug 1024669) for bustage 2017-04-10 11:43:49 +02:00
Cervantes Yu
eb13868db5 Bug 1024669 - Part 1: Annotate crash reports with thread names. r=gsvelto
MozReview-Commit-ID: 4RpAWzTuvPs
2017-02-07 18:57:23 +08:00
Boris Zbarsky
e31f9fb162 Bug 1348331 part 3. Change Preferences::RegisterCallback/RegisterCallbackAndCall/UnregisterCallback to do exact matching on the pref name, not prefix matching. r=froydnj.
MozReview-Commit-ID: GY6J62yWkfk
2017-03-21 14:59:02 -04:00
Boris Zbarsky
96a1af8bdd Bug 1348331 part 2. Switch Preferences::RegisterCallback/RegisterCallbackAndCall consumers that want prefix matches to the new RefisterPrefixCallback(AndCall) APIs. r=froydnj,padenot
MozReview-Commit-ID: 2ebVZO4fN6i
2017-03-21 14:59:02 -04:00
Boris Zbarsky
68cb200a36 Bug 1348215. Fix the SIMPLE_WORKER_PREF setup to not mishandle pref names that start with the worker pref name. r=ehsan
Without this change, we will call WorkerPrefChanged if a pref whose name just
_starts_ with the name of one of our WORKER_SIMPLE_PREF prefs changes.  Then in
WorkerPrefChanged we will get the value of the pref that changed, and store it
under the key identified by the closure, thus writing the value of an incorrect
pref in there.

MozReview-Commit-ID: JTsvvtC5P1o
2017-03-17 14:10:40 -04:00
Nicholas Nethercote
ee0866f31d Bug 1345262 (part 5) - Fix how JS sampling is started/stopped by the profiler. r=mstange,djvj.
Currently, JS sampling has major problems.

- JS sampling is enabled for all JS threads from the thread that runs
  locked_profiler_start() -- currently only the main thread -- but the JS
  engine can't handle enabling from off-thread, and asserts. This makes
  profiling workers impossible in a debug build.

- No JS thread will be JS sampled unless enableJSSampling() is called, but that
  only happens in locked_profiler_start(). That means any worker threads
  created while the profiler is active won't be JS sampled.

- Only the thread that runs locked_profiler_stop() -- currently only the main
  thread -- ever calls disableJSSampling(). This means that worker threads that
  start being JS sampled never stop being JS sampled.

This patch fixes these three problems in the following ways.

- locked_profiler_start() now sets a flag in PseudoStack that indicates
  JS sampling is desired, but doesn't directly enable it. Instead, the JS
  thread polls that flag and enables JS sampling itself when it sees the flag
  is set. The polling is done by the interrupt callback. There was already a
  flag of this sort (mJSSampling) but the new one is better.

  This required adding a call to profiler_js_operation_callback() to the
  InterruptCallback() in XPCJSContext.cpp. (In comparison, the
  InterruptCallback() in dom/workers/RuntimeService.cpp already had such a
  call.)

- RegisterCurrentThread() now requests JS sampling of a JS thread when the
  profiler is active, the thread is being profiled, and JS sampling is enabled.

- locked_profiler_stop() now calls stopJSSampling() on all live threads.

The patch makes the following smaller changes as well.

- Renames profiler_js_operation_callback() as profiler_js_interrupt_callback(),
  because "interrupt callback" is the standard name (viz.
  JS_AddInterruptCallback()).

- Calls js::RegisterContextProfilingEventMarker() with nullptr when stopping
  JS sampling, so that ProfilerJSEventMarker won't fire unnecessarily.

- Some minor formatting changes.
2017-03-10 09:04:23 +11:00
Nicholas Nethercote
3bb1eba8e6 Bug 1345262 (part 2) - Add profiler_{set,clear}_js_context(). r=mstange.
PseudoContext::sampleContext() is always called immediately after
profiler_get_pseudo_stack(). This patch introduces profiler_set_js_context()
and profiler_clear_js_context(), which replace the profiler_get_pseudo_stack()
+ sampleContext() pairs. This takes us a step closer to not having to export
PseudoStack outside the profiler.
2017-03-09 17:06:35 +11:00
Andrea Marchesini
cc47388fb4 Bug 1345277 - Initialize nsIStreamTransportService before dispatching the first worker, r=ehsan 2017-03-08 18:37:08 +01:00
Ben Kelly
9d3d01933a Bug 1345251 Make MozPromise usable on worker threads. r=gerald 2017-03-08 11:45:07 -05:00
Jan Varga
2e688f6e8b Bug 1311057 - Part 1: Remove support for packaged apps from asmjscache; r=luke 2017-03-06 18:38:40 +01:00
Wes Kocher
15958b291e Merge m-c to inbound, a=merge
MozReview-Commit-ID: Lt0WpWkto4h
2017-02-13 17:07:33 -08:00
Masatoshi Kimura
715011adda Bug 1219523 - Remove the "dom.workers.latestJSVersion" pref. r=baku
MozReview-Commit-ID: 92fCMCLTxRp
2017-02-12 13:37:38 +09:00
Brian Hackett
672894a957 Bug 1337112 - Remove links from JSRuntime to its single context and zone group, r=jandem,jonco. 2017-02-10 16:47:50 -07:00