Commit Graph

285 Commits

Author SHA1 Message Date
Andrea Marchesini
e9d3fe108c Bug 1287313 - get rid of 'workers::' in Promise.cpp, r=smaug 2016-07-17 16:48:58 +02:00
Boris Zbarsky
32ec08aef5 Bug 1275315 part 2. Use the new Realm getters in binding code. r=peterv 2016-07-09 00:19:52 -04:00
Nathan Froyd
68a263d7f1 Bug 1283616 - part 2 - micro-optimize inserting microtask runnables into the queue; r=khuey
We can save an AddRef/Release pair by passing in the reference to the queue.
2016-07-05 18:49:06 -04:00
Nathan Froyd
49bd0a106e Bug 1283616 - part 1 - micro-optimize removing microtask runnables from the queue; r=khuey
We can just extract the reference we want from the queue since we're
about to remove it; no sense in performing extra refcounting if we don't
need to.
2016-07-05 18:49:06 -04:00
Andrea Marchesini
796bda032a Bug 1269154 - Get rid of WorkerFeature: WorkerHolder, r=khuey 2016-06-23 10:53:14 +02:00
Carsten "Tomcat" Book
ef49710e52 Backed out changeset 1c5d78c7ba43 (bug 1269154) for bustage on a CLOSED TREE 2016-06-23 10:13:54 +02:00
Andrea Marchesini
274f4e927f Bug 1269154 - Get rid of WorkerFeature: WorkerHolder, r=khuey 2016-06-22 17:24:35 +02:00
Kaku Kuo
a455dadfc1 Bug 1276272 - part 1 - add Promise::MaybeRejectWithVode() utility method; r=ehsan
MozReview-Commit-ID: 4bBGsUNKbQS
2016-06-09 20:26:47 +01:00
Till Schneidereit
4f5be3e505 Bug 911216 - Part 24: Use promise rejection tracking to report unhandled rejections to the console. r=bz,Paolo 2016-03-22 16:22:24 +01:00
Jan de Mooij
2474a5e7b4 Bug 1277278 part 1 - Remove ContextOptions and make autoJSAPIOwnsErrorReporting the default. r=luke 2016-06-07 20:30:48 +02:00
Boris Zbarsky
07cc10da73 Bug 1276400 part 1. Get rid of AutoDontReportUncaught and its one consumer. r=bkelly 2016-05-31 22:00:17 -04:00
Kyle Huey
a9cf047227 Bug 1265927: Move nsRunnable to mozilla::Runnable, CancelableRunnable to mozilla::CancelableRunnable. r=froydnj 2016-04-25 17:23:21 -07:00
Paul Adenot
15b8764446 Bug 1267096 - Return early if we have no global when creating a Promise. r=smaug
MozReview-Commit-ID: LQeFGaRRAVq
2016-04-25 11:06:30 +02:00
Olli Pettay
0fd40d8ce7 Bug 1257096, don't try to report about unusual unhandled rejected Promises, r=bz,waldo 2016-04-20 02:29:21 +03:00
Shawn Huang
10c90e136c Bug 1146418 - Promise API entry points should use NS_ASSERT_OWNINGTHREAD, r=baku 2016-04-11 23:16:26 +08:00
Kris Maglione
c415d02b98 Bug 1262069: Wrap promise resolution values before storing. r=bz
MozReview-Commit-ID: GRKOBucpacE
2016-04-07 13:33:50 -07:00
Nathan Froyd
1d19f68110 Bug 1177488 - use |const char*| for representing async call reasons; r=bz,fitzgen
Using a simple |const char*| is more memory-efficient than allocating a
JS string. We still have to allocate the JS string for passing things
into JS, but ideally we will be able to move the point of allocation
much closer to where it's actually needed, rather than indiscriminantly
doing it all the time.
2016-03-23 10:40:53 -04:00
Kyle Huey
d791fedcc4 Bug 1259290: Part 5 - Remove the cx from WorkerFeature::Notify. r=bz 2016-03-28 10:28:14 -07:00
Wes Kocher
dc720b3761 Backed out changeset 95494e68c722 (bug 1177488) for crashes in test_bug732665.xul CLOSED TREE
MozReview-Commit-ID: IFUHUBUCnCD
2016-03-25 12:11:48 -07:00
Nathan Froyd
e3370b97e9 Bug 1177488 - use |const char*| for representing async call reasons; r=bz,fitzgen
Using a simple |const char*| is more memory-efficient than allocating a
JS string. We still have to allocate the JS string for passing things
into JS, but ideally we will be able to move the point of allocation
much closer to where it's actually needed, rather than indiscriminantly
doing it all the time.
2016-03-23 10:40:53 -04:00
Eddy Bruel
e5db48a881 Bug 1229769 - We should be able to use DOM promises in the worker debugger;r=khuey 2016-03-24 16:12:00 +01:00
Boris Zbarsky
a50c6aa31a Bug 1255817 part 2. Get rid of AutoJSAPI::OwnsErrorReporting and AutoJSAPI::TakeOwnershipOfErrorReporting. r=bholley 2016-03-23 11:44:54 -04:00
Boris Zbarsky
5462df3dc8 Bug 1257725 part 3. Get rid of ThreadsafeAutoJSContext usage in Promise code. r=bholley 2016-03-23 11:02:57 -04:00
Boris Zbarsky
b393d43634 Bug 1256424 followup to actually address the review comments 2016-03-14 20:53:36 -04:00
Boris Zbarsky
49c8f8377b Bug 1256424. Get rid of ThreadsafeAutoSafeJSContext. r=bholley 2016-03-14 20:48:39 -04:00
Wes Kocher
8f4c132a28 Backed out changeset ee3c99e6f676 (bug 1177488) for LeakSanitizer failures
MozReview-Commit-ID: FFfF4u2vOrS
2016-03-14 13:15:21 -07:00
Nathan Froyd
63fef39e49 Bug 1177488 - use |const char*| for representing async call reasons; r=bz,fitzgen
Using a simple |const char*| is more memory-efficient than allocating a
JS string.  We still have to allocate the JS string for passing things
into JS, but ideally we will be able to move the point of allocation
much closer to where it's actually needed, rather than indiscriminantly
doing it all the time.
2016-03-08 16:29:25 -05:00
Kyle Huey
6831932bf4 Bug 1252268: If the slow script dialog aborts an interval timer callback, don't schedule it again. r=bz 2016-03-10 01:50:56 -08:00
Jonathan Watt
f04970d828 Bug 1253094, part 1 - Stop using DebugOnly for class/struct members in dom/. r=baku
MozReview-Commit-ID: ErWZs9oV4WS
2016-02-26 15:52:06 +00:00
Boris Zbarsky
a2c926eb89 Bug 1252127. Remove unnecessary JSContext argument from PromiseWorkerProxy::CleanUp. r=khuey 2016-02-29 14:52:42 -05:00
Boris Zbarsky
48677a12b6 Bug 1252091. Add/RemoveFeature don't need a JSContext argument. r=khuey 2016-02-29 14:52:42 -05:00
Boris Zbarsky
e3eff10fb4 Bug 1251045 part 4. Remove the JSContext argument of WorkerRunnable::Dispatch. r=khuey 2016-02-26 15:23:12 -05:00
Andrew McCreight
9f6b653800 Bug 1247679, part 3 - Replace NS_IMPL_CYCLE_COLLECTION_TRACE_JSVAL_MEMBER_CALLBACK with JS_MEMBER. r=smaug 2016-02-22 10:11:02 -08:00
Boris Zbarsky
cebe133434 Bug 1243001 part 7. Stop wrappercaching dom::Promise when SPIDERMONKEY_PROMISE is defined. r=peterv
nsWrapperCache expects the object it stores to have an ObjectMoved op that will
notify the wrapper cache when the object is moved.  SpiderMonkey promises don't
have a way to do this.

