Commit Graph

291 Commits

Author SHA1 Message Date
Sebastian Hengst
d91e9954eb 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
6095241db8 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Steve Fink
3674e7d3d1 Bug 1447391 - Early return for strings and symbols when tracing for CC, r=mccr8 2018-03-20 10:54:29 -07:00
Jason Orendorff
d640df5146 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
2018-02-21 10:30:19 -06:00
David Teller
c572e064a3 Bug 1409852 - Expose an API in ChromeUtils to detect chrome JS dev errors;r=bz
MozReview-Commit-ID: GluMLeQOHTZ
2017-11-16 10:48:45 +01:00
Csoregi Natalia
a7ffe7d981 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
ebfea04c0f Bug 1409852 - Expose an API in ChromeUtils to detect chrome JS dev errors;r=bz
MozReview-Commit-ID: GluMLeQOHTZ
2017-11-16 10:48:45 +01:00
Andrea Marchesini
d60c509f58 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
166d82c47c Bug 1402519 - Remove MOZ_CRASHREPORTER directives from xpcom; r=froydnj
MozReview-Commit-ID: HS3M0DJQ3qc
2017-10-10 11:59:39 +02:00
shindli
f90a73f3c0 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
53bb53d5a2 Bug 1402519 - Remove MOZ_CRASHREPORTER directives from xpcom; r=froydnj
MozReview-Commit-ID: HS3M0DJQ3qc
2017-10-10 11:59:39 +02:00
Chia-Hung Duan
0bfe9cc488 Bug 1376891 - Support idle runnable for nursery collection. r=jonco, r=smaug 2017-10-30 18:07:42 +08:00
Csoregi Natalia
5a5966a0f1 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
00ea51de91 Bug 1376891 - Support idle runnable for nursery collection. r=jonco, r=smaug 2017-10-30 18:07:42 +08: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
Bevis Tseng
90230f75ba Bug 1373046 - Use idle dispatch for IncrementalFinalizeRunnable. r=billm
MozReview-Commit-ID: 2xVjTSHTcFb
2017-08-15 17:30:24 +08:00
Ehsan Akhgari
c6c3fa537f 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
66625d3527 Backed out changeset 9c364b2c35d3 (bug 1391306) for failing selftest.py during build. r=backout 2017-08-17 20:27:37 +02:00
Ehsan Akhgari
8ccbbf92b8 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
22aebb930a 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
7b0a246111 Bug 1376089 - Backed out changeset 96941e476121 for bustage.
MozReview-Commit-ID: FxavjFmStuL
2017-07-21 17:56:08 +02:00
Andrea Marchesini
7e5d5ea8e0 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
6ef4b14048 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
3fe6456d82 Bug 1378717 - Store JS holders in a vector for faster iteration r=smaug 2017-07-11 16:52:01 +01:00
Nicholas Nethercote
4d8e21e334 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.)
2017-06-23 16:24:15 +10:00
Mats Palmgren
ea70125498 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
05d086cda1 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
4a9adbea0f 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.
2017-06-22 13:40:21 +10: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
Nicholas Nethercote
0f9a531d87 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
0d33348c00 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
2017-05-12 17:42:43 -07:00
Andrew McCreight
0de06cdb28 Bug 1364528 - Don't synchronously finalize native objects if an exception is pending. r=smaug
MozReview-Commit-ID: 6OY3ftH1aWu
2017-05-12 11:16:16 -07: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
Steve Fink
7c0c4ef112 Bug 1322560 - Record minor GC timings in profiles, r=jonco, mccr8, mstange 2017-04-25 13:24:34 -07:00
Steve Fink
ccdbf25343 Bug 1322560 - Inject detailed GC timing info into profiles, r=mstange 2017-05-02 16:13:49 -07:00
Bill McCloskey
122ab6031e Bug 1359245 - Remove some tracing callbacks at shutdown (r=mccr8)
When we just had CycleCollectedJSContext (and no CycleCollectedJSRuntime) a
weird thing happened at shutdown:
1. We would call JS_DestroyContext from ~CycleCollectedJSContext. By that time,
   the ~XPCJSContext destructor had already finished.
2. Destroying the context runs a final GC. That GC would call back into various
   GC callbacks, such as TraceBlackJS and TraceGrayJS.
3. These callbacks would do a virtual method call:
   http://searchfox.org/mozilla-central/rev/876c7dd30586f9c6f9c99ef7444f2d73c7acfe7c/xpcom/base/CycleCollectedJSRuntime.cpp#791
