Chromium Code Reviews| Index: src/promise.js |
| diff --git a/src/promise.js b/src/promise.js |
| index 2797d79acbc83941058bc7f189dc228957fc82c9..acc705a3f17a0b1ddd6200eeb210b199dab0c334 100644 |
| --- a/src/promise.js |
| +++ b/src/promise.js |
| @@ -40,7 +40,7 @@ var lastMicrotaskId = 0; |
| throw MakeTypeError('resolver_not_a_function', [resolver]); |
| var promise = PromiseInit(this); |
| if (DEBUG_IS_ACTIVE) { |
| - %DebugPromiseEvent({ type : "new Promise", |
| + %DebugPromiseEvent({ type : "new", |
| promise: this, |
| resolver: resolver }); |
| } |
| @@ -74,6 +74,12 @@ var lastMicrotaskId = 0; |
| if (GET_PRIVATE(promise, promiseStatus) === 0) { |
| PromiseEnqueue(value, GET_PRIVATE(promise, promiseQueue), status); |
| PromiseSet(promise, status, value); |
| + if (DEBUG_IS_ACTIVE) { |
| + %DebugPromiseEvent({ type: "update", |
| + promise: promise, |
| + status: status, |
| + value: value }); |
| + } |
| } |
| } |
| @@ -192,21 +198,37 @@ var lastMicrotaskId = 0; |
| } |
| function PromiseResolved(x) { |
| + var promise; |
| if (this === $Promise) { |
| // Optimized case, avoid extra closure. |
| - return PromiseSet(new $Promise(promiseRaw), +1, x); |
| + promise = PromiseSet(new $Promise(promiseRaw), +1, x); |
| } else { |
| - return new this(function(resolve, reject) { resolve(x) }); |
| + promise = new this(function(resolve, reject) { resolve(x) }); |
| + } |
| + if (DEBUG_IS_ACTIVE) { |
| + %DebugPromiseEvent({ type: "update", |
| + promise: promise, |
| + status: 1, |
| + value: x }); |
| } |
| + return promise; |
| } |
| function PromiseRejected(r) { |
| + var promise; |
| if (this === $Promise) { |
| // Optimized case, avoid extra closure. |
| - return PromiseSet(new $Promise(promiseRaw), -1, r); |
| + promise = PromiseSet(new $Promise(promiseRaw), -1, r); |
| } else { |
| - return new this(function(resolve, reject) { reject(r) }); |
| + promise = new this(function(resolve, reject) { reject(r) }); |
| } |
| + if (DEBUG_IS_ACTIVE) { |
| + %DebugPromiseEvent({ type: "update", |
|
aandrey
2014/07/22 11:58:49
now 3 update event calls instead of one doesn't lo
Alexandra Mikhaylova
2014/07/22 12:47:22
Done.
|
| + promise: promise, |
| + status: -1, |
| + value: r }); |
| + } |
| + return promise; |
| } |
| // Simple chaining. |
| @@ -234,6 +256,11 @@ var lastMicrotaskId = 0; |
| -1); |
| break; |
| } |
| + if (DEBUG_IS_ACTIVE) { |
| + %DebugPromiseEvent({ type: "chain", |
| + promise: deferred.promise, |
| + parentPromise: this }); |
| + } |
| return deferred.promise; |
| } |