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

309 Коммитов

Автор SHA1 Сообщение Дата
Henri Sivonen 3edc601325 Bug 1402247 - Use encoding_rs for XPCOM string encoding conversions. r=Nika,erahm,froydnj.
Correctness improvements:

 * UTF errors are handled safely per spec instead of dangerously truncating
   strings.

 * There are fewer converter implementations.

Performance improvements:

 * The old code did exact buffer length math, which meant doing UTF math twice
   on each input string (once for length calculation and another time for
   conversion). Exact length math is more complicated when handling errors
   properly, which the old code didn't do. The new code does UTF math on the
   string content only once (when converting) but risks allocating more than
   once. There are heuristics in place to lower the probability of
   reallocation in cases where the double math avoidance isn't enough of a
   saving to absorb an allocation and memcpy.

 * Previously, in UTF-16 <-> UTF-8 conversions, an ASCII prefix was optimized
   but a single non-ASCII code point pessimized the rest of the string. The
   new code tries to get back on the fast ASCII path.

 * UTF-16 to Latin1 conversion guarantees less about handling of out-of-range
   input to eliminate an operation from the inner loop on x86/x86_64.

 * When assigning to a pre-existing string, the new code tries to reuse the
   old buffer instead of first releasing the old buffer and then allocating a
   new one.

 * When reallocating from the new code, the memcpy covers only the data that
   is part of the logical length of the old string instead of memcpying the
   whole capacity. (For old callers old excess memcpy behavior is preserved
   due to bogus callers. See bug 1472113.)

 * UTF-8 strings in XPConnect that are in the Latin1 range are passed to
   SpiderMonkey as Latin1.

New features:

 * Conversion between UTF-8 and Latin1 is added in order to enable faster
   future interop between Rust code (or otherwise UTF-8-using code) and text
   node and SpiderMonkey code that uses Latin1.

MozReview-Commit-ID: JaJuExfILM9
2018-08-14 14:43:42 +03:00
Gabriele Svelto 15adf94f4d Bug 1348273 - Convert crash annotations into a machine-readable list of constants; r=ted.mielczarek,njn,dholbert,mak,cpearce,mcmanus,froydnj,Dexter,jrmuizel,jchen,jimm,bz,surkov
This introduces the machinery needed to generate crash annotations from a YAML
file. The relevant C++ functions are updated to take a typed enum. JavaScript
calls are unaffected but they will throw if the string argument does not
correspond to one of the known entries in the C++ enum. The existing whitelists
and blacklists of annotations are also generated from the YAML file and all
duplicate code related to them has been consolidated. Once written out to the
.extra file the annotations are converted in string form and are no different
than the existing ones.

All existing annotations have been included in the list (and some obsolete ones
have been removed) and all call sites have been updated including tests where
appropriate.

--HG--
extra : source : 4f6c43f2830701ec5552e08e3f1b06fe6d045860
2018-07-05 15:42:11 +02:00
Brian Hackett 51e310f29a Bug 1479547 Part 1 - Remove instrumentation related to non-deterministic GCs, r=mccr8.
--HG--
extra : rebase_source : 6dfc65ab83e770da6e1f64003379156c3b863050
2018-07-31 19:34:50 +00:00
Brian Hackett 4bd59c423f Bug 1479339 - Disable the cycle collector when recording/replaying, r=mccr8.
--HG--
extra : rebase_source : e317c64bdf8083a19bed25379ee937e348ace294
2018-07-30 15:48:17 +00:00
Brian Hackett 52b33afe4e Bug 1207696 Part 7 - Ensure deterministic interaction of GC with CC and object references, r=smaug.
--HG--
extra : rebase_source : 5d9e7ebd1dc242ca648193ed1f27ae91d19006de
2018-07-23 14:46:37 +00:00
Brian Hackett da3fee20ba Bug 1207696 Part 5j - Don't add GC events to timelines when recording or replaying, r=mccr8.
--HG--
extra : rebase_source : 1c600ce8918a3b343864c8a3606a4de5d25b87f6
2018-07-23 14:38:49 +00:00
Brian Hackett 049bcdf766 Bug 1207696 Part 5a - Disable incremental GC when recording or replaying, r=mccr8.
--HG--
extra : rebase_source : a98389408b8aecd95323a7f56f2e286f7f6ce43d
2018-07-23 14:35:17 +00:00
Jan de Mooij c542e6498e Bug 1474522 - Change PrepareScriptEnvironmentAndInvoke to always take a global object instead of an arbitrary scope. r=bholley
js-ctypse now passes the context's current global instead of the closure function it's calling.
2018-07-11 11:44:52 +02:00
Nathan Froyd 713a85aa66 Bug 1471614 - remove some dead code in CycleCollectedJSRuntime; r=mccr8
Not only is it dead code, but it's a significant amount of useless work!
2018-06-27 18:03:10 +02:00
Dorel Luca f7aa7c9447 Backed out changeset 0ca9cade7725 (bug 1471614) for XPCshell failures on devtools/shared/tests/unit/test_css-properties-db.js 2018-06-27 18:42:30 +03:00
Nathan Froyd 1185b20068 Bug 1471614 - remove some dead code in CycleCollectedJSRuntime; r=mccr8
Not only is it dead code, but it's a significant amount of useless work!
2018-06-27 11:10:31 -04:00
Csoregi Natalia 2f779be8d9 Merge mozilla-central to autoland. a=merge CLOSED TREE 2018-06-02 01:03:45 +03:00
Emilio Cobos Álvarez fffb25b74f Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Markus Stange d237156fdc Bug 1464909 - Add the "GC / CC" category to IncrementalFinalizeRunnable::Run. r=smaug
MozReview-Commit-ID: nRSVnJVNTj

