| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/heap/HeapCompact.h" | 5 #include "platform/heap/HeapCompact.h" |
| 6 | 6 |
| 7 #include "platform/heap/Handle.h" | 7 #include "platform/heap/Handle.h" |
| 8 #include "platform/heap/SparseHeapBitmap.h" | 8 #include "platform/heap/SparseHeapBitmap.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "wtf/Deque.h" | 10 #include "wtf/Deque.h" |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 | 347 |
| 348 for (size_t i = 0; i < deque->size(); ++i) | 348 for (size_t i = 0; i < deque->size(); ++i) |
| 349 EXPECT_EQ(static_cast<int>(7 - i), deque->at(i).at(i)->value()); | 349 EXPECT_EQ(static_cast<int>(7 - i), deque->at(i).at(i)->value()); |
| 350 } | 350 } |
| 351 | 351 |
| 352 TEST(HeapCompactTest, CompactLinkedHashSet) { | 352 TEST(HeapCompactTest, CompactLinkedHashSet) { |
| 353 using OrderedHashSet = HeapLinkedHashSet<Member<IntWrapper>>; | 353 using OrderedHashSet = HeapLinkedHashSet<Member<IntWrapper>>; |
| 354 Persistent<OrderedHashSet> set = new OrderedHashSet; | 354 Persistent<OrderedHashSet> set = new OrderedHashSet; |
| 355 for (int i = 0; i < 13; ++i) { | 355 for (int i = 0; i < 13; ++i) { |
| 356 IntWrapper* value = IntWrapper::create(i); | 356 IntWrapper* value = IntWrapper::create(i); |
| 357 set->add(value); | 357 set->insert(value); |
| 358 } | 358 } |
| 359 EXPECT_EQ(13u, set->size()); | 359 EXPECT_EQ(13u, set->size()); |
| 360 | 360 |
| 361 int expected = 0; | 361 int expected = 0; |
| 362 for (IntWrapper* v : *set) { | 362 for (IntWrapper* v : *set) { |
| 363 EXPECT_EQ(expected, v->value()); | 363 EXPECT_EQ(expected, v->value()); |
| 364 expected++; | 364 expected++; |
| 365 } | 365 } |
| 366 | 366 |
| 367 performHeapCompaction(); | 367 performHeapCompaction(); |
| 368 | 368 |
| 369 expected = 0; | 369 expected = 0; |
| 370 for (IntWrapper* v : *set) { | 370 for (IntWrapper* v : *set) { |
| 371 EXPECT_EQ(expected, v->value()); | 371 EXPECT_EQ(expected, v->value()); |
| 372 expected++; | 372 expected++; |
| 373 } | 373 } |
| 374 } | 374 } |
| 375 | 375 |
| 376 TEST(HeapCompactTest, CompactLinkedHashSetVector) { | 376 TEST(HeapCompactTest, CompactLinkedHashSetVector) { |
| 377 using OrderedHashSet = HeapLinkedHashSet<Member<IntVector>>; | 377 using OrderedHashSet = HeapLinkedHashSet<Member<IntVector>>; |
| 378 Persistent<OrderedHashSet> set = new OrderedHashSet; | 378 Persistent<OrderedHashSet> set = new OrderedHashSet; |
| 379 for (int i = 0; i < 13; ++i) { | 379 for (int i = 0; i < 13; ++i) { |
| 380 IntWrapper* value = IntWrapper::create(i); | 380 IntWrapper* value = IntWrapper::create(i); |
| 381 IntVector* vector = new IntVector(19, value); | 381 IntVector* vector = new IntVector(19, value); |
| 382 set->add(vector); | 382 set->insert(vector); |
| 383 } | 383 } |
| 384 EXPECT_EQ(13u, set->size()); | 384 EXPECT_EQ(13u, set->size()); |
| 385 | 385 |
| 386 int expected = 0; | 386 int expected = 0; |
| 387 for (IntVector* v : *set) { | 387 for (IntVector* v : *set) { |
| 388 EXPECT_EQ(expected, (*v)[0]->value()); | 388 EXPECT_EQ(expected, (*v)[0]->value()); |
| 389 expected++; | 389 expected++; |
| 390 } | 390 } |
| 391 | 391 |
| 392 performHeapCompaction(); | 392 performHeapCompaction(); |
| 393 | 393 |
| 394 expected = 0; | 394 expected = 0; |
| 395 for (IntVector* v : *set) { | 395 for (IntVector* v : *set) { |
| 396 EXPECT_EQ(expected, (*v)[0]->value()); | 396 EXPECT_EQ(expected, (*v)[0]->value()); |
| 397 expected++; | 397 expected++; |
| 398 } | 398 } |
| 399 } | 399 } |
| 400 | 400 |
| 401 TEST(HeapCompactTest, CompactLinkedHashSetMap) { | 401 TEST(HeapCompactTest, CompactLinkedHashSetMap) { |
| 402 using Inner = HeapHashSet<Member<IntWrapper>>; | 402 using Inner = HeapHashSet<Member<IntWrapper>>; |
| 403 using OrderedHashSet = HeapLinkedHashSet<Member<Inner>>; | 403 using OrderedHashSet = HeapLinkedHashSet<Member<Inner>>; |
| 404 | 404 |
| 405 Persistent<OrderedHashSet> set = new OrderedHashSet; | 405 Persistent<OrderedHashSet> set = new OrderedHashSet; |
| 406 for (int i = 0; i < 13; ++i) { | 406 for (int i = 0; i < 13; ++i) { |
| 407 IntWrapper* value = IntWrapper::create(i); | 407 IntWrapper* value = IntWrapper::create(i); |
| 408 Inner* inner = new Inner; | 408 Inner* inner = new Inner; |
| 409 inner->insert(value); | 409 inner->insert(value); |
| 410 set->add(inner); | 410 set->insert(inner); |
| 411 } | 411 } |
| 412 EXPECT_EQ(13u, set->size()); | 412 EXPECT_EQ(13u, set->size()); |
| 413 | 413 |
| 414 int expected = 0; | 414 int expected = 0; |
| 415 for (const Inner* v : *set) { | 415 for (const Inner* v : *set) { |
| 416 EXPECT_EQ(1u, v->size()); | 416 EXPECT_EQ(1u, v->size()); |
| 417 EXPECT_EQ(expected, (*v->begin())->value()); | 417 EXPECT_EQ(expected, (*v->begin())->value()); |
| 418 expected++; | 418 expected++; |
| 419 } | 419 } |
| 420 | 420 |
| 421 performHeapCompaction(); | 421 performHeapCompaction(); |
| 422 | 422 |
| 423 expected = 0; | 423 expected = 0; |
| 424 for (const Inner* v : *set) { | 424 for (const Inner* v : *set) { |
| 425 EXPECT_EQ(1u, v->size()); | 425 EXPECT_EQ(1u, v->size()); |
| 426 EXPECT_EQ(expected, (*v->begin())->value()); | 426 EXPECT_EQ(expected, (*v->begin())->value()); |
| 427 expected++; | 427 expected++; |
| 428 } | 428 } |
| 429 } | 429 } |
| 430 | 430 |
| 431 TEST(HeapCompactTest, CompactLinkedHashSetNested) { | 431 TEST(HeapCompactTest, CompactLinkedHashSetNested) { |
| 432 using Inner = HeapLinkedHashSet<Member<IntWrapper>>; | 432 using Inner = HeapLinkedHashSet<Member<IntWrapper>>; |
| 433 using OrderedHashSet = HeapLinkedHashSet<Member<Inner>>; | 433 using OrderedHashSet = HeapLinkedHashSet<Member<Inner>>; |
| 434 | 434 |
| 435 Persistent<OrderedHashSet> set = new OrderedHashSet; | 435 Persistent<OrderedHashSet> set = new OrderedHashSet; |
| 436 for (int i = 0; i < 13; ++i) { | 436 for (int i = 0; i < 13; ++i) { |
| 437 IntWrapper* value = IntWrapper::create(i); | 437 IntWrapper* value = IntWrapper::create(i); |
| 438 Inner* inner = new Inner; | 438 Inner* inner = new Inner; |
| 439 inner->add(value); | 439 inner->insert(value); |
| 440 set->add(inner); | 440 set->insert(inner); |
| 441 } | 441 } |
| 442 EXPECT_EQ(13u, set->size()); | 442 EXPECT_EQ(13u, set->size()); |
| 443 | 443 |
| 444 int expected = 0; | 444 int expected = 0; |
| 445 for (const Inner* v : *set) { | 445 for (const Inner* v : *set) { |
| 446 EXPECT_EQ(1u, v->size()); | 446 EXPECT_EQ(1u, v->size()); |
| 447 EXPECT_EQ(expected, (*v->begin())->value()); | 447 EXPECT_EQ(expected, (*v->begin())->value()); |
| 448 expected++; | 448 expected++; |
| 449 } | 449 } |
| 450 | 450 |
| 451 performHeapCompaction(); | 451 performHeapCompaction(); |
| 452 | 452 |
| 453 expected = 0; | 453 expected = 0; |
| 454 for (const Inner* v : *set) { | 454 for (const Inner* v : *set) { |
| 455 EXPECT_EQ(1u, v->size()); | 455 EXPECT_EQ(1u, v->size()); |
| 456 EXPECT_EQ(expected, (*v->begin())->value()); | 456 EXPECT_EQ(expected, (*v->begin())->value()); |
| 457 expected++; | 457 expected++; |
| 458 } | 458 } |
| 459 } | 459 } |
| 460 | 460 |
| 461 } // namespace blink | 461 } // namespace blink |
| OLD | NEW |