[heap] Handle edge case in NewSpaceAllocationCounter test

This test checks that counters accurately reflect the allocated size.
There's an edge case that can occur when, previously to the allocation,
the page does not have enough space left to allocate the requested
object - then we move on to a fresh page, fill the remaining space of
the old page with a filler object, and allocate the requested object on
the new page.

The counters will show the size of the filler object plus the requested
object size, while the test expects only the requested size.

This CL fixes that case by performing two GCs to clear out new space.

BUG=

Review-Url: https://codereview.chromium.org/2652933002
Cr-Commit-Position: refs/heads/master@{#42646}
This commit is contained in:
jgruber 2017-01-24 23:41:34 -08:00 committed by Commit bot
parent 39b858754e
commit 4ec372801e

View File

@ -6159,6 +6159,7 @@ TEST(NewSpaceAllocationCounter) {
Heap* heap = isolate->heap(); Heap* heap = isolate->heap();
size_t counter1 = heap->NewSpaceAllocationCounter(); size_t counter1 = heap->NewSpaceAllocationCounter();
CcTest::CollectGarbage(NEW_SPACE); CcTest::CollectGarbage(NEW_SPACE);
CcTest::CollectGarbage(NEW_SPACE); // Ensure new space is empty.
const size_t kSize = 1024; const size_t kSize = 1024;
AllocateInSpace(isolate, kSize, NEW_SPACE); AllocateInSpace(isolate, kSize, NEW_SPACE);
size_t counter2 = heap->NewSpaceAllocationCounter(); size_t counter2 = heap->NewSpaceAllocationCounter();