--HG--
extra : rebase_source : ce22abc0fcbc11dab5eb2cf1b487a75424b8bab1
2018-05-31 14:08:50 -04:00
Noemi Erli 7bfa96a42b Backed out 4 changesets (bug 1464909) for failures in devtools/client/performance/test/unit/test_tree-model-08.js r=mstange on a CLOSED TREE
Backed out changeset 119c2055e002 (bug 1464909)
Backed out changeset 562aeeced55b (bug 1464909)
Backed out changeset c1e1d74ad27e (bug 1464909)
Backed out changeset 11670c51f572 (bug 1464909)
2018-06-01 01:23:49 +03:00
Markus Stange 082d09bf5b Bug 1464909 - Add the "GC / CC" category to IncrementalFinalizeRunnable::Run. r=smaug
MozReview-Commit-ID: nRSVnJVNTj

--HG--
extra : rebase_source : c20bc5a2acea854849ee5bcefd40c14d966d0c02
2018-05-31 14:08:50 -04:00
Steve Fink 0680fed494 Bug 1464266 - Rename GCForReason to NonIncrementalGC, r=jonco
--HG--
extra : topic : GCForReason
extra : rebase_source : e81bf7bb8ca0824f8b63f25a46ccbe26c4002325
2018-05-24 16:19:18 -07:00
Andrew McCreight 6c4a1d23f2 Bug 1460636 - Don't trace jsids on ObjectGroup in the cycle collector. r=jonco,sfink
For some reason, the CC spends a lot of time tracing jsids on
ObjectGroups when an addon is installed. This patch avoids that by
adding a canSkipJsids flag to JSTracer, and using it in
ObjectGroup::traceChildren. If this is true, then the tracer is free
to not report every jsid. This flag is set to true for the two CC
tracers.

MozReview-Commit-ID: CWFqQEr0SxV

--HG--
extra : rebase_source : cc31c22717f8990166454db191e0d40c145e09f0
2018-05-11 11:38:58 -07:00
Sebastian Hengst 0819f35e51 Backed out 4 changesets (bug 525063) on request from Andi. a=backout
Backed out changeset 516c4fb1e4b8 (bug 525063)
Backed out changeset 6ff8aaef2866 (bug 525063)
Backed out changeset bf13e4103150 (bug 525063)
Backed out changeset d7d2f08e051c (bug 525063)
2018-04-13 16:01:28 +03:00
Tristan Bourvon a3a77c0312 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Steve Fink e0f4a04fd4 Bug 1447391 - Early return for strings and symbols when tracing for CC, r=mccr8
--HG--
extra : rebase_source : f4512c0ab8d7aac3f274d38b96594eb65fb149dd
2018-03-20 10:54:29 -07:00
Jason Orendorff e7c94fff59 Bug 1439063 - Part 1: Move several public headers from js/src to js/public. r=jandem.
js/src/jsalloc.h -> js/public/AllocPolicy.h
jsalloc.cpp -> js/src/util/AllocPolicy.cpp
jsbytecode.h -> merge into js/public/TypeDecls.h
jsprf.h -> js/public/Printf.h
jsprf.cpp -> js/src/util/Printf.cpp
jsprototypes.h -> public/ProtoKey.h
jswrapper.h -> js/Wrapper.h