The XPCConvert changes are needed to allow code that passes around Promise
objects as nsISupports to continue working instead of ending up with
double-wrapped nsISupports (XPCWrappedNative for an nsISupports XPCWrappedJS)
around the SpiderMonkey Promise.
2016-02-09 17:40:31 -05:00
Boris Zbarsky
4284de96aa Bug 1243001 part 6. Implement Promise::AppendNativeHandler in the SPIDERMONKEY_PROMISE world. r=peterv
This patch introduces a fake IDL interface just to get the benefits of
cycle collection for the JS-to-C++ link we now need for PromiseNativeHandler
(because the SpiderMonkey Promise somehow needs to point to the
PromiseNativeHandler).  Now in practice a bunch of our PromiseNativeHandlers
are not cycle collected.  That kinda freaks me out, but spot-checking a few
suggests they do not in fact leak (either because they don't form cycles or
because the Promise they're observing always settles and then releases them).
Either way, that's a problem that exists with or without this patch...
2016-02-09 17:40:31 -05:00
Boris Zbarsky
2afd6d72bd Bug 1243001 part 5. Get rid of most of the dom::Promise methods when SPIDERMONKEY_PROMISE is defined, and reimplement the rest in terms of SpiderMonkey Promise. r=peterv
This is the bulk of the new dom::Promise implementation.  It's using the APIs
that bug 911216 part 1 adds.
2016-02-09 17:40:31 -05:00
Boris Zbarsky
06cd98f9d9 Bug 1243001 part 4. Switch to using MaybeResolve/MaybeReject instead of ResolveInternal/RejectInternal for PromiseWorkerProxy. r=peterv
This is the one part of this set of patches that is actually a substantive change
even without SPIDERMONKEY_PROMISE defined.  This is being done because I don't
want to create ResolveInternal/RejectInternal methods on dom::Promise in the
new world.

In practice, the difference between MaybeResolve/Reject and
ResolveInternal/RejectInternal is that the former will do nothing if the
Promise is "resolved" in terms of spec terminology: either settled or locked in
to track another Promise.  A resolved but still pending Promise can still get
fulfilled (what we call ResolveInternal) or rejected when the promise it's
tracking settles.

So the difference only matters if PromiseWorkerProxy can be working with a
"resolved" Promise (in which case what it's doing now would settle it, while
what I'm switching to would not).  But I don't believe PromiseWorkerProxy ever
points to a "resolved" Promise.
2016-02-09 17:40:31 -05:00
Boris Zbarsky
6cffe8ef58 Bug 1243001 part 2. Make Promise an empty [NoInterfaceObject] interface when SPIDERMONKEY_PROMISE is defined. r=peterv
The idea is to not define a "Promise" property on the global and not generate
any of the methods, since SpiderMonkey will implement all of those, but to keep
some of the conversion to/from JS logic and the IDL parser validation bits that
we have right now.  Once we can assume SPIDERMONKEY_PROMISE we can probably
change how the "Promise" identifier is handled by the IDL parser and how the
resulting type is handled by codegen, but for now we're aiming for minimal
changes.
2016-02-09 17:40:30 -05:00
Boris Zbarsky
f05f592d61 Bug 1243001 part 1. Remove the dead WrappedWorkerRunnable class from Promise code. r=peterv 2016-02-09 17:40:30 -05:00
Boris Zbarsky
d1656d43b5 Bug 1245674. Null-check mGlobal before dereferencing it in one more place in Promise code. r=smaug 2016-02-05 13:12:52 -05:00
Kyle Huey
e95edb30a9 Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Jeff Walden
7e1acf0dbd Bug 1243114 - Convert PromiseCapability::mPromise to a rooted JSObject* instead of a rooted JS::Value. r=bz 2016-01-26 23:26:39 -08:00
Kaku Kuo
80cfd6c3dd Bug 1239300 - reject promise with null while creating imagebitmap from empty blob; r=smaug 2016-01-19 14:35:01 +08:00
simplyblue
0789cb1dfe Bug 1212533 - Change the out-param of js/JS::Construct from MutableHandleValue to MutableHandleObject. r=arai, r=jorendorff 2015-10-28 16:38:27 +05:30
Boris Zbarsky
11d511c281 Bug 1170760 part 13. Add subclassing support to Promise::Then/Catch. r=baku,efaust 2015-11-25 15:48:10 -05:00
Boris Zbarsky
c665232718 Bug 1170760 part 12. Rip out the promise-resolved-with-promise fast path. r=baku 2015-11-25 15:48:09 -05:00
Boris Zbarsky
f934fdaecd Bug 1170760 part 11. Add subclassing support to Promise::Reject. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky
1892742f92 Bug 1170760 part 10. Add subclassing support to Promise::Resolve. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky
3ef179d066 Bug 1170760 part 8. Add subclassing support to Promise::All. r=baku,efaust 2015-11-25 15:48:09 -05:00
Boris Zbarsky
a449dc40c8 Bug 1170760 part 7. Add subclassing support to Promise::Race. r=baku,efaust
Note that the web platform tests don't actually have quite the behavior they're
expected to per the spec yet.  They will get adjusted later on as we add
subclassing support to Promise.resolve and Promise.prototype.then.
2015-11-25 15:48:09 -05:00