| Index: test/cctest/heap/utils-inl.h
|
| diff --git a/test/cctest/heap/utils-inl.h b/test/cctest/heap/utils-inl.h
|
| index 8c2508fcb608b6ac1de2bb3d0094439f3544c56a..f255bb6c033e430a89ce1484129466859c7234f3 100644
|
| --- a/test/cctest/heap/utils-inl.h
|
| +++ b/test/cctest/heap/utils-inl.h
|
| @@ -16,34 +16,32 @@ namespace v8 {
|
| namespace internal {
|
|
|
| static int LenFromSize(int size) {
|
| - return (size - i::FixedArray::kHeaderSize) / i::kPointerSize;
|
| + return (size - FixedArray::kHeaderSize) / kPointerSize;
|
| }
|
|
|
|
|
| -static inline void CreatePadding(i::Heap* heap, int padding_size,
|
| - i::PretenureFlag tenure) {
|
| - const int max_number_of_objects = 20;
|
| - v8::internal::Handle<v8::internal::FixedArray>
|
| - big_objects[max_number_of_objects];
|
| - i::Isolate* isolate = heap->isolate();
|
| +static inline std::vector<Handle<FixedArray>> CreatePadding(
|
| + Heap* heap, int padding_size, PretenureFlag tenure,
|
| + int object_size = Page::kMaxRegularHeapObjectSize) {
|
| + std::vector<Handle<FixedArray>> handles;
|
| + Isolate* isolate = heap->isolate();
|
| int allocate_memory;
|
| int length;
|
| int free_memory = padding_size;
|
| if (tenure == i::TENURED) {
|
| - int current_free_memory =
|
| - static_cast<int>(*heap->old_space()->allocation_limit_address() -
|
| - *heap->old_space()->allocation_top_address());
|
| - CHECK(padding_size <= current_free_memory || current_free_memory == 0);
|
| + heap->old_space()->EmptyAllocationInfo();
|
| + int overall_free_memory = static_cast<int>(heap->old_space()->Available());
|
| + CHECK(padding_size <= overall_free_memory || overall_free_memory == 0);
|
| } else {
|
| heap->new_space()->DisableInlineAllocationSteps();
|
| - int current_free_memory =
|
| + int overall_free_memory =
|
| static_cast<int>(*heap->new_space()->allocation_limit_address() -
|
| *heap->new_space()->allocation_top_address());
|
| - CHECK(padding_size <= current_free_memory || current_free_memory == 0);
|
| + CHECK(padding_size <= overall_free_memory || overall_free_memory == 0);
|
| }
|
| - for (int i = 0; i < max_number_of_objects && free_memory > 0; i++) {
|
| - if (free_memory > i::Page::kMaxRegularHeapObjectSize) {
|
| - allocate_memory = i::Page::kMaxRegularHeapObjectSize;
|
| + while (free_memory > 0) {
|
| + if (free_memory > object_size) {
|
| + allocate_memory = object_size;
|
| length = LenFromSize(allocate_memory);
|
| } else {
|
| allocate_memory = free_memory;
|
| @@ -55,11 +53,12 @@ static inline void CreatePadding(i::Heap* heap, int padding_size,
|
| break;
|
| }
|
| }
|
| - big_objects[i] = isolate->factory()->NewFixedArray(length, tenure);
|
| - CHECK((tenure == i::NOT_TENURED && heap->InNewSpace(*big_objects[i])) ||
|
| - (tenure == i::TENURED && heap->InOldSpace(*big_objects[i])));
|
| + handles.push_back(isolate->factory()->NewFixedArray(length, tenure));
|
| + CHECK((tenure == NOT_TENURED && heap->InNewSpace(*handles.back())) ||
|
| + (tenure == TENURED && heap->InOldSpace(*handles.back())));
|
| free_memory -= allocate_memory;
|
| }
|
| + return handles;
|
| }
|
|
|
|
|
|
|