Index: test/cctest/test-lockers.cc |
diff --git a/test/cctest/test-lockers.cc b/test/cctest/test-lockers.cc |
index 7360da52b1fdb067812b166d215cb386f22f25cf..d7b3506825f89a6ad75684d5a45f2e4624c79a7c 100644 |
--- a/test/cctest/test-lockers.cc |
+++ b/test/cctest/test-lockers.cc |
@@ -639,3 +639,57 @@ TEST(Regress1433) { |
isolate->Dispose(); |
} |
} |
+ |
+ |
+static const char* kSimpleExtensionSource = |
+ "(function Foo() {" |
+ " return 4;" |
+ "})() "; |
+ |
+class IsolateGenesisThread : public JoinableThread { |
+ public: |
+ IsolateGenesisThread(int count, const char* extension_names[]) |
+ : JoinableThread("IsolateGenesisThread"), |
+ count_(count), |
+ extension_names_(extension_names) |
+ {} |
+ |
+ virtual void Run() { |
+ v8::Isolate* isolate = v8::Isolate::New(); |
+ v8::Isolate::Scope isolate_scope(isolate); |
+ v8::ExtensionConfiguration extensions(count_, extension_names_); |
+ v8::Persistent<v8::Context> context = v8::Context::New(&extensions); |
+ context.Dispose(); |
Vitaly Repeshko
2011/11/15 18:14:17
Dispose the isolate too?
|
+ } |
+ private: |
+ int count_; |
+ const char** extension_names_; |
+}; |
+ |
+TEST(ExtensionsRegistration) { |
Vitaly Repeshko
2011/11/15 18:14:17
Please describe what this tests and add a link to
|
+ const int kNThreads = 40; |
+ v8::RegisterExtension(new v8::Extension("test0", |
+ kSimpleExtensionSource)); |
+ v8::RegisterExtension(new v8::Extension("test1", |
+ kSimpleExtensionSource)); |
+ v8::RegisterExtension(new v8::Extension("test2", |
+ kSimpleExtensionSource)); |
+ v8::RegisterExtension(new v8::Extension("test3", |
+ kSimpleExtensionSource)); |
+ v8::RegisterExtension(new v8::Extension("test4", |
+ kSimpleExtensionSource)); |
+ v8::RegisterExtension(new v8::Extension("test5", |
+ kSimpleExtensionSource)); |
+ v8::RegisterExtension(new v8::Extension("test6", |
+ kSimpleExtensionSource)); |
+ v8::RegisterExtension(new v8::Extension("test7", |
+ kSimpleExtensionSource)); |
+ const char* extension_names[] = { "test0", "test1", |
+ "test2", "test3", "test4", |
+ "test5", "test6", "test7" }; |
+ i::List<JoinableThread*> threads(kNThreads); |
+ for (int i = 0; i < kNThreads; i++) { |
+ threads.Add(new IsolateGenesisThread(8, extension_names)); |
+ } |
+ StartJoinAndDeleteThreads(threads); |
+} |