1// Copyright 2021 the V8 project authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef V8_SNAPSHOT_SERIALIZER_INL_H_ 6#define V8_SNAPSHOT_SERIALIZER_INL_H_ 7 8#include "src/roots/roots-inl.h" 9#include "src/snapshot/serializer.h" 10 11namespace v8 { 12namespace internal { 13 14bool Serializer::IsNotMappedSymbol(HeapObject obj) const { 15 Object not_mapped_symbol = ReadOnlyRoots(isolate()).not_mapped_symbol(); 16 if (V8_EXTERNAL_CODE_SPACE_BOOL) { 17 // It's possible that a Code object might have the same compressed value 18 // as the not_mapped_symbol, so we must compare full pointers. 19 // TODO(v8:11880): Avoid the need for this special case by never putting 20 // Code references anywhere except the CodeDadaContainer objects. 21 // In particular, the Code objects should not appear in serializer's 22 // identity map. This should be possible once the IsolateData::builtins 23 // table is migrated to contain CodeT references. 24 return obj.ptr() == not_mapped_symbol.ptr(); 25 } 26 return obj == not_mapped_symbol; 27} 28 29} // namespace internal 30} // namespace v8 31 32#endif // V8_SNAPSHOT_SERIALIZER_INL_H_ 33