4. Normally this method call would call into
   XPCContext::TraceNativeBlackRoots. However, C++ changes the vtable for an
   object during destruction. So we would only call CycleCollectedJSContext's
   version of TraceNativeBlackRoots, which is empty. So we never traced anything.

When I moved this code into the runtime, we actually do call into
XPCJSRuntime::TraceNativeBlackRoots at that time. So the behavior changed, and
that was causing crashes once I nulled out the TLS as you asked. So I removed
these callbacks for the last GC.

MozReview-Commit-ID: 3do13bjpwQj
2017-04-27 15:34:46 -07:00
Bill McCloskey
8830029ed4 Bug 1359245 - Keep a linked list of CycleCollectedJSContexts in the runtime (r=mccr8)
This patch keeps a list of all the cooperatively scheduled contexts that are
linked to a runtime. In places where we need to iterate over all contexts (for
GC, specifically), it iterates over the list.

MozReview-Commit-ID: 3pKJX78f2l0
2017-04-27 15:34:46 -07:00
Bill McCloskey
99b84aa84e Bug 1359245 - Remove CycleCollectedJSRuntime::mJSContext (r=mccr8,sfink)
This patch eliminates a field where we assume that there is one
CycleCollectedJSContext per runtime.

MozReview-Commit-ID: 5cEL5Ml6Y9v
2017-04-27 15:34:46 -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
Jon Coppeard
48dadf1863 Bug 1352430 - Add barrier to wrapper cache to clear dying objects that have not yet been finalized r=bz r=sfink
* * *
Code review followup
2017-04-26 11:18:39 +01: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
Jan de Mooij
b402a91ead Bug 1302448 part 1 - Rename CycleCollectedJSRuntime to CycleCollectedJSContext. r=mccr8 2016-09-14 15:47:32 +02:00
Terrence Cole
ed6cbf49d1 Bug 1257387 - Move OOM callback annotation to the common runtime for workers; r=mccr8 2016-09-13 10:57:07 -07:00
Nicholas Nethercote
b5810a1eb4 Bug 1299384 - Use MOZ_MUST_USE with NS_warn_if_impl(). r=erahm.
This change avoids lots of false positives for Coverity's CHECKED_RETURN
warning, caused by NS_WARN_IF's current use in both statement-style and
expression-style.

In the case where the code within the NS_WARN_IF has side-effects, I made the
following change.

> NS_WARN_IF(NS_FAILED(FunctionWithSideEffects()));
> -->
> Unused << NS_WARN_IF(NS_FAILED(FunctionWithSideEffects()));

In the case where the code within the NS_WARN_IF lacks side-effects, I made the
following change.

> NS_WARN_IF(!condWithoutSideEffects);
> -->
> NS_WARNING_ASSERTION(condWithoutSideEffects, "msg");

This has two improvements.
- The condition is not evaluated in non-debug builds.
- The sense of the condition is inverted to the familiar "this condition should
  be true" sense used in assertions.

A common variation on the side-effect-free case is the following.

> nsresult rv = Fn();
> NS_WARN_IF_(NS_FAILED(rv));
> -->
> DebugOnly<nsresult rv> = Fn();
> NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "Fn failed");
2016-09-02 17:12:24 +10:00
Olli Pettay
f0930f685c Bug 1298661, let meta-stable state runnables run during sync loops, r=baku 2016-09-05 18:54:04 +03:00
Andi-Bogdan Postelnicu
6e3ca9cbda Bug 1282408 - add ignore initialization check flag for mAnyMarked in FixWeakMappingGrayBitsTracer. r=froydnj
MozReview-Commit-ID: 4DrIUUf4tuk
2016-08-24 10:58:37 +03:00
Sebastian Hengst
d798737bea Backed out changeset 31b56ae647c8 (bug 1110928) 2016-08-21 12:27:47 +02:00
Andrew McCreight
e2bdd91026 Bug 1110928, part 4 - Try to pass a relevant zone to PokeGC. r=smaug
This means the browser will do less full GCs.

MozReview-Commit-ID: BXf4GGhmbMx
2016-08-19 15:26:56 -07:00
Igor
9c81c3c1ee Bug 1293384 - Part 2: Rename Snprintf.h header to Sprintf.h. r=froydnj 2016-08-14 23:43:21 -07:00
Igor
972b8460e2 Bug 1293384 - Part 1: Rename snprintf_literal to SprintfLiteral. r=froydnj 2016-08-14 23:44:00 -07:00