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.

Reply via email to