--HG--
rename : js/src/jsalloc.h => js/public/AllocPolicy.h
rename : js/src/jsprf.h => js/public/Printf.h
rename : js/src/jsprototypes.h => js/public/ProtoKey.h
rename : js/src/jswrapper.h => js/public/Wrapper.h
rename : js/src/jsalloc.cpp => js/src/util/AllocPolicy.cpp
rename : js/src/jsprf.cpp => js/src/util/Printf.cpp
extra : rebase_source : 98b16d94c469202eab0303a8da844f1d0b6aa809
extra : amend_source : e0b16c1077226d6fe240f4d7096537f93b43f2b8
extra : histedit_source : d94e0ba7904a7d66742c7fac43f638aaec4fa4e5
2018-02-21 10:30:19 -06:00
David Teller e5c2a5003e Bug 1409852 - Expose an API in ChromeUtils to detect chrome JS dev errors;r=bz
MozReview-Commit-ID: GluMLeQOHTZ

--HG--
extra : rebase_source : 37516c3b76a9eb7821ba66ee46ba3c5c0f659e2e
2017-11-16 10:48:45 +01:00
Csoregi Natalia 9743e10556 Backed out 3 changesets (bug 1409852) for build bustage and failing test_js_dev_error_interceptor.js. r=backout on a CLOSED TREE
Backed out changeset 06368bf1a32c (bug 1409852)
Backed out changeset 46fce9a2622d (bug 1409852)
Backed out changeset 649d7bdf80ad (bug 1409852)
2017-12-21 15:31:27 +02:00
David Teller 9e97d5406a Bug 1409852 - Expose an API in ChromeUtils to detect chrome JS dev errors;r=bz
MozReview-Commit-ID: GluMLeQOHTZ

--HG--
extra : rebase_source : e1551690496cde70d72c4d35c8a57927ed54a68b
2017-11-16 10:48:45 +01:00
Andrea Marchesini b1b879f86e Bug 1422316 - WorkerJSRuntime::Shutdown must call the base class ::Shutdown method, f=yoric, r=bkelly 2017-12-18 17:59:30 +01:00
Gabriele Svelto 3e3a359edc Bug 1402519 - Remove MOZ_CRASHREPORTER directives from xpcom; r=froydnj
MozReview-Commit-ID: HS3M0DJQ3qc

--HG--
extra : rebase_source : c535b0760480deea1c9889c629c52857bf52ea64
2017-10-10 11:59:39 +02:00
shindli fb855aa7ba Backed out 16 changesets (bug 1402519) for conflicts during merge r=backout on a CLOSED TREE
Backed out changeset 07fcf163241a (bug 1402519)
Backed out changeset c6d2ad45d8e2 (bug 1402519)
Backed out changeset 8a3caca61294 (bug 1402519)
Backed out changeset 01425eae2c48 (bug 1402519)
Backed out changeset cf298d3815de (bug 1402519)
Backed out changeset e1964f4389cd (bug 1402519)
Backed out changeset f405337f3569 (bug 1402519)
Backed out changeset a76356fd3359 (bug 1402519)
Backed out changeset d3bb350d1c34 (bug 1402519)
Backed out changeset 9d3bfd9f932c (bug 1402519)
Backed out changeset e3dd6e5b073f (bug 1402519)
Backed out changeset e801b0c00134 (bug 1402519)
Backed out changeset 8a4139fa5dca (bug 1402519)
Backed out changeset 8d01c14ac1ca (bug 1402519)
Backed out changeset 24e0dcd01898 (bug 1402519)
Backed out changeset f8fdf450613f (bug 1402519)
2017-11-23 00:11:44 +02:00
Gabriele Svelto 13364cc36b Bug 1402519 - Remove MOZ_CRASHREPORTER directives from xpcom; r=froydnj
MozReview-Commit-ID: HS3M0DJQ3qc

--HG--
extra : rebase_source : bb09e9e3b01d39e91a1377117fa127a09c29cccd
2017-10-10 11:59:39 +02:00
Chia-Hung Duan 360fc92c15 Bug 1376891 - Support idle runnable for nursery collection. r=jonco, r=smaug 2017-10-30 18:07:42 +08:00
Csoregi Natalia b0832d7215 Backed out changeset fbf84e79c44c (bug 1376891) for bustage CycleCollectedJSRuntime.h:254 r=backout on a CLOSED TREE 2017-11-01 15:32:09 +02:00
Chia-Hung Duan 778619638a Bug 1376891 - Support idle runnable for nursery collection. r=jonco, r=smaug 2017-10-30 18:07:42 +08:00
Nicholas Nethercote 8a68e6fb83 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
Bevis Tseng eb2adceca7 Bug 1373046 - Use idle dispatch for IncrementalFinalizeRunnable. r=billm
MozReview-Commit-ID: 2xVjTSHTcFb
2017-08-15 17:30:24 +08:00
Ehsan Akhgari e743dbc92a Bug 1391306 - Reduce the hashtable lookups in CycleCollectedJSRuntime::Add/RemoveJSHolder by one each; r=mccr8 2017-08-17 18:25:36 -04:00
Sebastian Hengst 9d5f4bffd9 Backed out changeset 9c364b2c35d3 (bug 1391306) for failing selftest.py during build. r=backout 2017-08-17 20:27:37 +02:00
Ehsan Akhgari cfd7f1c957 Bug 1391306 - Reduce the hashtable lookups in CycleCollectedJSRuntime::Add/RemoveJSHolder by one each; r=mccr8 2017-08-17 13:46:06 -04:00
Andrea Marchesini 45af660d99 Bug 1376089 - IncrementalFinalizeRunnable must be a CancelableStream in order to be dispatch to workers, r=mccr8 2017-07-21 17:30:55 +02:00
Paul Adenot bd42c1f578 Bug 1376089 - Backed out changeset 96941e476121 for bustage.
MozReview-Commit-ID: FxavjFmStuL
2017-07-21 17:56:08 +02:00
Andrea Marchesini 4116a6ad94 Bug 1376089 - IncrementalFinalizeRunnable must be a CancelableStream in order to be dispatch to workers, r=mccr8 2017-07-21 17:30:55 +02:00
Jon Coppeard 39c119de26 Bug 1379957 - Only fire the debugger's onGarbageCollection hook when necessary to avoid extra worker GCs r=fitzgen 2017-07-12 18:31:56 +01:00
Jon Coppeard 3460a3c5dd Bug 1378717 - Store JS holders in a vector for faster iteration r=smaug 2017-07-11 16:52:01 +01:00
Nicholas Nethercote 5d446671a8 Bug 1375776 (part 4) - Allow ProfilerMarkerPayload.h to be #included unconditionally. r=mstange.
This requires:

- Moving the constructors of ProfilerMarkerPayload and its subclasses into the
  .h file so they are visible even when ProfilerMarkerPayload.cpp isn't
  compiled.

- Similarly, using a macro to make StreamPayload() a crashing no-op when the
  profiler isn't enabled. (It is never called in that case.)

--HG--
extra : rebase_source : 7aad2fdb1bd4e49782024dba6664e8f992771520
2017-06-23 16:24:15 +10:00
Mats Palmgren 465885031b Bug 1376127 - Use LookupForAdd instead of Get+Put in CycleCollectedJSRuntime::DeferredFinalize to avoid unnecessary hashtable lookups. r=froydnj
MozReview-Commit-ID: 1lEnh9yTQUH
2017-06-28 01:03:18 +02:00
Mats Palmgren 250c9d87b0 Bug 1376126 - Use Lookup() entry instead of Get+Remove in CycleCollectedJSRuntime::RemoveJSHolder to avoid unnecessary hashtable lookups. r=froydnj
MozReview-Commit-ID: F2dJbf9r44b
2017-06-28 01:03:17 +02:00
Nicholas Nethercote 915a56fb41 Bug 1375299 (part 2) - Remove PROFILER_MARKER. r=mstange.
PROFILER_MARKER is now just a trivial wrapper for profiler_add_marker(). This
patch removes it.

--HG--
extra : rebase_source : 9858f34763bb343757896a91ab7ad8bd8e56b076
2017-06-22 13:40:21 +10:00
Nicholas Nethercote 4b364cf3f3 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.

--HG--
extra : rebase_source : 8fb5e8757600210c2f77865694d25162f0b7698a
2017-06-22 06:26:16 +10:00
Nicholas Nethercote 5d3808c6e5 Bug 1373436 (part 4) - Use UniquePtr with profile_add_marker(). r=mstange.
Once the |aPayload| argument to profile_add_marker() became a UniquePtr the
default value of nullptr caused compilation difficulties that could only be
fixed by #including ProfilerMarkerPayload.h into lots of additional places
(because the UniquePtr<T> instantiation required the T to be fully defined). To
get around this I just split profile_add_marker() into two functions, one with
1 argument and one with 2 arguments.

The patch also removes the definition of PROFILER_MARKER_PAYLOAD in the case
where MOZ_GECKO_PROFILER isn't defined. A comment explains why.
2017-06-16 12:26:26 +10:00
Steve Fink 251223d923 Bug 1364161 - Emit a major GC marker for the end of a major GC, and a slice marker for the end of a slice, instead of the other way around, r=mstange
MozReview-Commit-ID: 337I7TeN8tQ

--HG--
extra : rebase_source : 68725645926fbf9662c45bf6fa13ba02c25d8894
2017-05-12 17:42:43 -07:00
Andrew McCreight bc3190039b Bug 1364528 - Don't synchronously finalize native objects if an exception is pending. r=smaug
MozReview-Commit-ID: 6OY3ftH1aWu

--HG--
extra : rebase_source : 54da36f422af673762aa31e5a1225783e5f776e4
2017-05-12 11:16:16 -07:00