Revision: 22591
Author: [email protected]
Date: Thu Jul 24 10:43:41 2014 UTC
Log: Introduce more debug events for promises.
BUG=v8:3093
LOG=Y
[email protected]
Review URL: https://codereview.chromium.org/393283007
http://code.google.com/p/v8/source/detail?r=22591
Modified:
/branches/bleeding_edge/src/debug-debugger.js
/branches/bleeding_edge/src/promise.js
/branches/bleeding_edge/test/mjsunit/es6/debug-promises-new-event.js
/branches/bleeding_edge/tools/generate-runtime-tests.py
=======================================
--- /branches/bleeding_edge/src/debug-debugger.js Thu Jul 3 15:56:01 2014
UTC
+++ /branches/bleeding_edge/src/debug-debugger.js Thu Jul 24 10:43:41 2014
UTC
@@ -1202,9 +1202,15 @@
function MakePromiseEvent(event_data) {
- if (event_data.type = "new Promise") {
+ if (event_data.type == "new") {
return new NewPromiseEvent(event_data);
}
+ if (event_data.type == "update") {
+ return new UpdatePromiseStatusEvent(event_data);
+ }
+ if (event_data.type == "chain") {
+ return new UpdatePromiseParentEvent(event_data);
+ }
}
@@ -1225,6 +1231,40 @@
NewPromiseEvent.prototype.resolver = function() {
return MakeMirror(this.resolver_);
}
+
+
+function UpdatePromiseStatusEvent(event_data) {
+ this.promise_ = event_data.promise;
+ this.status_ = event_data.status;
+ this.value_ = event_data.value;
+}
+
+
+UpdatePromiseStatusEvent.prototype.promise = PromiseGetter;
+
+
+UpdatePromiseStatusEvent.prototype.status = function() {
+ return this.status_;
+}
+
+
+UpdatePromiseStatusEvent.prototype.value = function() {
+ return MakeMirror(this.value_);
+}
+
+
+function UpdatePromiseParentEvent(event_data) {
+ this.promise_ = event_data.promise;
+ this.parentPromise_ = event_data.parentPromise;
+}
+
+
+UpdatePromiseParentEvent.prototype.promise = PromiseGetter;
+
+
+UpdatePromiseParentEvent.prototype.parentPromise = function() {
+ return MakeMirror(this.parentPromise_);
+}
function MakeAsyncTaskEvent(event_data) {
=======================================
--- /branches/bleeding_edge/src/promise.js Mon Jul 14 14:05:30 2014 UTC
+++ /branches/bleeding_edge/src/promise.js Thu Jul 24 10:43:41 2014 UTC
@@ -40,7 +40,7 @@
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 });
}
@@ -62,6 +62,12 @@
SET_PRIVATE(promise, promiseValue, value);
SET_PRIVATE(promise, promiseOnResolve, onResolve);
SET_PRIVATE(promise, promiseOnReject, onReject);
+ if (DEBUG_IS_ACTIVE && status !== 0) {
+ %DebugPromiseEvent({ type: "update",
+ promise: promise,
+ status: status,
+ value: value });
+ }
return promise;
}
@@ -234,6 +240,11 @@
-1);
break;
}
+ if (DEBUG_IS_ACTIVE) {
+ %DebugPromiseEvent({ type: "chain",
+ promise: deferred.promise,
+ parentPromise: this });
+ }
return deferred.promise;
}
=======================================
--- /branches/bleeding_edge/test/mjsunit/es6/debug-promises-new-event.js
Mon Jun 30 11:12:42 2014 UTC
+++ /branches/bleeding_edge/test/mjsunit/es6/debug-promises-new-event.js
Thu Jul 24 10:43:41 2014 UTC
@@ -10,7 +10,7 @@
var new_promise;
function listener(event, exec_state, event_data, data) {
- if (event != Debug.DebugEvent.PromiseEvent) return;
+ if (!(event_data instanceof debug.NewPromiseEvent)) return;
try {
assertTrue(event_data.resolver().isFunction());
assertEquals(resolver, event_data.resolver().value());
=======================================
--- /branches/bleeding_edge/tools/generate-runtime-tests.py Wed Jul 23
07:33:47 2014 UTC
+++ /branches/bleeding_edge/tools/generate-runtime-tests.py Thu Jul 24
10:43:41 2014 UTC
@@ -51,7 +51,7 @@
EXPECTED_FUZZABLE_COUNT = 335
EXPECTED_CCTEST_COUNT = 8
EXPECTED_UNKNOWN_COUNT = 4
-EXPECTED_BUILTINS_COUNT = 813
+EXPECTED_BUILTINS_COUNT = 815
# Don't call these at all.
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.