Reviewers: Dmitry Lomov (chromium),

Description:
Drop thenable coercion cache

[email protected]
BUG=372788

Please review this at https://codereview.chromium.org/281753004/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+8, -17 lines):
  M src/promise.js


Index: src/promise.js
diff --git a/src/promise.js b/src/promise.js
index fa650eaf0e983d31d988dc7093d11398ea515091..f4c60d66cacc9538b8aa7d7133481251b3833b0e 100644
--- a/src/promise.js
+++ b/src/promise.js
@@ -204,31 +204,22 @@ function PromiseThen(onResolve, onReject) {
   );
 }

-PromiseCoerce.table = new $WeakMap;
-
 function PromiseCoerce(constructor, x) {
   if (!IsPromise(x) && IS_SPEC_OBJECT(x)) {
     var then;
     try {
       then = x.then;
     } catch(r) {
-      var promise = %_CallFunction(constructor, r, PromiseRejected);
-      PromiseCoerce.table.set(x, promise);
-      return promise;
+      return %_CallFunction(constructor, r, PromiseRejected);
     }
-    if (typeof then === 'function') {
-      if (PromiseCoerce.table.has(x)) {
-        return PromiseCoerce.table.get(x);
-      } else {
-        var deferred = %_CallFunction(constructor, PromiseDeferred);
-        PromiseCoerce.table.set(x, deferred.promise);
-        try {
-          %_CallFunction(x, deferred.resolve, deferred.reject, then);
-        } catch(r) {
-          deferred.reject(r);
-        }
-        return deferred.promise;
+    if (IS_SPEC_FUNCTION(then)) {
+      var deferred = %_CallFunction(constructor, PromiseDeferred);
+      try {
+        %_CallFunction(x, deferred.resolve, deferred.reject, then);
+      } catch(r) {
+        deferred.reject(r);
       }
+      return deferred.promise;
     }
   }
   return x;


--
--
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