Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/globals.h" | 5 #include "platform/globals.h" |
| 6 | 6 |
| 7 #include "platform/assert.h" | 7 #include "platform/assert.h" |
| 8 #include "vm/become.h" | 8 #include "vm/become.h" |
| 9 #include "vm/dart_api_impl.h" | 9 #include "vm/dart_api_impl.h" |
| 10 #include "vm/globals.h" | 10 #include "vm/globals.h" |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 355 | 355 |
| 356 Become::ElementsForwardIdentity(before, after); | 356 Become::ElementsForwardIdentity(before, after); |
| 357 | 357 |
| 358 EXPECT(before_obj.raw() == after_obj.raw()); | 358 EXPECT(before_obj.raw() == after_obj.raw()); |
| 359 EXPECT(!after_obj.raw()->IsRemembered()); | 359 EXPECT(!after_obj.raw()->IsRemembered()); |
| 360 | 360 |
| 361 heap->CollectAllGarbage(); | 361 heap->CollectAllGarbage(); |
| 362 | 362 |
| 363 EXPECT(before_obj.raw() == after_obj.raw()); | 363 EXPECT(before_obj.raw() == after_obj.raw()); |
| 364 } | 364 } |
| 365 | 365 |
|
rmacnak
2017/06/19 19:29:00
Two lines between functions in cc files.
| |
| 366 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_DeadOldToNew) { | |
| 367 Isolate* isolate = Isolate::Current(); | |
| 368 Heap* heap = isolate->heap(); | |
| 369 | |
| 370 heap->CollectAllGarbage(); | |
| 371 intptr_t size_before = | |
| 372 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 373 | |
| 374 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 375 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 376 old.SetAt(0, neu); | |
| 377 old = Array::null(); | |
| 378 neu = Array::null(); | |
| 379 | |
| 380 heap->CollectAllGarbage(); | |
| 381 | |
| 382 intptr_t size_after = | |
| 383 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 384 | |
| 385 EXPECT(size_before == size_after); | |
| 386 } | |
| 387 | |
| 388 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_DeadNewToOld) { | |
| 389 Isolate* isolate = Isolate::Current(); | |
| 390 Heap* heap = isolate->heap(); | |
| 391 | |
| 392 heap->CollectAllGarbage(); | |
| 393 intptr_t size_before = | |
| 394 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 395 | |
| 396 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 397 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 398 neu.SetAt(0, old); | |
| 399 old = Array::null(); | |
| 400 neu = Array::null(); | |
| 401 | |
| 402 heap->CollectAllGarbage(); | |
| 403 | |
| 404 intptr_t size_after = | |
| 405 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 406 | |
| 407 EXPECT(size_before == size_after); | |
| 408 } | |
| 409 | |
| 410 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_DeadGenCycle) { | |
| 411 Isolate* isolate = Isolate::Current(); | |
| 412 Heap* heap = isolate->heap(); | |
| 413 | |
| 414 heap->CollectAllGarbage(); | |
| 415 intptr_t size_before = | |
| 416 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 417 | |
| 418 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 419 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 420 neu.SetAt(0, old); | |
| 421 old.SetAt(0, neu); | |
| 422 old = Array::null(); | |
| 423 neu = Array::null(); | |
| 424 | |
| 425 heap->CollectAllGarbage(); | |
| 426 | |
| 427 intptr_t size_after = | |
| 428 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 429 | |
| 430 EXPECT(size_before == size_after); | |
| 431 } | |
| 432 | |
| 433 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_LiveNewToOld) { | |
| 434 Isolate* isolate = Isolate::Current(); | |
| 435 Heap* heap = isolate->heap(); | |
| 436 | |
| 437 heap->CollectAllGarbage(); | |
| 438 intptr_t size_before = | |
| 439 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 440 | |
| 441 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 442 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 443 neu.SetAt(0, old); | |
| 444 old = Array::null(); | |
| 445 | |
| 446 heap->CollectAllGarbage(); | |
| 447 | |
| 448 intptr_t size_after = | |
| 449 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 450 | |
| 451 EXPECT(size_before < size_after); | |
| 452 } | |
| 453 | |
| 454 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_LiveOldToNew) { | |
| 455 Isolate* isolate = Isolate::Current(); | |
| 456 Heap* heap = isolate->heap(); | |
| 457 | |
| 458 heap->CollectAllGarbage(); | |
| 459 intptr_t size_before = | |
| 460 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 461 | |
| 462 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 463 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 464 old.SetAt(0, neu); | |
| 465 neu = Array::null(); | |
| 466 | |
| 467 heap->CollectAllGarbage(); | |
| 468 | |
| 469 intptr_t size_after = | |
| 470 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 471 | |
| 472 EXPECT(size_before < size_after); | |
| 473 } | |
| 474 | |
| 475 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_LiveOldDeadNew) { | |
| 476 Isolate* isolate = Isolate::Current(); | |
| 477 Heap* heap = isolate->heap(); | |
| 478 | |
| 479 heap->CollectAllGarbage(); | |
| 480 intptr_t size_before = | |
| 481 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 482 | |
| 483 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 484 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 485 neu = Array::null(); | |
| 486 old.SetAt(0, old); | |
| 487 | |
| 488 heap->CollectAllGarbage(); | |
| 489 | |
| 490 intptr_t size_after = | |
| 491 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 492 | |
| 493 EXPECT(size_before < size_after); | |
| 494 } | |
| 495 | |
| 496 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_LiveNewDeadOld) { | |
| 497 Isolate* isolate = Isolate::Current(); | |
| 498 Heap* heap = isolate->heap(); | |
| 499 | |
| 500 heap->CollectAllGarbage(); | |
| 501 intptr_t size_before = | |
| 502 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 503 | |
| 504 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 505 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 506 old = Array::null(); | |
| 507 neu.SetAt(0, neu); | |
| 508 | |
| 509 heap->CollectAllGarbage(); | |
| 510 | |
| 511 intptr_t size_after = | |
| 512 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 513 | |
| 514 EXPECT(size_before < size_after); | |
| 515 } | |
| 516 | |
| 517 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_LiveNewToOldChain) { | |
| 518 Isolate* isolate = Isolate::Current(); | |
| 519 Heap* heap = isolate->heap(); | |
| 520 | |
| 521 heap->CollectAllGarbage(); | |
| 522 intptr_t size_before = | |
| 523 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 524 | |
| 525 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 526 Array& old2 = Array::Handle(Array::New(1, Heap::kOld)); | |
| 527 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 528 old.SetAt(0, old2); | |
| 529 neu.SetAt(0, old); | |
| 530 old = Array::null(); | |
| 531 old2 = Array::null(); | |
| 532 | |
| 533 heap->CollectAllGarbage(); | |
| 534 | |
| 535 intptr_t size_after = | |
| 536 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 537 | |
| 538 EXPECT(size_before < size_after); | |
| 539 } | |
| 540 | |
| 541 ISOLATE_UNIT_TEST_CASE(CollectAllGarbage_LiveOldToNewChain) { | |
| 542 Isolate* isolate = Isolate::Current(); | |
| 543 Heap* heap = isolate->heap(); | |
| 544 | |
| 545 heap->CollectAllGarbage(); | |
| 546 intptr_t size_before = | |
| 547 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 548 | |
| 549 Array& old = Array::Handle(Array::New(1, Heap::kOld)); | |
| 550 Array& neu = Array::Handle(Array::New(1, Heap::kNew)); | |
| 551 Array& neu2 = Array::Handle(Array::New(1, Heap::kOld)); | |
| 552 neu.SetAt(0, neu2); | |
| 553 old.SetAt(0, neu); | |
| 554 neu = Array::null(); | |
| 555 neu2 = Array::null(); | |
| 556 | |
| 557 heap->CollectAllGarbage(); | |
| 558 | |
| 559 intptr_t size_after = | |
| 560 heap->new_space()->UsedInWords() + heap->old_space()->UsedInWords(); | |
| 561 | |
| 562 EXPECT(size_before < size_after); | |
| 563 } | |
| 564 | |
| 366 } // namespace dart | 565 } // namespace dart |
| OLD | NEW |