| 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");
|
| }
|
|
|