| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index 779c86846856e452fc312ec94517f6bfdd29f607..456fc34fc8cf8601d5902937d3451cc8a0205a58 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -4907,84 +4907,29 @@
|
| }
|
|
|
|
|
| -// static
|
| -bool Heap::RootIsImmortalImmovable(RootListIndex index) {
|
| - // Heap roots that are known to be immortal immovable, for which we can safely
|
| - // skip write barriers. This list is not complete and has omissions.
|
| - switch (index) {
|
| - case Heap::kByteArrayMapRootIndex:
|
| - case Heap::kFreeSpaceMapRootIndex:
|
| - case Heap::kOnePointerFillerMapRootIndex:
|
| - case Heap::kTwoPointerFillerMapRootIndex:
|
| - case Heap::kUndefinedValueRootIndex:
|
| - case Heap::kTheHoleValueRootIndex:
|
| - case Heap::kNullValueRootIndex:
|
| - case Heap::kTrueValueRootIndex:
|
| - case Heap::kFalseValueRootIndex:
|
| - case Heap::kUninitializedValueRootIndex:
|
| - case Heap::kCellMapRootIndex:
|
| - case Heap::kGlobalPropertyCellMapRootIndex:
|
| - case Heap::kSharedFunctionInfoMapRootIndex:
|
| - case Heap::kMetaMapRootIndex:
|
| - case Heap::kHeapNumberMapRootIndex:
|
| - case Heap::kMutableHeapNumberMapRootIndex:
|
| - case Heap::kFloat32x4MapRootIndex:
|
| - case Heap::kNativeContextMapRootIndex:
|
| - case Heap::kFixedArrayMapRootIndex:
|
| - case Heap::kCodeMapRootIndex:
|
| - case Heap::kScopeInfoMapRootIndex:
|
| - case Heap::kFixedCOWArrayMapRootIndex:
|
| - case Heap::kFixedDoubleArrayMapRootIndex:
|
| - case Heap::kWeakCellMapRootIndex:
|
| - case Heap::kNoInterceptorResultSentinelRootIndex:
|
| - case Heap::kHashTableMapRootIndex:
|
| - case Heap::kOrderedHashTableMapRootIndex:
|
| - case Heap::kEmptyFixedArrayRootIndex:
|
| - case Heap::kEmptyByteArrayRootIndex:
|
| - case Heap::kEmptyDescriptorArrayRootIndex:
|
| - case Heap::kArgumentsMarkerRootIndex:
|
| - case Heap::kSymbolMapRootIndex:
|
| - case Heap::kSloppyArgumentsElementsMapRootIndex:
|
| - case Heap::kFunctionContextMapRootIndex:
|
| - case Heap::kCatchContextMapRootIndex:
|
| - case Heap::kWithContextMapRootIndex:
|
| - case Heap::kBlockContextMapRootIndex:
|
| - case Heap::kModuleContextMapRootIndex:
|
| - case Heap::kScriptContextMapRootIndex:
|
| - case Heap::kUndefinedMapRootIndex:
|
| - case Heap::kTheHoleMapRootIndex:
|
| - case Heap::kNullMapRootIndex:
|
| - case Heap::kBooleanMapRootIndex:
|
| - case Heap::kUninitializedMapRootIndex:
|
| - case Heap::kArgumentsMarkerMapRootIndex:
|
| - case Heap::kJSMessageObjectMapRootIndex:
|
| - case Heap::kForeignMapRootIndex:
|
| - case Heap::kNeanderMapRootIndex:
|
| - case Heap::kempty_stringRootIndex:
|
| -#define STRING_INDEX_DECLARATION(Name, str) case Heap::k##Name##RootIndex:
|
| - INTERNALIZED_STRING_LIST(STRING_INDEX_DECLARATION)
|
| -#undef STRING_INDEX_DECLARATION
|
| -#define SYMBOL_INDEX_DECLARATION(Name) case Heap::k##Name##RootIndex:
|
| - PRIVATE_SYMBOL_LIST(SYMBOL_INDEX_DECLARATION)
|
| -#undef SYMBOL_INDEX_DECLARATION
|
| -#define STRING_TYPE_INDEX_DECLARATION(NAME, size, name, Name) \
|
| - case Heap::k##Name##MapRootIndex:
|
| - STRING_TYPE_LIST(STRING_TYPE_INDEX_DECLARATION)
|
| -#undef STRING_TYPE_INDEX_DECLARATION
|
| - return true;
|
| +bool Heap::RootIsImmortalImmovable(int root_index) {
|
| + switch (root_index) {
|
| +#define CASE(name) \
|
| + case Heap::k##name##RootIndex: \
|
| + return true;
|
| + IMMORTAL_IMMOVABLE_ROOT_LIST(CASE);
|
| +#undef CASE
|
| default:
|
| return false;
|
| }
|
| }
|
|
|
|
|
| -bool Heap::GetRootListIndex(Object* object, RootListIndex* index_return) const {
|
| - for (size_t i = 0; i < arraysize(roots_); ++i) {
|
| - if (roots_[i] == object) {
|
| - *index_return = static_cast<RootListIndex>(i);
|
| - return true;
|
| - }
|
| - }
|
| +bool Heap::GetRootListIndex(Handle<HeapObject> object,
|
| + Heap::RootListIndex* index_return) {
|
| + Object* ptr = *object;
|
| +#define IMMORTAL_IMMOVABLE_ROOT(Name) \
|
| + if (ptr == roots_[Heap::k##Name##RootIndex]) { \
|
| + *index_return = k##Name##RootIndex; \
|
| + return true; \
|
| + }
|
| + IMMORTAL_IMMOVABLE_ROOT_LIST(IMMORTAL_IMMOVABLE_ROOT)
|
| +#undef IMMORTAL_IMMOVABLE_ROOT
|
| return false;
|
| }
|
|
|
|
|