Commit 63fb5381 authored by yangguo@chromium.org's avatar yangguo@chromium.org

Introduce more debug events for promises.

BUG=v8:3093
LOG=Y
R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/393283007

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22591 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 55d8d2f0
...@@ -1202,9 +1202,15 @@ function MakeScriptObject_(script, include_source) { ...@@ -1202,9 +1202,15 @@ function MakeScriptObject_(script, include_source) {
function MakePromiseEvent(event_data) { function MakePromiseEvent(event_data) {
if (event_data.type = "new Promise") { if (event_data.type == "new") {
return new NewPromiseEvent(event_data); 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);
}
} }
...@@ -1227,6 +1233,40 @@ NewPromiseEvent.prototype.resolver = function() { ...@@ -1227,6 +1233,40 @@ NewPromiseEvent.prototype.resolver = function() {
} }
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) { function MakeAsyncTaskEvent(event_data) {
return new AsyncTaskEvent(event_data); return new AsyncTaskEvent(event_data);
} }
......
...@@ -40,7 +40,7 @@ var lastMicrotaskId = 0; ...@@ -40,7 +40,7 @@ var lastMicrotaskId = 0;
throw MakeTypeError('resolver_not_a_function', [resolver]); throw MakeTypeError('resolver_not_a_function', [resolver]);
var promise = PromiseInit(this); var promise = PromiseInit(this);
if (DEBUG_IS_ACTIVE) { if (DEBUG_IS_ACTIVE) {
%DebugPromiseEvent({ type : "new Promise", %DebugPromiseEvent({ type : "new",
promise: this, promise: this,
resolver: resolver }); resolver: resolver });
} }
...@@ -62,6 +62,12 @@ var lastMicrotaskId = 0; ...@@ -62,6 +62,12 @@ var lastMicrotaskId = 0;
SET_PRIVATE(promise, promiseValue, value); SET_PRIVATE(promise, promiseValue, value);
SET_PRIVATE(promise, promiseOnResolve, onResolve); SET_PRIVATE(promise, promiseOnResolve, onResolve);
SET_PRIVATE(promise, promiseOnReject, onReject); SET_PRIVATE(promise, promiseOnReject, onReject);
if (DEBUG_IS_ACTIVE && status !== 0) {
%DebugPromiseEvent({ type: "update",
promise: promise,
status: status,
value: value });
}
return promise; return promise;
} }
...@@ -234,6 +240,11 @@ var lastMicrotaskId = 0; ...@@ -234,6 +240,11 @@ var lastMicrotaskId = 0;
-1); -1);
break; break;
} }
if (DEBUG_IS_ACTIVE) {
%DebugPromiseEvent({ type: "chain",
promise: deferred.promise,
parentPromise: this });
}
return deferred.promise; return deferred.promise;
} }
......
...@@ -10,7 +10,7 @@ var exception = null; ...@@ -10,7 +10,7 @@ var exception = null;
var new_promise; var new_promise;
function listener(event, exec_state, event_data, data) { function listener(event, exec_state, event_data, data) {
if (event != Debug.DebugEvent.PromiseEvent) return; if (!(event_data instanceof debug.NewPromiseEvent)) return;
try { try {
assertTrue(event_data.resolver().isFunction()); assertTrue(event_data.resolver().isFunction());
assertEquals(resolver, event_data.resolver().value()); assertEquals(resolver, event_data.resolver().value());
......
...@@ -51,7 +51,7 @@ EXPECTED_FUNCTION_COUNT = 420 ...@@ -51,7 +51,7 @@ EXPECTED_FUNCTION_COUNT = 420
EXPECTED_FUZZABLE_COUNT = 335 EXPECTED_FUZZABLE_COUNT = 335
EXPECTED_CCTEST_COUNT = 8 EXPECTED_CCTEST_COUNT = 8
EXPECTED_UNKNOWN_COUNT = 4 EXPECTED_UNKNOWN_COUNT = 4
EXPECTED_BUILTINS_COUNT = 813 EXPECTED_BUILTINS_COUNT = 815
# Don't call these at all. # Don't call these at all.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment