Revision: 23401
Author:   [email protected]
Date:     Tue Aug 26 13:07:18 2014 UTC
Log:      Fix and re-enable test-api/InitializeAndDispose.

[email protected]
TEST=cctest/test-api/InitializeAndDispose

Review URL: https://codereview.chromium.org/504093002
https://code.google.com/p/v8/source/detail?r=23401

Modified:
 /branches/bleeding_edge/src/api.cc
 /branches/bleeding_edge/src/assembler.cc
 /branches/bleeding_edge/src/bootstrapper.cc
 /branches/bleeding_edge/src/compiler/instruction.cc
 /branches/bleeding_edge/src/elements.cc
 /branches/bleeding_edge/src/isolate.cc
 /branches/bleeding_edge/src/lithium.cc
 /branches/bleeding_edge/src/sampler.cc
 /branches/bleeding_edge/src/v8.cc
 /branches/bleeding_edge/test/cctest/cctest.status
 /branches/bleeding_edge/test/cctest/test-api.cc

=======================================
--- /branches/bleeding_edge/src/api.cc  Tue Aug 26 09:19:24 2014 UTC
+++ /branches/bleeding_edge/src/api.cc  Tue Aug 26 13:07:18 2014 UTC
@@ -413,6 +413,7 @@
     delete re;
     re = next;
   }
+  first_extension_ = NULL;
 }


=======================================
--- /branches/bleeding_edge/src/assembler.cc    Fri Aug 22 11:43:39 2014 UTC
+++ /branches/bleeding_edge/src/assembler.cc    Tue Aug 26 13:07:18 2014 UTC
@@ -937,8 +937,11 @@

 void ExternalReference::TearDownMathExpData() {
   delete[] math_exp_constants_array;
+  math_exp_constants_array = NULL;
   delete[] math_exp_log_table_array;
+  math_exp_log_table_array = NULL;
   delete math_exp_data_mutex;
+  math_exp_data_mutex = NULL;
 }


=======================================
--- /branches/bleeding_edge/src/bootstrapper.cc Tue Aug 26 09:19:24 2014 UTC
+++ /branches/bleeding_edge/src/bootstrapper.cc Tue Aug 26 13:07:18 2014 UTC
@@ -99,10 +99,15 @@

 void Bootstrapper::TearDownExtensions() {
   delete free_buffer_extension_;
+  free_buffer_extension_ = NULL;
   delete gc_extension_;
+  gc_extension_ = NULL;
   delete externalize_string_extension_;
+  externalize_string_extension_ = NULL;
   delete statistics_extension_;
+  statistics_extension_ = NULL;
   delete trigger_failure_extension_;
+  trigger_failure_extension_ = NULL;
 }


=======================================
--- /branches/bleeding_edge/src/compiler/instruction.cc Wed Aug 6 11:49:02 2014 UTC +++ /branches/bleeding_edge/src/compiler/instruction.cc Tue Aug 26 13:07:18 2014 UTC
@@ -75,6 +75,7 @@
 template <InstructionOperand::Kind kOperandKind, int kNumCachedOperands>
 void SubKindOperand<kOperandKind, kNumCachedOperands>::TearDownCache() {
   delete[] cache;
+  cache = NULL;
 }


=======================================
--- /branches/bleeding_edge/src/elements.cc     Thu Aug 21 09:34:47 2014 UTC
+++ /branches/bleeding_edge/src/elements.cc     Tue Aug 26 13:07:18 2014 UTC
@@ -120,7 +120,7 @@
 #undef ELEMENTS_TRAITS


