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

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

Issue 167423004: Add filler at the new space top when forcing scavenge. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remove PerformScavenge Created 6 years, 10 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
OLDNEW
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 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 h1 = global_handles->Create(*i); 426 h1 = global_handles->Create(*i);
427 h2 = global_handles->Create(*u); 427 h2 = global_handles->Create(*u);
428 } 428 }
429 429
430 std::pair<Handle<Object>*, int> handle_and_id(&h2, 1234); 430 std::pair<Handle<Object>*, int> handle_and_id(&h2, 1234);
431 GlobalHandles::MakeWeak(h2.location(), 431 GlobalHandles::MakeWeak(h2.location(),
432 reinterpret_cast<void*>(&handle_and_id), 432 reinterpret_cast<void*>(&handle_and_id),
433 &TestWeakGlobalHandleCallback); 433 &TestWeakGlobalHandleCallback);
434 434
435 // Scavenge treats weak pointers as normal roots. 435 // Scavenge treats weak pointers as normal roots.
436 heap->PerformScavenge(); 436 heap->CollectGarbage(NEW_SPACE);
437 437
438 CHECK((*h1)->IsString()); 438 CHECK((*h1)->IsString());
439 CHECK((*h2)->IsHeapNumber()); 439 CHECK((*h2)->IsHeapNumber());
440 440
441 CHECK(!WeakPointerCleared); 441 CHECK(!WeakPointerCleared);
442 CHECK(!global_handles->IsNearDeath(h2.location())); 442 CHECK(!global_handles->IsNearDeath(h2.location()));
443 CHECK(!global_handles->IsNearDeath(h1.location())); 443 CHECK(!global_handles->IsNearDeath(h1.location()));
444 444
445 GlobalHandles::Destroy(h1.location()); 445 GlobalHandles::Destroy(h1.location());
446 GlobalHandles::Destroy(h2.location()); 446 GlobalHandles::Destroy(h2.location());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 Handle<Object> i = factory->NewStringFromAscii(CStrVector("fisk")); 511 Handle<Object> i = factory->NewStringFromAscii(CStrVector("fisk"));
512 h = global_handles->Create(*i); 512 h = global_handles->Create(*i);
513 } 513 }
514 514
515 std::pair<Handle<Object>*, int> handle_and_id(&h, 1234); 515 std::pair<Handle<Object>*, int> handle_and_id(&h, 1234);
516 GlobalHandles::MakeWeak(h.location(), 516 GlobalHandles::MakeWeak(h.location(),
517 reinterpret_cast<void*>(&handle_and_id), 517 reinterpret_cast<void*>(&handle_and_id),
518 &TestWeakGlobalHandleCallback); 518 &TestWeakGlobalHandleCallback);
519 519
520 // Scanvenge does not recognize weak reference. 520 // Scanvenge does not recognize weak reference.
521 heap->PerformScavenge(); 521 heap->CollectGarbage(NEW_SPACE);
522 522
523 CHECK(!WeakPointerCleared); 523 CHECK(!WeakPointerCleared);
524 524
525 // Mark-compact treats weak reference properly. 525 // Mark-compact treats weak reference properly.
526 heap->CollectGarbage(OLD_POINTER_SPACE); 526 heap->CollectGarbage(OLD_POINTER_SPACE);
527 527
528 CHECK(WeakPointerCleared); 528 CHECK(WeakPointerCleared);
529 } 529 }
530 530
531 531
(...skipping 897 matching lines...) Expand 10 before | Expand all | Expand 10 after
1429 CompileRun("f4()"); 1429 CompileRun("f4()");
1430 CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i])); 1430 CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i]));
1431 CompileRun("f5()"); 1431 CompileRun("f5()");
1432 CHECK_EQ(opt ? 5 : 0, CountOptimizedUserFunctions(ctx[i])); 1432 CHECK_EQ(opt ? 5 : 0, CountOptimizedUserFunctions(ctx[i]));
1433 1433
1434 // Remove function f1, and 1434 // Remove function f1, and
1435 CompileRun("f1=null"); 1435 CompileRun("f1=null");
1436 1436
1437 // Scavenge treats these references as strong. 1437 // Scavenge treats these references as strong.
1438 for (int j = 0; j < 10; j++) { 1438 for (int j = 0; j < 10; j++) {
1439 CcTest::heap()->PerformScavenge(); 1439 CcTest::heap()->CollectGarbage(NEW_SPACE);
1440 CHECK_EQ(opt ? 5 : 0, CountOptimizedUserFunctions(ctx[i])); 1440 CHECK_EQ(opt ? 5 : 0, CountOptimizedUserFunctions(ctx[i]));
1441 } 1441 }
1442 1442
1443 // Mark compact handles the weak references. 1443 // Mark compact handles the weak references.
1444 isolate->compilation_cache()->Clear(); 1444 isolate->compilation_cache()->Clear();
1445 heap->CollectAllGarbage(Heap::kNoGCFlags); 1445 heap->CollectAllGarbage(Heap::kNoGCFlags);
1446 CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i])); 1446 CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i]));
1447 1447
1448 // Get rid of f3 and f5 in the same way. 1448 // Get rid of f3 and f5 in the same way.
1449 CompileRun("f3=null"); 1449 CompileRun("f3=null");
1450 for (int j = 0; j < 10; j++) { 1450 for (int j = 0; j < 10; j++) {
1451 CcTest::heap()->PerformScavenge(); 1451 CcTest::heap()->CollectGarbage(NEW_SPACE);
1452 CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i])); 1452 CHECK_EQ(opt ? 4 : 0, CountOptimizedUserFunctions(ctx[i]));
1453 } 1453 }
1454 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags); 1454 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags);
1455 CHECK_EQ(opt ? 3 : 0, CountOptimizedUserFunctions(ctx[i])); 1455 CHECK_EQ(opt ? 3 : 0, CountOptimizedUserFunctions(ctx[i]));
1456 CompileRun("f5=null"); 1456 CompileRun("f5=null");
1457 for (int j = 0; j < 10; j++) { 1457 for (int j = 0; j < 10; j++) {
1458 CcTest::heap()->PerformScavenge(); 1458 CcTest::heap()->CollectGarbage(NEW_SPACE);
1459 CHECK_EQ(opt ? 3 : 0, CountOptimizedUserFunctions(ctx[i])); 1459 CHECK_EQ(opt ? 3 : 0, CountOptimizedUserFunctions(ctx[i]));
1460 } 1460 }
1461 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags); 1461 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags);
1462 CHECK_EQ(opt ? 2 : 0, CountOptimizedUserFunctions(ctx[i])); 1462 CHECK_EQ(opt ? 2 : 0, CountOptimizedUserFunctions(ctx[i]));
1463 1463
1464 ctx[i]->Exit(); 1464 ctx[i]->Exit();
1465 } 1465 }
1466 1466
1467 // Force compilation cache cleanup. 1467 // Force compilation cache cleanup.
1468 CcTest::heap()->NotifyContextDisposed(); 1468 CcTest::heap()->NotifyContextDisposed();
1469 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags); 1469 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags);
1470 1470
1471 // Dispose the native contexts one by one. 1471 // Dispose the native contexts one by one.
1472 for (int i = 0; i < kNumTestContexts; i++) { 1472 for (int i = 0; i < kNumTestContexts; i++) {
1473 // TODO(dcarney): is there a better way to do this? 1473 // TODO(dcarney): is there a better way to do this?
1474 i::Object** unsafe = reinterpret_cast<i::Object**>(*ctx[i]); 1474 i::Object** unsafe = reinterpret_cast<i::Object**>(*ctx[i]);
1475 *unsafe = CcTest::heap()->undefined_value(); 1475 *unsafe = CcTest::heap()->undefined_value();
1476 ctx[i].Clear(); 1476 ctx[i].Clear();
1477 1477
1478 // Scavenge treats these references as strong. 1478 // Scavenge treats these references as strong.
1479 for (int j = 0; j < 10; j++) { 1479 for (int j = 0; j < 10; j++) {
1480 CcTest::heap()->PerformScavenge(); 1480 CcTest::heap()->CollectGarbage(i::NEW_SPACE);
1481 CHECK_EQ(kNumTestContexts - i, CountNativeContexts()); 1481 CHECK_EQ(kNumTestContexts - i, CountNativeContexts());
1482 } 1482 }
1483 1483
1484 // Mark compact handles the weak references. 1484 // Mark compact handles the weak references.
1485 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags); 1485 CcTest::heap()->CollectAllGarbage(Heap::kNoGCFlags);
1486 CHECK_EQ(kNumTestContexts - i - 1, CountNativeContexts()); 1486 CHECK_EQ(kNumTestContexts - i - 1, CountNativeContexts());
1487 } 1487 }
1488 1488
1489 CHECK_EQ(0, CountNativeContexts()); 1489 CHECK_EQ(0, CountNativeContexts());
1490 } 1490 }
(...skipping 2190 matching lines...) Expand 10 before | Expand all | Expand 10 after
3681 code = scope.CloseAndEscape(Handle<Code>(bar->code())); 3681 code = scope.CloseAndEscape(Handle<Code>(bar->code()));
3682 } 3682 }
3683 3683
3684 // Now make sure that a gc should get rid of the function 3684 // Now make sure that a gc should get rid of the function
3685 for (int i = 0; i < 4; i++) { 3685 for (int i = 0; i < 4; i++) {
3686 heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); 3686 heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
3687 } 3687 }
3688 3688
3689 ASSERT(code->marked_for_deoptimization()); 3689 ASSERT(code->marked_for_deoptimization());
3690 } 3690 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698