| Index: test/cctest/test-api.cc | 
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc | 
| index 2af9d2ebbcbb23d753f1906853bfa2513c4b6f89..ff1f203fccc98669f043a3ae2b5b434ff55528ff 100644 | 
| --- a/test/cctest/test-api.cc | 
| +++ b/test/cctest/test-api.cc | 
| @@ -453,11 +453,11 @@ THREADED_TEST(ScriptUsingStringResource) { | 
| CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), | 
| source->GetExternalStringResourceBase(&encoding)); | 
| CHECK_EQ(String::TWO_BYTE_ENCODING, encoding); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(0, dispose_count); | 
| } | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllAvailableGarbage(); | 
| +  CcTest::CollectAllAvailableGarbage(); | 
| CHECK_EQ(1, dispose_count); | 
| } | 
|  | 
| @@ -484,11 +484,11 @@ THREADED_TEST(ScriptUsingOneByteStringResource) { | 
| Local<Value> value = script->Run(env.local()).ToLocalChecked(); | 
| CHECK(value->IsNumber()); | 
| CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(0, dispose_count); | 
| } | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllAvailableGarbage(); | 
| +  CcTest::CollectAllAvailableGarbage(); | 
| CHECK_EQ(1, dispose_count); | 
| } | 
|  | 
| @@ -504,8 +504,8 @@ THREADED_TEST(ScriptMakingExternalString) { | 
| v8::NewStringType::kNormal) | 
| .ToLocalChecked(); | 
| // Trigger GCs so that the newly allocated string moves to old gen. | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| CHECK_EQ(source->IsExternal(), false); | 
| CHECK_EQ(source->IsExternalOneByte(), false); | 
| String::Encoding encoding = String::UNKNOWN_ENCODING; | 
| @@ -518,11 +518,11 @@ THREADED_TEST(ScriptMakingExternalString) { | 
| Local<Value> value = script->Run(env.local()).ToLocalChecked(); | 
| CHECK(value->IsNumber()); | 
| CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(0, dispose_count); | 
| } | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(1, dispose_count); | 
| } | 
|  | 
| @@ -535,8 +535,8 @@ THREADED_TEST(ScriptMakingExternalOneByteString) { | 
| v8::HandleScope scope(env->GetIsolate()); | 
| Local<String> source = v8_str(c_source); | 
| // Trigger GCs so that the newly allocated string moves to old gen. | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| bool success = source->MakeExternal( | 
| new TestOneByteResource(i::StrDup(c_source), &dispose_count)); | 
| CHECK(success); | 
| @@ -544,11 +544,11 @@ THREADED_TEST(ScriptMakingExternalOneByteString) { | 
| Local<Value> value = script->Run(env.local()).ToLocalChecked(); | 
| CHECK(value->IsNumber()); | 
| CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(0, dispose_count); | 
| } | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(1, dispose_count); | 
| } | 
|  | 
| @@ -558,8 +558,8 @@ TEST(MakingExternalStringConditions) { | 
| v8::HandleScope scope(env->GetIsolate()); | 
|  | 
| // Free some space in the new space so that we can check freshness. | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +  CcTest::CollectGarbage(i::NEW_SPACE); | 
| +  CcTest::CollectGarbage(i::NEW_SPACE); | 
|  | 
| uint16_t* two_byte_string = AsciiToTwoByteString("s1"); | 
| Local<String> local_string = | 
| @@ -571,8 +571,8 @@ TEST(MakingExternalStringConditions) { | 
| // We should refuse to externalize new space strings. | 
| CHECK(!local_string->CanMakeExternal()); | 
| // Trigger GCs so that the newly allocated string moves to old gen. | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| // Old space strings should be accepted. | 
| CHECK(local_string->CanMakeExternal()); | 
| } | 
| @@ -583,15 +583,15 @@ TEST(MakingExternalOneByteStringConditions) { | 
| v8::HandleScope scope(env->GetIsolate()); | 
|  | 
| // Free some space in the new space so that we can check freshness. | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +  CcTest::CollectGarbage(i::NEW_SPACE); | 
| +  CcTest::CollectGarbage(i::NEW_SPACE); | 
|  | 
| Local<String> local_string = v8_str("s1"); | 
| // We should refuse to externalize new space strings. | 
| CHECK(!local_string->CanMakeExternal()); | 
| // Trigger GCs so that the newly allocated string moves to old gen. | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| // Old space strings should be accepted. | 
| CHECK(local_string->CanMakeExternal()); | 
| } | 
| @@ -612,8 +612,8 @@ TEST(MakingExternalUnalignedOneByteString) { | 
|  | 
| // Trigger GCs so that the newly allocated string moves to old gen. | 
| i::heap::SimulateFullSpace(CcTest::heap()->old_space()); | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
|  | 
| // Turn into external string with unaligned resource data. | 
| const char* c_cons = "_abcdefghijklmnopqrstuvwxyz"; | 
| @@ -626,8 +626,8 @@ TEST(MakingExternalUnalignedOneByteString) { | 
| CHECK(success); | 
|  | 
| // Trigger GCs and force evacuation. | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| -  CcTest::heap()->CollectAllGarbage(i::Heap::kReduceMemoryFootprintMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kReduceMemoryFootprintMask); | 
| } | 
|  | 
|  | 
| @@ -642,14 +642,14 @@ THREADED_TEST(UsingExternalString) { | 
| .ToLocalChecked(); | 
| i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 
| // Trigger GCs so that the newly allocated string moves to old gen. | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| i::Handle<i::String> isymbol = | 
| factory->InternalizeString(istring); | 
| CHECK(isymbol->IsInternalizedString()); | 
| } | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -665,14 +665,14 @@ THREADED_TEST(UsingExternalOneByteString) { | 
| .ToLocalChecked(); | 
| i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 
| // Trigger GCs so that the newly allocated string moves to old gen. | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +    CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| i::Handle<i::String> isymbol = | 
| factory->InternalizeString(istring); | 
| CHECK(isymbol->IsInternalizedString()); | 
| } | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -739,12 +739,12 @@ THREADED_TEST(ScavengeExternalString) { | 
| new TestResource(two_byte_string, &dispose_count)) | 
| .ToLocalChecked(); | 
| i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +    CcTest::CollectGarbage(i::NEW_SPACE); | 
| in_new_space = CcTest::heap()->InNewSpace(*istring); | 
| CHECK(in_new_space || CcTest::heap()->old_space()->Contains(*istring)); | 
| CHECK_EQ(0, dispose_count); | 
| } | 
| -  CcTest::heap()->CollectGarbage(in_new_space ? i::NEW_SPACE : i::OLD_SPACE); | 
| +  CcTest::CollectGarbage(in_new_space ? i::NEW_SPACE : i::OLD_SPACE); | 
| CHECK_EQ(1, dispose_count); | 
| } | 
|  | 
| @@ -763,12 +763,12 @@ THREADED_TEST(ScavengeExternalOneByteString) { | 
| new TestOneByteResource(i::StrDup(one_byte_string), &dispose_count)) | 
| .ToLocalChecked(); | 
| i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +    CcTest::CollectGarbage(i::NEW_SPACE); | 
| in_new_space = CcTest::heap()->InNewSpace(*istring); | 
| CHECK(in_new_space || CcTest::heap()->old_space()->Contains(*istring)); | 
| CHECK_EQ(0, dispose_count); | 
| } | 
| -  CcTest::heap()->CollectGarbage(in_new_space ? i::NEW_SPACE : i::OLD_SPACE); | 
| +  CcTest::CollectGarbage(in_new_space ? i::NEW_SPACE : i::OLD_SPACE); | 
| CHECK_EQ(1, dispose_count); | 
| } | 
|  | 
| @@ -812,11 +812,11 @@ TEST(ExternalStringWithDisposeHandling) { | 
| Local<Value> value = script->Run(env.local()).ToLocalChecked(); | 
| CHECK(value->IsNumber()); | 
| CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); | 
| -    CcTest::heap()->CollectAllAvailableGarbage(); | 
| +    CcTest::CollectAllAvailableGarbage(); | 
| CHECK_EQ(0, TestOneByteResourceWithDisposeControl::dispose_count); | 
| } | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllAvailableGarbage(); | 
| +  CcTest::CollectAllAvailableGarbage(); | 
| CHECK_EQ(1, TestOneByteResourceWithDisposeControl::dispose_calls); | 
| CHECK_EQ(0, TestOneByteResourceWithDisposeControl::dispose_count); | 
|  | 
| @@ -835,11 +835,11 @@ TEST(ExternalStringWithDisposeHandling) { | 
| Local<Value> value = script->Run(env.local()).ToLocalChecked(); | 
| CHECK(value->IsNumber()); | 
| CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); | 
| -    CcTest::heap()->CollectAllAvailableGarbage(); | 
| +    CcTest::CollectAllAvailableGarbage(); | 
| CHECK_EQ(0, TestOneByteResourceWithDisposeControl::dispose_count); | 
| } | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllAvailableGarbage(); | 
| +  CcTest::CollectAllAvailableGarbage(); | 
| CHECK_EQ(1, TestOneByteResourceWithDisposeControl::dispose_calls); | 
| CHECK_EQ(1, TestOneByteResourceWithDisposeControl::dispose_count); | 
| } | 
| @@ -897,8 +897,8 @@ THREADED_TEST(StringConcat) { | 
| CHECK_EQ(68, value->Int32Value(env.local()).FromJust()); | 
| } | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -2651,7 +2651,7 @@ static void CheckAlignedPointerInInternalField(Local<v8::Object> obj, | 
| void* value) { | 
| CHECK_EQ(0, static_cast<int>(reinterpret_cast<uintptr_t>(value) & 0x1)); | 
| obj->SetAlignedPointerInInternalField(0, value); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(value, obj->GetAlignedPointerFromInternalField(0)); | 
| } | 
|  | 
| @@ -2707,14 +2707,14 @@ THREADED_TEST(SetAlignedPointerInInternalFields) { | 
| void* values[] = {heap_allocated_1, heap_allocated_2}; | 
|  | 
| obj->SetAlignedPointerInInternalFields(2, indices, values); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(heap_allocated_1, obj->GetAlignedPointerFromInternalField(0)); | 
| CHECK_EQ(heap_allocated_2, obj->GetAlignedPointerFromInternalField(1)); | 
|  | 
| indices[0] = 1; | 
| indices[1] = 0; | 
| obj->SetAlignedPointerInInternalFields(2, indices, values); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(heap_allocated_2, obj->GetAlignedPointerFromInternalField(0)); | 
| CHECK_EQ(heap_allocated_1, obj->GetAlignedPointerFromInternalField(1)); | 
|  | 
| @@ -2726,7 +2726,7 @@ static void CheckAlignedPointerInEmbedderData(LocalContext* env, int index, | 
| void* value) { | 
| CHECK_EQ(0, static_cast<int>(reinterpret_cast<uintptr_t>(value) & 0x1)); | 
| (*env)->SetAlignedPointerInEmbedderData(index, value); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(value, (*env)->GetAlignedPointerFromEmbedderData(index)); | 
| } | 
|  | 
| @@ -2756,7 +2756,7 @@ THREADED_TEST(EmbedderDataAlignedPointers) { | 
| for (int i = 0; i < 100; i++) { | 
| env->SetAlignedPointerInEmbedderData(i, AlignedTestPointer(i)); | 
| } | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| for (int i = 0; i < 100; i++) { | 
| CHECK_EQ(AlignedTestPointer(i), env->GetAlignedPointerFromEmbedderData(i)); | 
| } | 
| @@ -2788,7 +2788,7 @@ THREADED_TEST(IdentityHash) { | 
|  | 
| // Ensure that the test starts with an fresh heap to test whether the hash | 
| // code is based on the address. | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| Local<v8::Object> obj = v8::Object::New(isolate); | 
| int hash = obj->GetIdentityHash(); | 
| int hash1 = obj->GetIdentityHash(); | 
| @@ -2798,7 +2798,7 @@ THREADED_TEST(IdentityHash) { | 
| // 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); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| int hash3 = v8::Object::New(isolate)->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 | 
| @@ -2874,7 +2874,7 @@ TEST(SymbolIdentityHash) { | 
| int hash = symbol->GetIdentityHash(); | 
| int hash1 = symbol->GetIdentityHash(); | 
| CHECK_EQ(hash, hash1); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| int hash3 = symbol->GetIdentityHash(); | 
| CHECK_EQ(hash, hash3); | 
| } | 
| @@ -2885,7 +2885,7 @@ TEST(SymbolIdentityHash) { | 
| int hash = js_symbol->GetIdentityHash(); | 
| int hash1 = js_symbol->GetIdentityHash(); | 
| CHECK_EQ(hash, hash1); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| int hash3 = js_symbol->GetIdentityHash(); | 
| CHECK_EQ(hash, hash3); | 
| } | 
| @@ -2901,7 +2901,7 @@ TEST(StringIdentityHash) { | 
| int hash = str->GetIdentityHash(); | 
| int hash1 = str->GetIdentityHash(); | 
| CHECK_EQ(hash, hash1); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| int hash3 = str->GetIdentityHash(); | 
| CHECK_EQ(hash, hash3); | 
|  | 
| @@ -2921,7 +2921,7 @@ THREADED_TEST(SymbolProperties) { | 
| v8::Local<v8::Symbol> sym2 = v8::Symbol::New(isolate, v8_str("my-symbol")); | 
| v8::Local<v8::Symbol> sym3 = v8::Symbol::New(isolate, v8_str("sym3")); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // Check basic symbol functionality. | 
| CHECK(sym1->IsSymbol()); | 
| @@ -2990,7 +2990,7 @@ THREADED_TEST(SymbolProperties) { | 
| CHECK_EQ(num_props + 1, | 
| obj->GetPropertyNames(env.local()).ToLocalChecked()->Length()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| CHECK(obj->SetAccessor(env.local(), sym3, SymbolAccessorGetter, | 
| SymbolAccessorSetter) | 
| @@ -3100,7 +3100,7 @@ THREADED_TEST(PrivatePropertiesOnProxies) { | 
| v8::Local<v8::Private> priv2 = | 
| v8::Private::New(isolate, v8_str("my-private")); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| CHECK(priv2->Name() | 
| ->Equals(env.local(), | 
| @@ -3142,7 +3142,7 @@ THREADED_TEST(PrivatePropertiesOnProxies) { | 
| CHECK_EQ(num_props + 1, | 
| proxy->GetPropertyNames(env.local()).ToLocalChecked()->Length()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // Add another property and delete it afterwards to force the object in | 
| // slow case. | 
| @@ -3194,7 +3194,7 @@ THREADED_TEST(PrivateProperties) { | 
| v8::Local<v8::Private> priv2 = | 
| v8::Private::New(isolate, v8_str("my-private")); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| CHECK(priv2->Name() | 
| ->Equals(env.local(), | 
| @@ -3236,7 +3236,7 @@ THREADED_TEST(PrivateProperties) { | 
| CHECK_EQ(num_props + 1, | 
| obj->GetPropertyNames(env.local()).ToLocalChecked()->Length()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // Add another property and delete it afterwards to force the object in | 
| // slow case. | 
| @@ -3385,7 +3385,7 @@ THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { | 
| CheckInternalFieldsAreZero(ab); | 
| CHECK_EQ(1024, static_cast<int>(ab->ByteLength())); | 
| CHECK(!ab->IsExternal()); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| ScopedArrayBufferContents ab_contents(ab->Externalize()); | 
| CHECK(ab->IsExternal()); | 
| @@ -3661,7 +3661,7 @@ THREADED_TEST(SharedArrayBuffer_ApiInternalToExternal) { | 
| CheckInternalFieldsAreZero(ab); | 
| CHECK_EQ(1024, static_cast<int>(ab->ByteLength())); | 
| CHECK(!ab->IsExternal()); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| ScopedSharedArrayBufferContents ab_contents(ab->Externalize()); | 
| CHECK(ab->IsExternal()); | 
| @@ -3778,7 +3778,7 @@ THREADED_TEST(HiddenProperties) { | 
| v8::Local<v8::String> empty = v8_str(""); | 
| v8::Local<v8::String> prop_name = v8_str("prop_name"); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // Make sure delete of a non-existent hidden value works | 
| obj->DeletePrivate(env.local(), key).FromJust(); | 
| @@ -3796,7 +3796,7 @@ THREADED_TEST(HiddenProperties) { | 
| ->Int32Value(env.local()) | 
| .FromJust()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // Make sure we do not find the hidden property. | 
| CHECK(!obj->Has(env.local(), empty).FromJust()); | 
| @@ -3820,7 +3820,7 @@ THREADED_TEST(HiddenProperties) { | 
| ->Int32Value(env.local()) | 
| .FromJust()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // Add another property and delete it afterwards to force the object in | 
| // slow case. | 
| @@ -3844,7 +3844,7 @@ THREADED_TEST(HiddenProperties) { | 
| ->Int32Value(env.local()) | 
| .FromJust()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| CHECK(obj->SetPrivate(env.local(), key, v8::Integer::New(isolate, 2002)) | 
| .FromJust()); | 
| @@ -4135,7 +4135,7 @@ void SecondPassCallback(const v8::WeakCallbackInfo<TwoPassCallbackData>& data) { | 
| if (!trigger_gc) return; | 
| auto data_2 = new TwoPassCallbackData(data.GetIsolate(), instance_counter); | 
| data_2->SetWeak(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -4156,7 +4156,7 @@ TEST(TwoPassPhantomCallbacks) { | 
| data->SetWeak(); | 
| } | 
| CHECK_EQ(static_cast<int>(kLength), instance_counter); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| EmptyMessageQueues(isolate); | 
| CHECK_EQ(0, instance_counter); | 
| } | 
| @@ -4175,7 +4175,7 @@ TEST(TwoPassPhantomCallbacksNestedGc) { | 
| array[10]->MarkTriggerGc(); | 
| array[15]->MarkTriggerGc(); | 
| CHECK_EQ(static_cast<int>(kLength), instance_counter); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| EmptyMessageQueues(isolate); | 
| CHECK_EQ(0, instance_counter); | 
| } | 
| @@ -4286,8 +4286,7 @@ void TestGlobalValueMap() { | 
| } | 
| CHECK_EQ(initial_handle_count + 1, global_handles->global_handles_count()); | 
| if (map.IsWeak()) { | 
| -    CcTest::i_isolate()->heap()->CollectAllGarbage( | 
| -        i::Heap::kAbortIncrementalMarkingMask); | 
| +    CcTest::CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 
| } else { | 
| map.Clear(); | 
| } | 
| @@ -4518,9 +4517,7 @@ THREADED_TEST(ApiObjectGroups) { | 
| iso->SetReferenceFromGroup(id2, g2c1.handle); | 
| } | 
| // Do a single full GC, ensure incremental marking is stopped. | 
| -  v8::internal::Heap* heap = | 
| -      reinterpret_cast<v8::internal::Isolate*>(iso)->heap(); | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // All object should be alive. | 
| CHECK_EQ(0, counter.NumberOfWeakCalls()); | 
| @@ -4545,7 +4542,7 @@ THREADED_TEST(ApiObjectGroups) { | 
| iso->SetReferenceFromGroup(id2, g2c1.handle); | 
| } | 
|  | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // All objects should be gone. 5 global handles in total. | 
| CHECK_EQ(5, counter.NumberOfWeakCalls()); | 
| @@ -4556,7 +4553,7 @@ THREADED_TEST(ApiObjectGroups) { | 
| g2c1.handle.SetWeak(&g2c1, &WeakPointerCallback, | 
| v8::WeakCallbackType::kParameter); | 
|  | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(7, counter.NumberOfWeakCalls()); | 
| } | 
|  | 
| @@ -4623,9 +4620,7 @@ THREADED_TEST(ApiObjectGroupsForSubtypes) { | 
| iso->SetReferenceFromGroup(id2, g2c1.handle); | 
| } | 
| // Do a single full GC, ensure incremental marking is stopped. | 
| -  v8::internal::Heap* heap = | 
| -      reinterpret_cast<v8::internal::Isolate*>(iso)->heap(); | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // All object should be alive. | 
| CHECK_EQ(0, counter.NumberOfWeakCalls()); | 
| @@ -4650,7 +4645,7 @@ THREADED_TEST(ApiObjectGroupsForSubtypes) { | 
| iso->SetReferenceFromGroup(id2, g2c1.handle); | 
| } | 
|  | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // All objects should be gone. 5 global handles in total. | 
| CHECK_EQ(5, counter.NumberOfWeakCalls()); | 
| @@ -4661,7 +4656,7 @@ THREADED_TEST(ApiObjectGroupsForSubtypes) { | 
| g2c1.handle.SetWeak(&g2c1, &WeakPointerCallback, | 
| v8::WeakCallbackType::kParameter); | 
|  | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(7, counter.NumberOfWeakCalls()); | 
| } | 
|  | 
| @@ -4746,9 +4741,7 @@ THREADED_TEST(ApiObjectGroupsCycle) { | 
| iso->SetReferenceFromGroup(id4, g1s1.handle); | 
| } | 
| // Do a single full GC | 
| -  v8::internal::Heap* heap = | 
| -      reinterpret_cast<v8::internal::Isolate*>(iso)->heap(); | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // All object should be alive. | 
| CHECK_EQ(0, counter.NumberOfWeakCalls()); | 
| @@ -4777,7 +4770,7 @@ THREADED_TEST(ApiObjectGroupsCycle) { | 
| iso->SetReferenceFromGroup(id4, g1s1.handle); | 
| } | 
|  | 
| -  heap->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // All objects should be gone. 9 global handles in total. | 
| CHECK_EQ(9, counter.NumberOfWeakCalls()); | 
| @@ -5077,7 +5070,7 @@ TEST(NativeWeakMap) { | 
| CHECK(value->Equals(env.local(), weak_map->Get(obj2)).FromJust()); | 
| CHECK(value->Equals(env.local(), weak_map->Get(sym1)).FromJust()); | 
| } | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| { | 
| HandleScope scope(isolate); | 
| CHECK(value->Equals(env.local(), weak_map->Get(local1)).FromJust()); | 
| @@ -5099,7 +5092,7 @@ TEST(NativeWeakMap) { | 
| s1.handle.SetWeak(&s1, &WeakPointerCallback, | 
| v8::WeakCallbackType::kParameter); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(3, counter.NumberOfWeakCalls()); | 
|  | 
| CHECK(o1.handle.IsEmpty()); | 
| @@ -7770,9 +7763,9 @@ static void IndependentWeakHandle(bool global_gc, bool interlinked) { | 
| b->Set(context, v8_str("x"), a).FromJust(); | 
| } | 
| if (global_gc) { | 
| -      CcTest::heap()->CollectAllGarbage(); | 
| +      CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } else { | 
| -      CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +      CcTest::CollectGarbage(i::NEW_SPACE); | 
| } | 
| // We are relying on this creating a big flag array and reserving the space | 
| // up front. | 
| @@ -7792,9 +7785,9 @@ static void IndependentWeakHandle(bool global_gc, bool interlinked) { | 
| object_b.handle.MarkIndependent(); | 
| CHECK(object_b.handle.IsIndependent()); | 
| if (global_gc) { | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } else { | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +    CcTest::CollectGarbage(i::NEW_SPACE); | 
| } | 
| // A single GC should be enough to reclaim the memory, since we are using | 
| // phantom handles. | 
| @@ -7891,9 +7884,9 @@ void InternalFieldCallback(bool global_gc) { | 
| } | 
| } | 
| if (global_gc) { | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } else { | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +    CcTest::CollectGarbage(i::NEW_SPACE); | 
| } | 
|  | 
| CHECK_EQ(1729, t1->x()); | 
| @@ -7938,9 +7931,9 @@ void v8::internal::HeapTester::ResetWeakHandle(bool global_gc) { | 
| object_a.handle.Reset(iso, a); | 
| object_b.handle.Reset(iso, b); | 
| if (global_gc) { | 
| -      CcTest::heap()->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); | 
| +      CcTest::CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); | 
| } else { | 
| -      CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +      CcTest::CollectGarbage(i::NEW_SPACE); | 
| } | 
| } | 
|  | 
| @@ -7956,9 +7949,9 @@ void v8::internal::HeapTester::ResetWeakHandle(bool global_gc) { | 
| CHECK(object_b.handle.IsIndependent()); | 
| } | 
| if (global_gc) { | 
| -    CcTest::heap()->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); | 
| +    CcTest::CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); | 
| } else { | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +    CcTest::CollectGarbage(i::NEW_SPACE); | 
| } | 
| CHECK(object_a.flag); | 
| CHECK(object_b.flag); | 
| @@ -7970,12 +7963,11 @@ THREADED_HEAP_TEST(ResetWeakHandle) { | 
| v8::internal::HeapTester::ResetWeakHandle(true); | 
| } | 
|  | 
| +static void InvokeScavenge() { CcTest::CollectGarbage(i::NEW_SPACE); } | 
|  | 
| -static void InvokeScavenge() { CcTest::heap()->CollectGarbage(i::NEW_SPACE); } | 
| - | 
| - | 
| -static void InvokeMarkSweep() { CcTest::heap()->CollectAllGarbage(); } | 
| - | 
| +static void InvokeMarkSweep() { | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +} | 
|  | 
| static void ForceScavenge2( | 
| const v8::WeakCallbackInfo<FlagAndPersistent>& data) { | 
| @@ -8051,7 +8043,7 @@ static void ArgumentsTestCallback( | 
| CHECK(v8::Integer::New(isolate, 3)->Equals(context, args[2]).FromJust()); | 
| CHECK(v8::Undefined(isolate)->Equals(context, args[3]).FromJust()); | 
| v8::HandleScope scope(args.GetIsolate()); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -9381,7 +9373,7 @@ static bool security_check_with_gc_called; | 
| static bool SecurityTestCallbackWithGC(Local<v8::Context> accessing_context, | 
| Local<v8::Object> accessed_object, | 
| Local<v8::Value> data) { | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| security_check_with_gc_called = true; | 
| return true; | 
| } | 
| @@ -12169,7 +12161,7 @@ static void InterceptorCallICFastApi( | 
| reinterpret_cast<int*>(v8::External::Cast(*info.Data())->Value()); | 
| ++(*call_count); | 
| if ((*call_count) % 20 == 0) { | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
| } | 
|  | 
| @@ -12226,8 +12218,8 @@ static void GenerateSomeGarbage() { | 
| void DirectApiCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { | 
| static int count = 0; | 
| if (count++ % 3 == 0) { | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| -        // This should move the stub | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +    // This should move the stub | 
| GenerateSomeGarbage();  // This should ensure the old stub memory is flushed | 
| } | 
| } | 
| @@ -12296,7 +12288,7 @@ static int p_getter_count_3; | 
|  | 
| static Local<Value> DoDirectGetter() { | 
| if (++p_getter_count_3 % 3 == 0) { | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| GenerateSomeGarbage(); | 
| } | 
| return v8_str("Direct Getter Result"); | 
| @@ -14016,8 +14008,8 @@ static void CheckSurvivingGlobalObjectsCount(int expected) { | 
| // 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. | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| -  CcTest::heap()->CollectAllGarbage(i::Heap::kMakeHeapIterableMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kMakeHeapIterableMask); | 
| int count = GetGlobalObjectsCount(); | 
| #ifdef DEBUG | 
| if (count != expected) CcTest::heap()->TracePathToGlobal(); | 
| @@ -14118,7 +14110,8 @@ TEST(WeakCallbackApi) { | 
| handle, WeakApiCallback, v8::WeakCallbackType::kParameter); | 
| } | 
| reinterpret_cast<i::Isolate*>(isolate)->heap()->CollectAllGarbage( | 
| -      i::Heap::kAbortIncrementalMarkingMask); | 
| +      i::Heap::kAbortIncrementalMarkingMask, | 
| +      i::GarbageCollectionReason::kTesting); | 
| // Verify disposed. | 
| CHECK_EQ(initial_handles, globals->global_handles_count()); | 
| } | 
| @@ -14160,7 +14153,7 @@ THREADED_TEST(NewPersistentHandleFromWeakCallback) { | 
| handle1.SetWeak(&handle1, NewPersistentHandleCallback1, | 
| v8::WeakCallbackType::kParameter); | 
| handle2.Reset(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -14170,7 +14163,7 @@ v8::Persistent<v8::Object> to_be_disposed; | 
| void DisposeAndForceGcCallback2( | 
| const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { | 
| to_be_disposed.Reset(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -14194,7 +14187,7 @@ THREADED_TEST(DoNotUseDeletedNodesInSecondLevelGc) { | 
| handle1.SetWeak(&handle1, DisposeAndForceGcCallback1, | 
| v8::WeakCallbackType::kParameter); | 
| to_be_disposed.Reset(isolate, handle2); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| } | 
|  | 
| void DisposingCallback( | 
| @@ -14232,7 +14225,7 @@ THREADED_TEST(NoGlobalHandlesOrphaningDueToWeakCallback) { | 
| v8::WeakCallbackType::kParameter); | 
| handle3.SetWeak(&handle3, HandleCreatingCallback1, | 
| v8::WeakCallbackType::kParameter); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| EmptyMessageQueues(isolate); | 
| } | 
|  | 
| @@ -14793,7 +14786,7 @@ UNINITIALIZED_TEST(SetJitCodeEventHandler) { | 
| i::Heap* heap = i_isolate->heap(); | 
|  | 
| // Start with a clean slate. | 
| -  heap->CollectAllAvailableGarbage("TestSetJitCodeEventHandler_Prepare"); | 
| +  heap->CollectAllAvailableGarbage(i::GarbageCollectionReason::kTesting); | 
|  | 
| { | 
| v8::HandleScope scope(isolate); | 
| @@ -14837,7 +14830,7 @@ UNINITIALIZED_TEST(SetJitCodeEventHandler) { | 
| } | 
|  | 
| // Force code movement. | 
| -    heap->CollectAllAvailableGarbage("TestSetJitCodeEventHandler_Move"); | 
| +    heap->CollectAllAvailableGarbage(i::GarbageCollectionReason::kTesting); | 
|  | 
| isolate->SetJitCodeEventHandler(v8::kJitCodeEventDefault, NULL); | 
|  | 
| @@ -16465,7 +16458,7 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context, | 
| "}" | 
| "sum;"); | 
| // Force GC to trigger verification. | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(28, result->Int32Value(context).FromJust()); | 
|  | 
| // Make sure out-of-range loads do not throw. | 
| @@ -16681,12 +16674,12 @@ static void FixedTypedArrayTestHelper(i::ExternalArrayType array_type, | 
| CHECK_EQ(FixedTypedArrayClass::kInstanceType, | 
| fixed_array->map()->instance_type()); | 
| CHECK_EQ(kElementCount, fixed_array->length()); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| for (int i = 0; i < kElementCount; i++) { | 
| fixed_array->set(i, static_cast<ElementType>(i)); | 
| } | 
| // Force GC to trigger verification. | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| for (int i = 0; i < kElementCount; i++) { | 
| CHECK_EQ(static_cast<int64_t>(static_cast<ElementType>(i)), | 
| static_cast<int64_t>(fixed_array->get_scalar(i))); | 
| @@ -16876,10 +16869,10 @@ THREADED_TEST(SkipArrayBufferBackingStoreDuringGC) { | 
| Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(isolate, store_ptr, 8); | 
|  | 
| // Should not crash | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| // Should not move the pointer | 
| CHECK_EQ(ab->GetContents().Data(), store_ptr); | 
| @@ -16897,15 +16890,15 @@ THREADED_TEST(SkipArrayBufferDuringScavenge) { | 
| reinterpret_cast<uint8_t*>(*reinterpret_cast<uintptr_t*>(*tmp)); | 
|  | 
| // Make `store_ptr` point to from space | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +  CcTest::CollectGarbage(i::NEW_SPACE); | 
|  | 
| // Create ArrayBuffer with pointer-that-cannot-be-visited in the backing store | 
| Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(isolate, store_ptr, 8); | 
|  | 
| // Should not crash, | 
| // i.e. backing store pointer should not be treated as a heap object pointer | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| -  CcTest::heap()->CollectGarbage(i::NEW_SPACE);  // in old gen now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in survivor space now | 
| +  CcTest::CollectGarbage(i::NEW_SPACE);  // in old gen now | 
|  | 
| // Use `ab` to silence compiler warning | 
| CHECK_EQ(ab->GetContents().Data(), store_ptr); | 
| @@ -18206,7 +18199,8 @@ TEST(TestIdleNotification) { | 
| bool finished = false; | 
| for (int i = 0; i < 200 && !finished; i++) { | 
| if (i < 10 && CcTest::heap()->incremental_marking()->IsStopped()) { | 
| -      CcTest::heap()->StartIdleIncrementalMarking(); | 
| +      CcTest::heap()->StartIdleIncrementalMarking( | 
| +          i::GarbageCollectionReason::kTesting); | 
| } | 
| finished = env->GetIsolate()->IdleNotificationDeadline( | 
| (v8::base::TimeTicks::HighResolutionNow().ToInternalValue() / | 
| @@ -18225,7 +18219,7 @@ TEST(TestIdleNotification) { | 
| TEST(Regress2333) { | 
| LocalContext env; | 
| for (int i = 0; i < 3; i++) { | 
| -    CcTest::heap()->CollectGarbage(i::NEW_SPACE); | 
| +    CcTest::CollectGarbage(i::NEW_SPACE); | 
| } | 
| } | 
|  | 
| @@ -18363,7 +18357,7 @@ TEST(ExternalizeOldSpaceTwoByteCons) { | 
| ->ToString(env.local()) | 
| .ToLocalChecked(); | 
| CHECK(v8::Utils::OpenHandle(*cons)->IsConsString()); | 
| -  CcTest::heap()->CollectAllAvailableGarbage(); | 
| +  CcTest::CollectAllAvailableGarbage(); | 
| CHECK(CcTest::heap()->old_space()->Contains(*v8::Utils::OpenHandle(*cons))); | 
|  | 
| TestResource* resource = new TestResource( | 
| @@ -18387,7 +18381,7 @@ TEST(ExternalizeOldSpaceOneByteCons) { | 
| ->ToString(env.local()) | 
| .ToLocalChecked(); | 
| CHECK(v8::Utils::OpenHandle(*cons)->IsConsString()); | 
| -  CcTest::heap()->CollectAllAvailableGarbage(); | 
| +  CcTest::CollectAllAvailableGarbage(); | 
| CHECK(CcTest::heap()->old_space()->Contains(*v8::Utils::OpenHandle(*cons))); | 
|  | 
| TestOneByteResource* resource = | 
| @@ -18431,7 +18425,7 @@ TEST(VisitExternalStrings) { | 
| v8::Local<v8::String> string3 = | 
| v8::String::NewExternalTwoByte(env->GetIsolate(), resource[3]) | 
| .ToLocalChecked(); | 
| -  CcTest::heap()->CollectAllAvailableGarbage();  // Tenure string. | 
| +  CcTest::CollectAllAvailableGarbage();  // Tenure string. | 
| // Turn into a symbol. | 
| i::Handle<i::String> string3_i = v8::Utils::OpenHandle(*string3); | 
| CHECK(!CcTest::i_isolate()->factory()->InternalizeString( | 
| @@ -18518,7 +18512,7 @@ TEST(ExternalInternalizedStringCollectedAtGC) { | 
|  | 
| // Garbage collector deals swift blows to evil. | 
| CcTest::i_isolate()->compilation_cache()->Clear(); | 
| -  CcTest::heap()->CollectAllAvailableGarbage(); | 
| +  CcTest::CollectAllAvailableGarbage(); | 
|  | 
| // Ring has been destroyed.  Free Peoples of Middle-earth Rejoice. | 
| CHECK_EQ(1, destroyed); | 
| @@ -18719,7 +18713,7 @@ TEST(Regress528) { | 
| other_context->Enter(); | 
| CompileRun(source_simple); | 
| other_context->Exit(); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| if (GetGlobalObjectsCount() == 1) break; | 
| } | 
| CHECK_GE(2, gc_count); | 
| @@ -18741,7 +18735,7 @@ TEST(Regress528) { | 
| other_context->Enter(); | 
| CompileRun(source_eval); | 
| other_context->Exit(); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| if (GetGlobalObjectsCount() == 1) break; | 
| } | 
| CHECK_GE(2, gc_count); | 
| @@ -18768,7 +18762,7 @@ TEST(Regress528) { | 
| other_context->Enter(); | 
| CompileRun(source_exception); | 
| other_context->Exit(); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| if (GetGlobalObjectsCount() == 1) break; | 
| } | 
| CHECK_GE(2, gc_count); | 
| @@ -19385,8 +19379,7 @@ void PrologueCallbackAlloc(v8::Isolate* isolate, | 
| Local<Object> obj = Object::New(isolate); | 
| CHECK(!obj.IsEmpty()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage( | 
| -      i::Heap::kAbortIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -19405,8 +19398,7 @@ void EpilogueCallbackAlloc(v8::Isolate* isolate, | 
| Local<Object> obj = Object::New(isolate); | 
| CHECK(!obj.IsEmpty()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage( | 
| -      i::Heap::kAbortIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 
| } | 
|  | 
|  | 
| @@ -19419,26 +19411,26 @@ TEST(GCCallbacksOld) { | 
| context->GetIsolate()->AddGCEpilogueCallback(EpilogueCallback); | 
| CHECK_EQ(0, prologue_call_count); | 
| CHECK_EQ(0, epilogue_call_count); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(1, prologue_call_count); | 
| CHECK_EQ(1, epilogue_call_count); | 
| context->GetIsolate()->AddGCPrologueCallback(PrologueCallbackSecond); | 
| context->GetIsolate()->AddGCEpilogueCallback(EpilogueCallbackSecond); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| 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); | 
| context->GetIsolate()->RemoveGCPrologueCallback(PrologueCallback); | 
| context->GetIsolate()->RemoveGCEpilogueCallback(EpilogueCallback); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| 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); | 
| context->GetIsolate()->RemoveGCPrologueCallback(PrologueCallbackSecond); | 
| context->GetIsolate()->RemoveGCEpilogueCallback(EpilogueCallbackSecond); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(2, prologue_call_count); | 
| CHECK_EQ(2, epilogue_call_count); | 
| CHECK_EQ(2, prologue_call_count_second); | 
| @@ -19454,26 +19446,26 @@ TEST(GCCallbacks) { | 
| isolate->AddGCEpilogueCallback(EpilogueCallback); | 
| CHECK_EQ(0, prologue_call_count); | 
| CHECK_EQ(0, epilogue_call_count); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(1, prologue_call_count); | 
| CHECK_EQ(1, epilogue_call_count); | 
| isolate->AddGCPrologueCallback(PrologueCallbackSecond); | 
| isolate->AddGCEpilogueCallback(EpilogueCallbackSecond); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| 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); | 
| isolate->RemoveGCPrologueCallback(PrologueCallback); | 
| isolate->RemoveGCEpilogueCallback(EpilogueCallback); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| 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); | 
| isolate->RemoveGCPrologueCallback(PrologueCallbackSecond); | 
| isolate->RemoveGCEpilogueCallback(EpilogueCallbackSecond); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CHECK_EQ(2, prologue_call_count); | 
| CHECK_EQ(2, epilogue_call_count); | 
| CHECK_EQ(2, prologue_call_count_second); | 
| @@ -19483,8 +19475,7 @@ TEST(GCCallbacks) { | 
| CHECK_EQ(0, epilogue_call_count_alloc); | 
| isolate->AddGCPrologueCallback(PrologueCallbackAlloc); | 
| isolate->AddGCEpilogueCallback(EpilogueCallbackAlloc); | 
| -  CcTest::heap()->CollectAllGarbage( | 
| -      i::Heap::kAbortIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 
| CHECK_EQ(1, prologue_call_count_alloc); | 
| CHECK_EQ(1, epilogue_call_count_alloc); | 
| isolate->RemoveGCPrologueCallback(PrologueCallbackAlloc); | 
| @@ -19662,7 +19653,7 @@ TEST(ContainsOnlyOneByte) { | 
| void FailedAccessCheckCallbackGC(Local<v8::Object> target, | 
| v8::AccessType type, | 
| Local<v8::Value> data) { | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| CcTest::isolate()->ThrowException( | 
| v8::Exception::Error(v8_str("cross context"))); | 
| } | 
| @@ -20287,7 +20278,7 @@ TEST(DontDeleteCellLoadIC) { | 
| "})()", | 
| "ReferenceError: cell is not defined"); | 
| CompileRun("cell = \"new_second\";"); | 
| -    CcTest::heap()->CollectAllGarbage(); | 
| +    CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| ExpectString("readCell()", "new_second"); | 
| ExpectString("readCell()", "new_second"); | 
| } | 
| @@ -20357,8 +20348,8 @@ TEST(PersistentHandleInNewSpaceVisitor) { | 
| object1.SetWrapperClassId(42); | 
| CHECK_EQ(42, object1.WrapperClassId()); | 
|  | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| -  CcTest::heap()->CollectAllGarbage(); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); | 
|  | 
| v8::Persistent<v8::Object> object2(isolate, v8::Object::New(isolate)); | 
| CHECK_EQ(0, object2.WrapperClassId()); | 
| @@ -21035,7 +21026,7 @@ THREADED_TEST(Regress1516) { | 
| CHECK_LE(1, elements); | 
|  | 
| // We have to abort incremental marking here to abandon black pages. | 
| -  CcTest::heap()->CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 
| +  CcTest::CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask); | 
|  | 
| CHECK_GT(elements, CountLiveMapsInMapCache(CcTest::i_isolate()->context())); | 
| } | 
|  |