restore persistent dtor
authordcarney@chromium.org <dcarney@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 10 Sep 2013 09:24:53 +0000 (09:24 +0000)
committerdcarney@chromium.org <dcarney@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 10 Sep 2013 09:24:53 +0000 (09:24 +0000)
R=svenpanne@chromium.org
BUG=

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

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16606 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

include/v8.h
test/cctest/test-api.cc

index 88c81ae..5410334 100644 (file)
@@ -544,6 +544,14 @@ template <class T, class M> class Persistent {
     Copy(that);
     return *this;
   }
+  /**
+   * The destructor will dispose the Persistent based on the
+   * kResetInDestructor flags in the traits class.  Since not calling dispose
+   * can result in a memory leak, it is recommended to always set this flag.
+   */
+  V8_INLINE(~Persistent()) {
+    if (M::kResetInDestructor) Reset();
+  }
 
   /**
    * If non-empty, destroy the underlying storage cell
index aaac486..19f3309 100644 (file)
@@ -12700,7 +12700,7 @@ TEST(CopyablePersistent) {
     CHECK_EQ(initial_handles + 3, globals->global_handles_count());
   }
   // Verify autodispose
-//  CHECK_EQ(initial_handles, globals->global_handles_count());
+  CHECK_EQ(initial_handles, globals->global_handles_count());
 }