Index: test/cctest/test-lockers.cc |
diff --git a/test/cctest/test-lockers.cc b/test/cctest/test-lockers.cc |
index a54390bf4e92a6cd133aa22cdd67581e2b7113a5..1259f9e0a47dc98605d417ea58d2b7eeb164e845 100644 |
--- a/test/cctest/test-lockers.cc |
+++ b/test/cctest/test-lockers.cc |
@@ -61,7 +61,13 @@ class KangarooThread : public v8::internal::Thread { |
KangarooThread(v8::Isolate* isolate, |
v8::Handle<v8::Context> context) |
: Thread("KangarooThread"), |
- isolate_(isolate), context_(context) { |
+ isolate_(isolate), |
+ context_(v8::Persistent<v8::Context>::New(isolate, context)) { |
+ } |
+ |
+ virtual ~KangarooThread() { |
+ context_.Dispose(isolate_); |
+ context_.Clear(); |
} |
void Run() { |
@@ -342,7 +348,11 @@ class LockIsolateAndCalculateFibSharedContextThread : public JoinableThread { |
v8::Isolate* isolate, v8::Handle<v8::Context> context) |
: JoinableThread("LockIsolateAndCalculateFibThread"), |
isolate_(isolate), |
- context_(context) { |
+ context_(v8::Persistent<v8::Context>::New(isolate, context)) { |
+ } |
+ virtual ~LockIsolateAndCalculateFibSharedContextThread() { |
+ context_.Dispose(isolate_); |
+ context_.Clear(); |
} |
virtual void Run() { |
@@ -531,7 +541,12 @@ class LockUnlockLockThread : public JoinableThread { |
LockUnlockLockThread(v8::Isolate* isolate, v8::Handle<v8::Context> context) |
: JoinableThread("LockUnlockLockThread"), |
isolate_(isolate), |
- context_(context) { |
+ context_(v8::Persistent<v8::Context>::New(isolate, context)) { |
+ } |
+ |
+ virtual ~LockUnlockLockThread() { |
+ context_.Dispose(isolate_); |
+ context_.Clear(); |
} |
virtual void Run() { |
@@ -591,8 +606,14 @@ TEST(LockUnlockLockMultithreaded) { |
class LockUnlockLockDefaultIsolateThread : public JoinableThread { |
public: |
explicit LockUnlockLockDefaultIsolateThread(v8::Handle<v8::Context> context) |
- : JoinableThread("LockUnlockLockDefaultIsolateThread"), |
- context_(context) { |
+ : JoinableThread("LockUnlockLockDefaultIsolateThread"), |
+ context_(v8::Persistent<v8::Context>::New(CcTest::default_isolate(), |
+ context)) { |
+ } |
+ |
+ virtual ~LockUnlockLockDefaultIsolateThread() { |
+ context_.Dispose(CcTest::default_isolate()); |
+ context_.Clear(); |
} |
virtual void Run() { |