OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 | 303 |
304 static int NumberOfWeakCalls = 0; | 304 static int NumberOfWeakCalls = 0; |
305 static void WeakPointerCallback(v8::Isolate* isolate, | 305 static void WeakPointerCallback(v8::Isolate* isolate, |
306 v8::Persistent<v8::Value>* handle, | 306 v8::Persistent<v8::Value>* handle, |
307 void* id) { | 307 void* id) { |
308 ASSERT(id == reinterpret_cast<void*>(1234)); | 308 ASSERT(id == reinterpret_cast<void*>(1234)); |
309 NumberOfWeakCalls++; | 309 NumberOfWeakCalls++; |
310 handle->Dispose(isolate); | 310 handle->Dispose(isolate); |
311 } | 311 } |
312 | 312 |
| 313 |
313 TEST(ObjectGroups) { | 314 TEST(ObjectGroups) { |
314 FLAG_incremental_marking = false; | 315 FLAG_incremental_marking = false; |
315 CcTest::InitializeVM(); | 316 CcTest::InitializeVM(); |
316 GlobalHandles* global_handles = Isolate::Current()->global_handles(); | 317 GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
317 | 318 |
318 NumberOfWeakCalls = 0; | 319 NumberOfWeakCalls = 0; |
319 v8::HandleScope handle_scope(CcTest::isolate()); | 320 v8::HandleScope handle_scope(CcTest::isolate()); |
320 | 321 |
321 Handle<Object> g1s1 = | 322 Handle<Object> g1s1 = |
322 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); | 323 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 if (sizeof(initial_memory) == 8) { // 64-bit. | 554 if (sizeof(initial_memory) == 8) { // 64-bit. |
554 if (v8::internal::Snapshot::IsEnabled()) { | 555 if (v8::internal::Snapshot::IsEnabled()) { |
555 CHECK_LE(delta, 4000 * 1024); | 556 CHECK_LE(delta, 4000 * 1024); |
556 } else { | 557 } else { |
557 CHECK_LE(delta, 4500 * 1024); | 558 CHECK_LE(delta, 4500 * 1024); |
558 } | 559 } |
559 } else { // 32-bit. | 560 } else { // 32-bit. |
560 if (v8::internal::Snapshot::IsEnabled()) { | 561 if (v8::internal::Snapshot::IsEnabled()) { |
561 CHECK_LE(delta, 3100 * 1024); | 562 CHECK_LE(delta, 3100 * 1024); |
562 } else { | 563 } else { |
563 CHECK_LE(delta, 3400 * 1024); | 564 CHECK_LE(delta, 3450 * 1024); |
564 } | 565 } |
565 } | 566 } |
566 } | 567 } |
567 } | 568 } |
568 | 569 |
| 570 |
| 571 intptr_t ShortLivingIsolate() { |
| 572 v8::Isolate* isolate = v8::Isolate::New(); |
| 573 { v8::Isolate::Scope isolate_scope(isolate); |
| 574 v8::Locker lock(isolate); |
| 575 v8::HandleScope handle_scope; |
| 576 v8::Local<v8::Context> context = v8::Context::New(isolate); |
| 577 CHECK(!context.IsEmpty()); |
| 578 } |
| 579 isolate->Dispose(); |
| 580 return MemoryInUse(); |
| 581 } |
| 582 |
| 583 |
| 584 TEST(RegressJoinThreadsOnIsolateDeinit) { |
| 585 intptr_t size_limit = ShortLivingIsolate() * 2; |
| 586 for (int i = 0; i < 10; i++) { |
| 587 CHECK_GT(size_limit, ShortLivingIsolate()); |
| 588 } |
| 589 } |
| 590 |
569 #endif // __linux__ and !USE_SIMULATOR | 591 #endif // __linux__ and !USE_SIMULATOR |
OLD | NEW |