Index: test/cctest/test-api.cc |
=================================================================== |
--- test/cctest/test-api.cc (revision 7100) |
+++ test/cctest/test-api.cc (working copy) |
@@ -394,11 +394,11 @@ |
CHECK(source->IsExternal()); |
CHECK_EQ(resource, |
static_cast<TestResource*>(source->GetExternalStringResource())); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(0, TestResource::dispose_count); |
} |
i::CompilationCache::Clear(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(1, TestResource::dispose_count); |
} |
@@ -415,11 +415,11 @@ |
Local<Value> value = script->Run(); |
CHECK(value->IsNumber()); |
CHECK_EQ(7, value->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(0, TestAsciiResource::dispose_count); |
} |
i::CompilationCache::Clear(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(1, TestAsciiResource::dispose_count); |
} |
@@ -440,11 +440,11 @@ |
Local<Value> value = script->Run(); |
CHECK(value->IsNumber()); |
CHECK_EQ(7, value->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(0, TestResource::dispose_count); |
} |
i::CompilationCache::Clear(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(1, TestResource::dispose_count); |
} |
@@ -466,11 +466,11 @@ |
Local<Value> value = script->Run(); |
CHECK(value->IsNumber()); |
CHECK_EQ(7, value->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(0, TestAsciiResource::dispose_count); |
} |
i::CompilationCache::Clear(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(1, TestAsciiResource::dispose_count); |
} |
@@ -571,8 +571,8 @@ |
i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); |
CHECK(isymbol->IsSymbol()); |
} |
- i::Heap::CollectAllGarbage(false); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
} |
@@ -589,8 +589,8 @@ |
i::Handle<i::String> isymbol = i::Factory::SymbolFromString(istring); |
CHECK(isymbol->IsSymbol()); |
} |
- i::Heap::CollectAllGarbage(false); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
} |
@@ -667,11 +667,11 @@ |
Local<Value> value = script->Run(); |
CHECK(value->IsNumber()); |
CHECK_EQ(7, value->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(0, TestAsciiResource::dispose_count); |
} |
i::CompilationCache::Clear(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_calls); |
CHECK_EQ(0, TestAsciiResource::dispose_count); |
@@ -688,11 +688,11 @@ |
Local<Value> value = script->Run(); |
CHECK(value->IsNumber()); |
CHECK_EQ(7, value->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(0, TestAsciiResource::dispose_count); |
} |
i::CompilationCache::Clear(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(1, TestAsciiResourceWithDisposeControl::dispose_calls); |
CHECK_EQ(1, TestAsciiResource::dispose_count); |
} |
@@ -739,8 +739,8 @@ |
CHECK_EQ(68, value->Int32Value()); |
} |
i::CompilationCache::Clear(); |
- i::Heap::CollectAllGarbage(false); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
} |
@@ -1575,12 +1575,12 @@ |
// Check reading and writing aligned pointers. |
obj->SetPointerInInternalField(0, aligned); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(aligned, obj->GetPointerFromInternalField(0)); |
// Check reading and writing unaligned pointers. |
obj->SetPointerInInternalField(0, unaligned); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(unaligned, obj->GetPointerFromInternalField(0)); |
delete[] data; |
@@ -1606,19 +1606,19 @@ |
CHECK_EQ(1, static_cast<int>(reinterpret_cast<uintptr_t>(unaligned) & 0x1)); |
obj->SetPointerInInternalField(0, aligned); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(aligned, v8::External::Unwrap(obj->GetInternalField(0))); |
obj->SetPointerInInternalField(0, unaligned); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(unaligned, v8::External::Unwrap(obj->GetInternalField(0))); |
obj->SetInternalField(0, v8::External::Wrap(aligned)); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(aligned, obj->GetPointerFromInternalField(0)); |
obj->SetInternalField(0, v8::External::Wrap(unaligned)); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(unaligned, obj->GetPointerFromInternalField(0)); |
delete[] data; |
@@ -1631,7 +1631,7 @@ |
// Ensure that the test starts with an fresh heap to test whether the hash |
// code is based on the address. |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
Local<v8::Object> obj = v8::Object::New(); |
int hash = obj->GetIdentityHash(); |
int hash1 = obj->GetIdentityHash(); |
@@ -1641,7 +1641,7 @@ |
// objects should not be assigned the same hash code. If the test below fails |
// the random number generator should be evaluated. |
CHECK_NE(hash, hash2); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
int hash3 = v8::Object::New()->GetIdentityHash(); |
// Make sure that the identity hash is not based on the initial address of |
// the object alone. If the test below fails the random number generator |
@@ -1678,7 +1678,7 @@ |
v8::Local<v8::String> empty = v8_str(""); |
v8::Local<v8::String> prop_name = v8_str("prop_name"); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
// Make sure delete of a non-existent hidden value works |
CHECK(obj->DeleteHiddenValue(key)); |
@@ -1688,7 +1688,7 @@ |
CHECK(obj->SetHiddenValue(key, v8::Integer::New(2002))); |
CHECK_EQ(2002, obj->GetHiddenValue(key)->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
// Make sure we do not find the hidden property. |
CHECK(!obj->Has(empty)); |
@@ -1699,7 +1699,7 @@ |
CHECK_EQ(2002, obj->GetHiddenValue(key)->Int32Value()); |
CHECK_EQ(2003, obj->Get(empty)->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
// Add another property and delete it afterwards to force the object in |
// slow case. |
@@ -1710,7 +1710,7 @@ |
CHECK(obj->Delete(prop_name)); |
CHECK_EQ(2002, obj->GetHiddenValue(key)->Int32Value()); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK(obj->DeleteHiddenValue(key)); |
CHECK(obj->GetHiddenValue(key).IsEmpty()); |
@@ -4207,7 +4207,7 @@ |
object_b.MakeWeak(&released_in_scavenge, &CheckIsNotInvokedInScavenge); |
while (!object_a_disposed) { |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
} |
CHECK(!released_in_scavenge); |
} |
@@ -4225,7 +4225,7 @@ |
CHECK_EQ(v8::Integer::New(3), args[2]); |
CHECK_EQ(v8::Undefined(), args[3]); |
v8::HandleScope scope; |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
return v8::Undefined(); |
} |
@@ -6807,7 +6807,7 @@ |
Local<String> name, |
const AccessorInfo& info) { |
ApiTestFuzzer::Fuzz(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
return v8::Handle<Value>(); |
} |
@@ -7537,7 +7537,7 @@ |
int* call_count = reinterpret_cast<int*>(v8::External::Unwrap(info.Data())); |
++(*call_count); |
if ((*call_count) % 20 == 0) { |
- i::Heap::CollectAllGarbage(true); |
+ i::Heap::CollectAllGarbage(i::Heap::kForceCompactionMask); |
} |
return v8::Handle<Value>(); |
} |
@@ -8704,9 +8704,10 @@ |
static int GetGlobalObjectsCount() { |
+ i::Heap::EnsureHeapIsIterable(); |
int count = 0; |
i::HeapIterator it; |
- for (i::HeapObject* object = it.next(); object != NULL; object = it.next()) |
+ for (i::HeapObject* object = it.Next(); object != NULL; object = it.Next()) |
if (object->IsJSGlobalObject()) count++; |
return count; |
} |
@@ -8718,8 +8719,8 @@ |
// the first garbage collection but some of the maps have already |
// been marked at that point. Therefore some of the maps are not |
// collected until the second garbage collection. |
- i::Heap::CollectAllGarbage(false); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
+ i::Heap::CollectAllGarbage(i::Heap::kSweepPreciselyMask); |
int count = GetGlobalObjectsCount(); |
#ifdef DEBUG |
if (count != expected) i::Heap::TracePathToGlobal(); |
@@ -8788,7 +8789,7 @@ |
// weak callback of the first handle would be able to 'reallocate' it. |
handle1.MakeWeak(NULL, NewPersistentHandleCallback); |
handle2.Dispose(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
} |
@@ -8796,7 +8797,7 @@ |
void DisposeAndForceGcCallback(v8::Persistent<v8::Value> handle, void*) { |
to_be_disposed.Dispose(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
handle.Dispose(); |
} |
@@ -8812,7 +8813,7 @@ |
} |
handle1.MakeWeak(NULL, DisposeAndForceGcCallback); |
to_be_disposed = handle2; |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
} |
void DisposingCallback(v8::Persistent<v8::Value> handle, void*) { |
@@ -8838,7 +8839,7 @@ |
} |
handle2.MakeWeak(NULL, DisposingCallback); |
handle3.MakeWeak(NULL, HandleCreatingCallback); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
} |
@@ -9610,7 +9611,7 @@ |
{ |
v8::Locker lock; |
// TODO(lrn): Perhaps create some garbage before collecting. |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
gc_count_++; |
} |
i::OS::Sleep(1); |
@@ -9731,7 +9732,7 @@ |
while (gc_during_apply_ < kRequiredGCs) { |
{ |
v8::Locker lock; |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
gc_count_++; |
} |
i::OS::Sleep(1); |
@@ -10445,11 +10446,13 @@ |
uint8_t* pixel_data = reinterpret_cast<uint8_t*>(malloc(kElementCount)); |
i::Handle<i::PixelArray> pixels = i::Factory::NewPixelArray(kElementCount, |
pixel_data); |
- i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. |
+ // Force GC to trigger verification. |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
for (int i = 0; i < kElementCount; i++) { |
pixels->set(i, i % 256); |
} |
- i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. |
+ // Force GC to trigger verification. |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
for (int i = 0; i < kElementCount; i++) { |
CHECK_EQ(i % 256, pixels->get(i)); |
CHECK_EQ(i % 256, pixel_data[i]); |
@@ -10846,11 +10849,13 @@ |
i::Handle<ExternalArrayClass> array = |
i::Handle<ExternalArrayClass>::cast( |
i::Factory::NewExternalArray(kElementCount, array_type, array_data)); |
- i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. |
+ // Force GC to trigger verification. |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
for (int i = 0; i < kElementCount; i++) { |
array->set(i, static_cast<ElementType>(i)); |
} |
- i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. |
+ // Force GC to trigger verification. |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
for (int i = 0; i < kElementCount; i++) { |
CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(array->get(i))); |
CHECK_EQ(static_cast<int64_t>(i), static_cast<int64_t>(array_data[i])); |
@@ -10967,7 +10972,8 @@ |
" }" |
"}" |
"sum;"); |
- i::Heap::CollectAllGarbage(false); // Force GC to trigger verification. |
+ // Force GC to trigger verification. |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(28, result->Int32Value()); |
// Make sure out-of-range loads do not throw. |
@@ -11809,7 +11815,7 @@ |
other_context->Enter(); |
CompileRun(source_simple); |
other_context->Exit(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
if (GetGlobalObjectsCount() == 1) break; |
} |
CHECK_GE(2, gc_count); |
@@ -11831,7 +11837,7 @@ |
other_context->Enter(); |
CompileRun(source_eval); |
other_context->Exit(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
if (GetGlobalObjectsCount() == 1) break; |
} |
CHECK_GE(2, gc_count); |
@@ -11858,7 +11864,7 @@ |
other_context->Enter(); |
CompileRun(source_exception); |
other_context->Exit(); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
if (GetGlobalObjectsCount() == 1) break; |
} |
CHECK_GE(2, gc_count); |
@@ -12076,26 +12082,26 @@ |
v8::V8::AddGCEpilogueCallback(EpilogueCallback); |
CHECK_EQ(0, prologue_call_count); |
CHECK_EQ(0, epilogue_call_count); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(1, prologue_call_count); |
CHECK_EQ(1, epilogue_call_count); |
v8::V8::AddGCPrologueCallback(PrologueCallbackSecond); |
v8::V8::AddGCEpilogueCallback(EpilogueCallbackSecond); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(2, prologue_call_count); |
CHECK_EQ(2, epilogue_call_count); |
CHECK_EQ(1, prologue_call_count_second); |
CHECK_EQ(1, epilogue_call_count_second); |
v8::V8::RemoveGCPrologueCallback(PrologueCallback); |
v8::V8::RemoveGCEpilogueCallback(EpilogueCallback); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(2, prologue_call_count); |
CHECK_EQ(2, epilogue_call_count); |
CHECK_EQ(2, prologue_call_count_second); |
CHECK_EQ(2, epilogue_call_count_second); |
v8::V8::RemoveGCPrologueCallback(PrologueCallbackSecond); |
v8::V8::RemoveGCEpilogueCallback(EpilogueCallbackSecond); |
- i::Heap::CollectAllGarbage(false); |
+ i::Heap::CollectAllGarbage(i::Heap::kNoGCFlags); |
CHECK_EQ(2, prologue_call_count); |
CHECK_EQ(2, epilogue_call_count); |
CHECK_EQ(2, prologue_call_count_second); |
@@ -12305,7 +12311,7 @@ |
void FailedAccessCheckCallbackGC(Local<v8::Object> target, |
v8::AccessType type, |
Local<v8::Value> data) { |
- i::Heap::CollectAllGarbage(true); |
+ i::Heap::CollectAllGarbage(i::Heap::kForceCompactionMask); |
} |
@@ -12489,7 +12495,7 @@ |
"})()", |
"ReferenceError: cell is not defined"); |
CompileRun("cell = \"new_second\";"); |
- i::Heap::CollectAllGarbage(true); |
+ i::Heap::CollectAllGarbage(i::Heap::kForceCompactionMask); |
ExpectString("readCell()", "new_second"); |
ExpectString("readCell()", "new_second"); |
} |