Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: test/cctest/test-lockers.cc

Issue 18037002: Clean up the usage of V8_TARGET_ARCH_${arch} and V8_HOST_ARCH_${arch} (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « test/cctest/test-hashing.cc ('k') | test/cctest/test-macro-assembler-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2007-2011 the V8 project authors. All rights reserved. 1 // Copyright 2007-2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 threads[i]->Join(); 200 threads[i]->Join();
201 } 201 }
202 for (int i = 0; i < threads.length(); i++) { 202 for (int i = 0; i < threads.length(); i++) {
203 delete threads[i]; 203 delete threads[i];
204 } 204 }
205 } 205 }
206 206
207 207
208 // Run many threads all locking on the same isolate 208 // Run many threads all locking on the same isolate
209 TEST(IsolateLockingStress) { 209 TEST(IsolateLockingStress) {
210 #ifdef V8_TARGET_ARCH_MIPS 210 #if V8_TARGET_ARCH_MIPS
211 const int kNThreads = 50; 211 const int kNThreads = 50;
212 #else 212 #else
213 const int kNThreads = 100; 213 const int kNThreads = 100;
214 #endif 214 #endif
215 i::List<JoinableThread*> threads(kNThreads); 215 i::List<JoinableThread*> threads(kNThreads);
216 v8::Isolate* isolate = v8::Isolate::New(); 216 v8::Isolate* isolate = v8::Isolate::New();
217 for (int i = 0; i < kNThreads; i++) { 217 for (int i = 0; i < kNThreads; i++) {
218 threads.Add(new IsolateLockingThreadWithLocalContext(isolate)); 218 threads.Add(new IsolateLockingThreadWithLocalContext(isolate));
219 } 219 }
220 StartJoinAndDeleteThreads(threads); 220 StartJoinAndDeleteThreads(threads);
(...skipping 16 matching lines...) Expand all
237 CHECK_EQ(isolate, v8::internal::Isolate::Current()); 237 CHECK_EQ(isolate, v8::internal::Isolate::Current());
238 CalcFibAndCheck(); 238 CalcFibAndCheck();
239 } 239 }
240 isolate->Dispose(); 240 isolate->Dispose();
241 } 241 }
242 private: 242 private:
243 }; 243 };
244 244
245 // Run many threads each accessing its own isolate without locking 245 // Run many threads each accessing its own isolate without locking
246 TEST(MultithreadedParallelIsolates) { 246 TEST(MultithreadedParallelIsolates) {
247 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) 247 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS
248 const int kNThreads = 10; 248 const int kNThreads = 10;
249 #else 249 #else
250 const int kNThreads = 50; 250 const int kNThreads = 50;
251 #endif 251 #endif
252 i::List<JoinableThread*> threads(kNThreads); 252 i::List<JoinableThread*> threads(kNThreads);
253 for (int i = 0; i < kNThreads; i++) { 253 for (int i = 0; i < kNThreads; i++) {
254 threads.Add(new IsolateNonlockingThread()); 254 threads.Add(new IsolateNonlockingThread());
255 } 255 }
256 StartJoinAndDeleteThreads(threads); 256 StartJoinAndDeleteThreads(threads);
257 } 257 }
(...skipping 17 matching lines...) Expand all
275 v8::Locker another_lock(isolate_); 275 v8::Locker another_lock(isolate_);
276 CalcFibAndCheck(); 276 CalcFibAndCheck();
277 } 277 }
278 } 278 }
279 private: 279 private:
280 v8::Isolate* isolate_; 280 v8::Isolate* isolate_;
281 }; 281 };
282 282
283 // Run many threads with nested locks 283 // Run many threads with nested locks
284 TEST(IsolateNestedLocking) { 284 TEST(IsolateNestedLocking) {
285 #ifdef V8_TARGET_ARCH_MIPS 285 #if V8_TARGET_ARCH_MIPS
286 const int kNThreads = 50; 286 const int kNThreads = 50;
287 #else 287 #else
288 const int kNThreads = 100; 288 const int kNThreads = 100;
289 #endif 289 #endif
290 v8::Isolate* isolate = v8::Isolate::New(); 290 v8::Isolate* isolate = v8::Isolate::New();
291 i::List<JoinableThread*> threads(kNThreads); 291 i::List<JoinableThread*> threads(kNThreads);
292 for (int i = 0; i < kNThreads; i++) { 292 for (int i = 0; i < kNThreads; i++) {
293 threads.Add(new IsolateNestedLockingThread(isolate)); 293 threads.Add(new IsolateNestedLockingThread(isolate));
294 } 294 }
295 StartJoinAndDeleteThreads(threads); 295 StartJoinAndDeleteThreads(threads);
(...skipping 20 matching lines...) Expand all
316 CalcFibAndCheck(); 316 CalcFibAndCheck();
317 threadB.Join(); 317 threadB.Join();
318 } 318 }
319 private: 319 private:
320 v8::Isolate* isolate1_; 320 v8::Isolate* isolate1_;
321 v8::Isolate* isolate2_; 321 v8::Isolate* isolate2_;
322 }; 322 };
323 323
324 // Run parallel threads that lock and access different isolates in parallel 324 // Run parallel threads that lock and access different isolates in parallel
325 TEST(SeparateIsolatesLocksNonexclusive) { 325 TEST(SeparateIsolatesLocksNonexclusive) {
326 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) 326 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS
327 const int kNThreads = 50; 327 const int kNThreads = 50;
328 #else 328 #else
329 const int kNThreads = 100; 329 const int kNThreads = 100;
330 #endif 330 #endif
331 v8::Isolate* isolate1 = v8::Isolate::New(); 331 v8::Isolate* isolate1 = v8::Isolate::New();
332 v8::Isolate* isolate2 = v8::Isolate::New(); 332 v8::Isolate* isolate2 = v8::Isolate::New();
333 i::List<JoinableThread*> threads(kNThreads); 333 i::List<JoinableThread*> threads(kNThreads);
334 for (int i = 0; i < kNThreads; i++) { 334 for (int i = 0; i < kNThreads; i++) {
335 threads.Add(new SeparateIsolatesLocksNonexclusiveThread(isolate1, 335 threads.Add(new SeparateIsolatesLocksNonexclusiveThread(isolate1,
336 isolate2)); 336 isolate2));
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 CalcFibAndCheck(); 392 CalcFibAndCheck();
393 } 393 }
394 } 394 }
395 395
396 private: 396 private:
397 v8::Isolate* isolate_; 397 v8::Isolate* isolate_;
398 }; 398 };
399 399
400 // Use unlocker inside of a Locker, multiple threads. 400 // Use unlocker inside of a Locker, multiple threads.
401 TEST(LockerUnlocker) { 401 TEST(LockerUnlocker) {
402 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) 402 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS
403 const int kNThreads = 50; 403 const int kNThreads = 50;
404 #else 404 #else
405 const int kNThreads = 100; 405 const int kNThreads = 100;
406 #endif 406 #endif
407 i::List<JoinableThread*> threads(kNThreads); 407 i::List<JoinableThread*> threads(kNThreads);
408 v8::Isolate* isolate = v8::Isolate::New(); 408 v8::Isolate* isolate = v8::Isolate::New();
409 for (int i = 0; i < kNThreads; i++) { 409 for (int i = 0; i < kNThreads; i++) {
410 threads.Add(new LockerUnlockerThread(isolate)); 410 threads.Add(new LockerUnlockerThread(isolate));
411 } 411 }
412 StartJoinAndDeleteThreads(threads); 412 StartJoinAndDeleteThreads(threads);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 CalcFibAndCheck(); 445 CalcFibAndCheck();
446 } 446 }
447 } 447 }
448 448
449 private: 449 private:
450 v8::Isolate* isolate_; 450 v8::Isolate* isolate_;
451 }; 451 };
452 452
453 // Use Unlocker inside two Lockers. 453 // Use Unlocker inside two Lockers.
454 TEST(LockTwiceAndUnlock) { 454 TEST(LockTwiceAndUnlock) {
455 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) 455 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS
456 const int kNThreads = 50; 456 const int kNThreads = 50;
457 #else 457 #else
458 const int kNThreads = 100; 458 const int kNThreads = 100;
459 #endif 459 #endif
460 i::List<JoinableThread*> threads(kNThreads); 460 i::List<JoinableThread*> threads(kNThreads);
461 v8::Isolate* isolate = v8::Isolate::New(); 461 v8::Isolate* isolate = v8::Isolate::New();
462 for (int i = 0; i < kNThreads; i++) { 462 for (int i = 0; i < kNThreads; i++) {
463 threads.Add(new LockTwiceAndUnlockThread(isolate)); 463 threads.Add(new LockTwiceAndUnlockThread(isolate));
464 } 464 }
465 StartJoinAndDeleteThreads(threads); 465 StartJoinAndDeleteThreads(threads);
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 } 566 }
567 } 567 }
568 568
569 private: 569 private:
570 v8::Isolate* isolate_; 570 v8::Isolate* isolate_;
571 v8::Persistent<v8::Context> context_; 571 v8::Persistent<v8::Context> context_;
572 }; 572 };
573 573
574 // Locker inside an Unlocker inside a Locker. 574 // Locker inside an Unlocker inside a Locker.
575 TEST(LockUnlockLockMultithreaded) { 575 TEST(LockUnlockLockMultithreaded) {
576 #ifdef V8_TARGET_ARCH_MIPS 576 #if V8_TARGET_ARCH_MIPS
577 const int kNThreads = 50; 577 const int kNThreads = 50;
578 #else 578 #else
579 const int kNThreads = 100; 579 const int kNThreads = 100;
580 #endif 580 #endif
581 v8::Isolate* isolate = v8::Isolate::New(); 581 v8::Isolate* isolate = v8::Isolate::New();
582 i::List<JoinableThread*> threads(kNThreads); 582 i::List<JoinableThread*> threads(kNThreads);
583 { 583 {
584 v8::Locker locker_(isolate); 584 v8::Locker locker_(isolate);
585 v8::Isolate::Scope isolate_scope(isolate); 585 v8::Isolate::Scope isolate_scope(isolate);
586 v8::HandleScope handle_scope(isolate); 586 v8::HandleScope handle_scope(isolate);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 } 621 }
622 } 622 }
623 } 623 }
624 624
625 private: 625 private:
626 v8::Persistent<v8::Context> context_; 626 v8::Persistent<v8::Context> context_;
627 }; 627 };
628 628
629 // Locker inside an Unlocker inside a Locker for default isolate. 629 // Locker inside an Unlocker inside a Locker for default isolate.
630 TEST(LockUnlockLockDefaultIsolateMultithreaded) { 630 TEST(LockUnlockLockDefaultIsolateMultithreaded) {
631 #ifdef V8_TARGET_ARCH_MIPS 631 #if V8_TARGET_ARCH_MIPS
632 const int kNThreads = 50; 632 const int kNThreads = 50;
633 #else 633 #else
634 const int kNThreads = 100; 634 const int kNThreads = 100;
635 #endif 635 #endif
636 Local<v8::Context> context; 636 Local<v8::Context> context;
637 i::List<JoinableThread*> threads(kNThreads); 637 i::List<JoinableThread*> threads(kNThreads);
638 { 638 {
639 v8::Locker locker_(CcTest::default_isolate()); 639 v8::Locker locker_(CcTest::default_isolate());
640 v8::HandleScope handle_scope(CcTest::default_isolate()); 640 v8::HandleScope handle_scope(CcTest::default_isolate());
641 context = v8::Context::New(CcTest::default_isolate()); 641 context = v8::Context::New(CcTest::default_isolate());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 isolate->Dispose(); 692 isolate->Dispose();
693 } 693 }
694 private: 694 private:
695 int count_; 695 int count_;
696 const char** extension_names_; 696 const char** extension_names_;
697 }; 697 };
698 698
699 // Test installing extensions in separate isolates concurrently. 699 // Test installing extensions in separate isolates concurrently.
700 // http://code.google.com/p/v8/issues/detail?id=1821 700 // http://code.google.com/p/v8/issues/detail?id=1821
701 TEST(ExtensionsRegistration) { 701 TEST(ExtensionsRegistration) {
702 #if defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_MIPS) 702 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS
703 const int kNThreads = 10; 703 const int kNThreads = 10;
704 #else 704 #else
705 const int kNThreads = 40; 705 const int kNThreads = 40;
706 #endif 706 #endif
707 v8::RegisterExtension(new v8::Extension("test0", 707 v8::RegisterExtension(new v8::Extension("test0",
708 kSimpleExtensionSource)); 708 kSimpleExtensionSource));
709 v8::RegisterExtension(new v8::Extension("test1", 709 v8::RegisterExtension(new v8::Extension("test1",
710 kSimpleExtensionSource)); 710 kSimpleExtensionSource));
711 v8::RegisterExtension(new v8::Extension("test2", 711 v8::RegisterExtension(new v8::Extension("test2",
712 kSimpleExtensionSource)); 712 kSimpleExtensionSource));
713 v8::RegisterExtension(new v8::Extension("test3", 713 v8::RegisterExtension(new v8::Extension("test3",
714 kSimpleExtensionSource)); 714 kSimpleExtensionSource));
715 v8::RegisterExtension(new v8::Extension("test4", 715 v8::RegisterExtension(new v8::Extension("test4",
716 kSimpleExtensionSource)); 716 kSimpleExtensionSource));
717 v8::RegisterExtension(new v8::Extension("test5", 717 v8::RegisterExtension(new v8::Extension("test5",
718 kSimpleExtensionSource)); 718 kSimpleExtensionSource));
719 v8::RegisterExtension(new v8::Extension("test6", 719 v8::RegisterExtension(new v8::Extension("test6",
720 kSimpleExtensionSource)); 720 kSimpleExtensionSource));
721 v8::RegisterExtension(new v8::Extension("test7", 721 v8::RegisterExtension(new v8::Extension("test7",
722 kSimpleExtensionSource)); 722 kSimpleExtensionSource));
723 const char* extension_names[] = { "test0", "test1", 723 const char* extension_names[] = { "test0", "test1",
724 "test2", "test3", "test4", 724 "test2", "test3", "test4",
725 "test5", "test6", "test7" }; 725 "test5", "test6", "test7" };
726 i::List<JoinableThread*> threads(kNThreads); 726 i::List<JoinableThread*> threads(kNThreads);
727 for (int i = 0; i < kNThreads; i++) { 727 for (int i = 0; i < kNThreads; i++) {
728 threads.Add(new IsolateGenesisThread(8, extension_names)); 728 threads.Add(new IsolateGenesisThread(8, extension_names));
729 } 729 }
730 StartJoinAndDeleteThreads(threads); 730 StartJoinAndDeleteThreads(threads);
731 } 731 }
OLDNEW
« no previous file with comments | « test/cctest/test-hashing.cc ('k') | test/cctest/test-macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698