-ElementsAccessor** ElementsAccessor::elements_accessors_;
+ElementsAccessor** ElementsAccessor::elements_accessors_ = NULL;


 static bool HasKey(Handle<FixedArray> array, Handle<Object> key_handle) {
@@ -1735,6 +1735,7 @@


 void ElementsAccessor::TearDown() {
+  if (elements_accessors_ == NULL) return;
#define ACCESSOR_DELETE(Class, Kind, Store) delete elements_accessors_[Kind];
   ELEMENTS_LIST(ACCESSOR_DELETE)
 #undef ACCESSOR_DELETE
=======================================
--- /branches/bleeding_edge/src/isolate.cc      Tue Aug 26 09:19:24 2014 UTC
+++ /branches/bleeding_edge/src/isolate.cc      Tue Aug 26 13:07:18 2014 UTC
@@ -1592,6 +1592,7 @@

 void Isolate::GlobalTearDown() {
   delete thread_data_table_;
+  thread_data_table_ = NULL;
 }


=======================================
--- /branches/bleeding_edge/src/lithium.cc      Wed Aug  6 17:48:31 2014 UTC
+++ /branches/bleeding_edge/src/lithium.cc      Tue Aug 26 13:07:18 2014 UTC
@@ -145,6 +145,7 @@
 template<LOperand::Kind kOperandKind, int kNumCachedOperands>
 void LSubKindOperand<kOperandKind, kNumCachedOperands>::TearDownCache() {
   delete[] cache;
+  cache = NULL;
 }


=======================================
--- /branches/bleeding_edge/src/sampler.cc      Mon Aug  4 11:34:54 2014 UTC
+++ /branches/bleeding_edge/src/sampler.cc      Tue Aug 26 13:07:18 2014 UTC
@@ -276,7 +276,7 @@
 class SignalHandler : public AllStatic {
  public:
   static void SetUp() { if (!mutex_) mutex_ = new base::Mutex(); }
-  static void TearDown() { delete mutex_; }
+  static void TearDown() { delete mutex_; mutex_ = NULL; }

   static void IncreaseSamplerCount() {
     base::LockGuard<base::Mutex> lock_guard(mutex_);
=======================================
--- /branches/bleeding_edge/src/v8.cc   Tue Aug 26 11:00:57 2014 UTC
+++ /branches/bleeding_edge/src/v8.cc   Tue Aug 26 13:07:18 2014 UTC
@@ -52,7 +52,6 @@
   ExternalReference::TearDownMathExpData();
   RegisteredExtension::UnregisterAll();
   Isolate::GlobalTearDown();
-
   Sampler::TearDown();
   FlagList::ResetAllFlags();  // Frees memory held by string arguments.
 }
=======================================
--- /branches/bleeding_edge/test/cctest/cctest.status Mon Aug 25 16:39:25 2014 UTC +++ /branches/bleeding_edge/test/cctest/cctest.status Tue Aug 26 13:07:18 2014 UTC
@@ -35,10 +35,6 @@
   # BUG(382): Weird test. Can't guarantee that it never times out.
   'test-api/ApplyInterruption': [PASS, TIMEOUT],

-  # TODO(mstarzinger): Fail gracefully on multiple V8::Dispose calls.
-  'test-api/InitializeAndDisposeOnce': [SKIP],
-  'test-api/InitializeAndDisposeMultiple': [SKIP],
-
   # These tests always fail.  They are here to test test.py.  If
   # they don't fail then test.py has failed.
   'test-serialize/TestThatAlwaysFails': [FAIL],
=======================================
--- /branches/bleeding_edge/test/cctest/test-api.cc Tue Aug 26 09:19:24 2014 UTC +++ /branches/bleeding_edge/test/cctest/test-api.cc Tue Aug 26 13:07:18 2014 UTC
@@ -130,19 +130,18 @@


 // Tests that call v8::V8::Dispose() cannot be threaded.
-TEST(InitializeAndDisposeOnce) {
+UNINITIALIZED_TEST(InitializeAndDisposeOnce) {
   CHECK(v8::V8::Initialize());
   CHECK(v8::V8::Dispose());
 }


 // Tests that call v8::V8::Dispose() cannot be threaded.
-TEST(InitializeAndDisposeMultiple) {
+UNINITIALIZED_TEST(InitializeAndDisposeMultiple) {
   for (int i = 0; i < 3; ++i) CHECK(v8::V8::Dispose());
   for (int i = 0; i < 3; ++i) CHECK(v8::V8::Initialize());
   for (int i = 0; i < 3; ++i) CHECK(v8::V8::Dispose());
-  // TODO(mstarzinger): This should fail gracefully instead of asserting.
-  // for (int i = 0; i < 3; ++i) CHECK(v8::V8::Initialize());
+  for (int i = 0; i < 3; ++i) CHECK(v8::V8::Initialize());
   for (int i = 0; i < 3; ++i) CHECK(v8::V8::Dispose());
 }

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