Cleanup test-alloc unit test case.
This makes the test-alloc test case more robust against changes to the initial heap size. It correctly simulates a full space now instead of trying to fill the space up by allocating filler objects. R=svenpanne@chromium.org TEST=cctest/test-alloc Review URL: https://chromiumcodereview.appspot.com/10071003 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11284 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
e9e291c331
commit
40895f0250
@ -1520,6 +1520,10 @@ class PagedSpace : public Space {
|
||||
return size_in_bytes - wasted;
|
||||
}
|
||||
|
||||
void ResetFreeList() {
|
||||
free_list_.Reset();
|
||||
}
|
||||
|
||||
// Set space allocation info.
|
||||
void SetTop(Address top, Address limit) {
|
||||
ASSERT(top == limit ||
|
||||
@ -2371,11 +2375,6 @@ class FixedSpace : public PagedSpace {
|
||||
// Prepares for a mark-compact GC.
|
||||
virtual void PrepareForMarkCompact();
|
||||
|
||||
protected:
|
||||
void ResetFreeList() {
|
||||
free_list_.Reset();
|
||||
}
|
||||
|
||||
private:
|
||||
// The size of objects in this space.
|
||||
int object_size_in_bytes_;
|
||||
|
@ -34,6 +34,13 @@
|
||||
using namespace v8::internal;
|
||||
|
||||
|
||||
static inline void SimulateFullSpace(PagedSpace* space) {
|
||||
space->SetTop(space->limit(), space->limit());
|
||||
space->ResetFreeList();
|
||||
space->ClearStats();
|
||||
}
|
||||
|
||||
|
||||
static MaybeObject* AllocateAfterFailures() {
|
||||
static int attempts = 0;
|
||||
if (++attempts < 3) return Failure::RetryAfterGC();
|
||||
@ -65,24 +72,12 @@ static MaybeObject* AllocateAfterFailures() {
|
||||
CHECK(!heap->CopyJSObject(JSObject::cast(object))->IsFailure());
|
||||
|
||||
// Old data space.
|
||||
OldSpace* old_data_space = heap->old_data_space();
|
||||
static const int kOldDataSpaceFillerSize = ByteArray::SizeFor(0);
|
||||
while (old_data_space->Available() > kOldDataSpaceFillerSize) {
|
||||
CHECK(!heap->AllocateByteArray(0, TENURED)->IsFailure());
|
||||
}
|
||||
SimulateFullSpace(heap->old_data_space());
|
||||
CHECK(!heap->AllocateRawAsciiString(100, TENURED)->IsFailure());
|
||||
|
||||
// Old pointer space.
|
||||
OldSpace* old_pointer_space = heap->old_pointer_space();
|
||||
static const int kOldPointerSpaceFillerLength = 10000;
|
||||
static const int kOldPointerSpaceFillerSize = FixedArray::SizeFor(
|
||||
kOldPointerSpaceFillerLength);
|
||||
while (old_pointer_space->Available() > kOldPointerSpaceFillerSize) {
|
||||
CHECK(!heap->AllocateFixedArray(kOldPointerSpaceFillerLength, TENURED)->
|
||||
IsFailure());
|
||||
}
|
||||
CHECK(!heap->AllocateFixedArray(kOldPointerSpaceFillerLength, TENURED)->
|
||||
IsFailure());
|
||||
SimulateFullSpace(heap->old_pointer_space());
|
||||
CHECK(!heap->AllocateFixedArray(10000, TENURED)->IsFailure());
|
||||
|
||||
// Large object space.
|
||||
static const int kLargeObjectSpaceFillerLength = 300000;
|
||||
@ -97,14 +92,9 @@ static MaybeObject* AllocateAfterFailures() {
|
||||
IsFailure());
|
||||
|
||||
// Map space.
|
||||
MapSpace* map_space = heap->map_space();
|
||||
static const int kMapSpaceFillerSize = Map::kSize;
|
||||
InstanceType instance_type = JS_OBJECT_TYPE;
|
||||
SimulateFullSpace(heap->map_space());
|
||||
int instance_size = JSObject::kHeaderSize;
|
||||
while (map_space->Available() > kMapSpaceFillerSize) {
|
||||
CHECK(!heap->AllocateMap(instance_type, instance_size)->IsFailure());
|
||||
}
|
||||
CHECK(!heap->AllocateMap(instance_type, instance_size)->IsFailure());
|
||||
CHECK(!heap->AllocateMap(JS_OBJECT_TYPE, instance_size)->IsFailure());
|
||||
|
||||
// Test that we can allocate in old pointer space and code space.
|
||||
CHECK(!heap->AllocateFixedArray(100, TENURED)->IsFailure());
|
||||
|
Loading…
Reference in New Issue
Block a user