[heap] Reduce size of possibly empty buckets
Before this CL a byte was used per bucket to store whether the bucket is possibly empty or not. This CL changes this such that each bucket only needs a single bit. PossiblyEmptyBuckets is now a word in the page header. If more bits are needed than fit into a single word, an external bitmap is allocated using AlignedAlloc. Storing this on the page header, allows to remove initial_buckets from the SlotSet. The SlotSet allocation is then again a power-of-2 in release mode. Change-Id: If61fd5cfa153f98757beeb444a530f6e2803fdb6 Bug: chromium:1023139 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1906376 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#64991}
This commit is contained in:
parent
be306c925b
commit
80caf2cf53
@ -41,20 +41,6 @@ class RememberedSetOperations {
|
||||
return slots;
|
||||
}
|
||||
|
||||
template <typename Callback>
|
||||
static int IterateAndTrackEmptyBuckets(
|
||||
SlotSet* slot_set, MemoryChunk* chunk, Callback callback,
|
||||
Worklist<MemoryChunk*, 64>::View empty_chunks) {
|
||||
int slots = 0;
|
||||
if (slot_set != nullptr) {
|
||||
bool found_empty_bucket = false;
|
||||
slots += slot_set->IterateAndTrackEmptyBuckets(
|
||||
chunk->address(), chunk->buckets(), callback, &found_empty_bucket);
|
||||
if (found_empty_bucket) empty_chunks.Push(chunk);
|
||||
}
|
||||
return slots;
|
||||
}
|
||||
|
||||
static void Remove(SlotSet* slot_set, MemoryChunk* chunk, Address slot_addr) {
|
||||
if (slot_set != nullptr) {
|
||||
uintptr_t offset = slot_addr - chunk->address();
|
||||
@ -168,12 +154,16 @@ class RememberedSet : public AllStatic {
|
||||
static int IterateAndTrackEmptyBuckets(
|
||||
MemoryChunk* chunk, Callback callback,
|
||||
Worklist<MemoryChunk*, 64>::View empty_chunks) {
|
||||
SlotSet* slots = chunk->slot_set<type>();
|
||||
bool empty_bucket_found = false;
|
||||
int slot_count = RememberedSetOperations::IterateAndTrackEmptyBuckets(
|
||||
slots, chunk, callback, empty_chunks);
|
||||
if (empty_bucket_found) empty_chunks.Push(chunk);
|
||||
return slot_count;
|
||||
SlotSet* slot_set = chunk->slot_set<type>();
|
||||
int slots = 0;
|
||||
if (slot_set != nullptr) {
|
||||
PossiblyEmptyBuckets* possibly_empty_buckets =
|
||||
chunk->possibly_empty_buckets();
|
||||
slots += slot_set->IterateAndTrackEmptyBuckets(
|
||||
chunk->address(), chunk->buckets(), callback, possibly_empty_buckets);
|
||||
if (!possibly_empty_buckets->IsEmpty()) empty_chunks.Push(chunk);
|
||||
}
|
||||
return slots;
|
||||
}
|
||||
|
||||
static void FreeEmptyBuckets(MemoryChunk* chunk) {
|
||||
@ -188,7 +178,8 @@ class RememberedSet : public AllStatic {
|
||||
DCHECK(type == OLD_TO_NEW);
|
||||
SlotSet* slot_set = chunk->slot_set<type, AccessMode::NON_ATOMIC>();
|
||||
if (slot_set != nullptr &&
|
||||
slot_set->CheckPossiblyEmptyBuckets(chunk->buckets())) {
|
||||
slot_set->CheckPossiblyEmptyBuckets(chunk->buckets(),
|
||||
chunk->possibly_empty_buckets())) {
|
||||
chunk->ReleaseSlotSet<type>();
|
||||
return true;
|
||||
}
|
||||
|
@ -373,9 +373,7 @@ void ScavengerCollector::CollectGarbage() {
|
||||
#ifdef DEBUG
|
||||
RememberedSet<OLD_TO_NEW>::IterateMemoryChunks(
|
||||
heap_, [](MemoryChunk* chunk) {
|
||||
SlotSet* slot_set = chunk->slot_set<OLD_TO_NEW>();
|
||||
DCHECK_IMPLIES(slot_set != nullptr,
|
||||
slot_set->IsPossiblyEmptyCleared());
|
||||
DCHECK(chunk->possibly_empty_buckets()->IsEmpty());
|
||||
});
|
||||
#endif
|
||||
}
|
||||
|
@ -23,6 +23,105 @@ namespace internal {
|
||||
|
||||
enum SlotCallbackResult { KEEP_SLOT, REMOVE_SLOT };
|
||||
|
||||
// Possibly empty buckets (buckets that do not contain any slots) are discovered
|
||||
// by the scavenger. Buckets might become non-empty when promoting objects later
|
||||
// or in another thread, so all those buckets need to be revisited.
|
||||
// Track possibly empty buckets within a SlotSet in this data structure. The
|
||||
// class contains a word-sized bitmap, in case more bits are needed the bitmap
|
||||
// is replaced with a pointer to a malloc-allocated bitmap.
|
||||
class PossiblyEmptyBuckets {
|
||||
public:
|
||||
PossiblyEmptyBuckets() : bitmap_(kNullAddress) {}
|
||||
PossiblyEmptyBuckets(PossiblyEmptyBuckets&& other) V8_NOEXCEPT
|
||||
: bitmap_(other.bitmap_) {
|
||||
other.bitmap_ = kNullAddress;
|
||||
}
|
||||
|
||||
~PossiblyEmptyBuckets() { Release(); }
|
||||
|
||||
void Initialize() {
|
||||
bitmap_ = kNullAddress;
|
||||
DCHECK(!IsAllocated());
|
||||
}
|
||||
|
||||
void Release() {
|
||||
if (IsAllocated()) {
|
||||
AlignedFree(BitmapArray());
|
||||
}
|
||||
bitmap_ = kNullAddress;
|
||||
DCHECK(!IsAllocated());
|
||||
}
|
||||
|
||||
void Insert(size_t bucket_index, size_t buckets) {
|
||||
if (IsAllocated()) {
|
||||
InsertAllocated(bucket_index);
|
||||
} else if (bucket_index + 1 < kBitsPerWord) {
|
||||
bitmap_ |= static_cast<uintptr_t>(1) << (bucket_index + 1);
|
||||
} else {
|
||||
Allocate(buckets);
|
||||
InsertAllocated(bucket_index);
|
||||
}
|
||||
}
|
||||
|
||||
bool Contains(size_t bucket_index) {
|
||||
if (IsAllocated()) {
|
||||
size_t word_idx = bucket_index / kBitsPerWord;
|
||||
uintptr_t* word = BitmapArray() + word_idx;
|
||||
return *word &
|
||||
(static_cast<uintptr_t>(1) << (bucket_index % kBitsPerWord));
|
||||
} else if (bucket_index + 1 < kBitsPerWord) {
|
||||
return bitmap_ & (static_cast<uintptr_t>(1) << (bucket_index + 1));
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool IsEmpty() { return bitmap_ == kNullAddress; }
|
||||
|
||||
private:
|
||||
Address bitmap_;
|
||||
static const Address kPointerTag = 1;
|
||||
static const int kWordSize = sizeof(uintptr_t);
|
||||
static const int kBitsPerWord = kWordSize * kBitsPerByte;
|
||||
|
||||
bool IsAllocated() { return bitmap_ & kPointerTag; }
|
||||
|
||||
void Allocate(size_t buckets) {
|
||||
DCHECK(!IsAllocated());
|
||||
size_t words = WordsForBuckets(buckets);
|
||||
uintptr_t* ptr = reinterpret_cast<uintptr_t*>(
|
||||
AlignedAlloc(words * kWordSize, kSystemPointerSize));
|
||||
ptr[0] = bitmap_ >> 1;
|
||||
|
||||
for (size_t word_idx = 1; word_idx < words; word_idx++) {
|
||||
ptr[word_idx] = 0;
|
||||
}
|
||||
bitmap_ = reinterpret_cast<Address>(ptr) + kPointerTag;
|
||||
DCHECK(IsAllocated());
|
||||
}
|
||||
|
||||
void InsertAllocated(size_t bucket_index) {
|
||||
DCHECK(IsAllocated());
|
||||
size_t word_idx = bucket_index / kBitsPerWord;
|
||||
uintptr_t* word = BitmapArray() + word_idx;
|
||||
*word |= static_cast<uintptr_t>(1) << (bucket_index % kBitsPerWord);
|
||||
}
|
||||
|
||||
static size_t WordsForBuckets(size_t buckets) {
|
||||
return (buckets / kBitsPerByte + kWordSize - 1) & ~(kWordSize - 1);
|
||||
}
|
||||
|
||||
uintptr_t* BitmapArray() {
|
||||
DCHECK(IsAllocated());
|
||||
return reinterpret_cast<uintptr_t*>(bitmap_ & ~kPointerTag);
|
||||
}
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(PossiblyEmptyBuckets);
|
||||
};
|
||||
|
||||
STATIC_ASSERT(std::is_standard_layout<PossiblyEmptyBuckets>::value);
|
||||
STATIC_ASSERT(sizeof(PossiblyEmptyBuckets) == kSystemPointerSize);
|
||||
|
||||
// Data structure for maintaining a set of slots in a standard (non-large)
|
||||
// page.
|
||||
// The data structure assumes that the slots are pointer size aligned and
|
||||
@ -35,42 +134,33 @@ class SlotSet {
|
||||
KEEP_EMPTY_BUCKETS // An empty bucket will be kept.
|
||||
};
|
||||
|
||||
enum class PossiblyEmpty : uint8_t {
|
||||
kYes, // Bucket is non-null but might be empty.
|
||||
kNoOrNull, // Bucket is null or cannot be empty.
|
||||
};
|
||||
|
||||
SlotSet() = delete;
|
||||
|
||||
static SlotSet* Allocate(size_t buckets) {
|
||||
// SlotSet* slot_set ----------------------+
|
||||
// |
|
||||
// v
|
||||
// +----------------------+-----------------+-------------------------+
|
||||
// | possibly empty array | initial buckets | buckets array |
|
||||
// +----------------------+-----------------+-------------------------+
|
||||
// 1 byte * buckets pointer-sized pointer-sized * buckets
|
||||
// SlotSet* slot_set --+
|
||||
// |
|
||||
// v
|
||||
// +-----------------+-------------------------+
|
||||
// | initial buckets | buckets array |
|
||||
// +-----------------+-------------------------+
|
||||
// pointer-sized pointer-sized * buckets
|
||||
//
|
||||
//
|
||||
// The SlotSet pointer points to the beginning of the buckets array for
|
||||
// faster access in the write barrier. The number of buckets is needed for
|
||||
// calculating the size of this data structure.
|
||||
// Since pages can shrink we also store the initial_buckets size.
|
||||
//
|
||||
size_t possibly_empty_array_size = PossiblyEmptyArraySize(buckets);
|
||||
size_t buckets_size = buckets * sizeof(Bucket*);
|
||||
size_t size =
|
||||
possibly_empty_array_size + kInitialBucketsSize + buckets_size;
|
||||
size_t size = kInitialBucketsSize + buckets_size;
|
||||
void* allocation = AlignedAlloc(size, kSystemPointerSize);
|
||||
SlotSet* slot_set = reinterpret_cast<SlotSet*>(
|
||||
reinterpret_cast<uint8_t*>(allocation) + possibly_empty_array_size +
|
||||
kInitialBucketsSize);
|
||||
reinterpret_cast<uint8_t*>(allocation) + kInitialBucketsSize);
|
||||
DCHECK(
|
||||
IsAligned(reinterpret_cast<uintptr_t>(slot_set), kSystemPointerSize));
|
||||
#ifdef DEBUG
|
||||
*slot_set->initial_buckets() = buckets;
|
||||
#endif
|
||||
for (size_t i = 0; i < buckets; i++) {
|
||||
*slot_set->bucket(i) = nullptr;
|
||||
*slot_set->possibly_empty(i) = PossiblyEmpty::kNoOrNull;
|
||||
}
|
||||
return slot_set;
|
||||
}
|
||||
@ -82,17 +172,15 @@ class SlotSet {
|
||||
slot_set->ReleaseBucket(i);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
size_t initial_buckets = *slot_set->initial_buckets();
|
||||
|
||||
#ifdef DEBUG
|
||||
for (size_t i = buckets; i < initial_buckets; i++) {
|
||||
DCHECK_NULL(*slot_set->bucket(i));
|
||||
}
|
||||
#endif
|
||||
|
||||
size_t possibly_empty_array_size = PossiblyEmptyArraySize(initial_buckets);
|
||||
AlignedFree(reinterpret_cast<uint8_t*>(slot_set) - kInitialBucketsSize -
|
||||
possibly_empty_array_size);
|
||||
AlignedFree(reinterpret_cast<uint8_t*>(slot_set) - kInitialBucketsSize);
|
||||
}
|
||||
|
||||
static size_t BucketsForSize(size_t size) {
|
||||
@ -260,13 +348,12 @@ class SlotSet {
|
||||
// Assumes that the possibly empty-array was already cleared by
|
||||
// CheckPossiblyEmptyBuckets.
|
||||
template <typename Callback>
|
||||
size_t IterateAndTrackEmptyBuckets(Address chunk_start, size_t buckets,
|
||||
Callback callback,
|
||||
bool* empty_bucket_found) {
|
||||
size_t IterateAndTrackEmptyBuckets(
|
||||
Address chunk_start, size_t buckets, Callback callback,
|
||||
PossiblyEmptyBuckets* possibly_empty_buckets) {
|
||||
return Iterate(chunk_start, buckets, callback,
|
||||
[this, empty_bucket_found](size_t bucket_index) {
|
||||
*possibly_empty(bucket_index) = PossiblyEmpty::kYes;
|
||||
*empty_bucket_found = true;
|
||||
[possibly_empty_buckets, buckets](size_t bucket_index) {
|
||||
possibly_empty_buckets->Insert(bucket_index, buckets);
|
||||
});
|
||||
}
|
||||
|
||||
@ -283,42 +370,31 @@ class SlotSet {
|
||||
|
||||
// Check whether possibly empty buckets are really empty. Empty buckets are
|
||||
// freed and the possibly empty state is cleared for all buckets.
|
||||
bool CheckPossiblyEmptyBuckets(size_t buckets) {
|
||||
bool CheckPossiblyEmptyBuckets(size_t buckets,
|
||||
PossiblyEmptyBuckets* possibly_empty_buckets) {
|
||||
bool empty = true;
|
||||
for (size_t bucket_index = 0; bucket_index < buckets; bucket_index++) {
|
||||
Bucket* bucket = LoadBucket<AccessMode::NON_ATOMIC>(bucket_index);
|
||||
if (bucket) {
|
||||
if (*possibly_empty(bucket_index) == PossiblyEmpty::kYes) {
|
||||
if (possibly_empty_buckets->Contains(bucket_index)) {
|
||||
if (bucket->IsEmpty()) {
|
||||
ReleaseBucket<AccessMode::NON_ATOMIC>(bucket_index);
|
||||
} else {
|
||||
empty = false;
|
||||
}
|
||||
*possibly_empty(bucket_index) = PossiblyEmpty::kNoOrNull;
|
||||
} else {
|
||||
empty = false;
|
||||
}
|
||||
} else {
|
||||
DCHECK_EQ(*possibly_empty(bucket_index), PossiblyEmpty::kNoOrNull);
|
||||
DCHECK(!possibly_empty_buckets->Contains(bucket_index));
|
||||
}
|
||||
}
|
||||
|
||||
possibly_empty_buckets->Release();
|
||||
|
||||
return empty;
|
||||
}
|
||||
|
||||
// Check wether all possibly empty entries are cleared. Only used
|
||||
// for testing in debug-builds.
|
||||
bool IsPossiblyEmptyCleared() {
|
||||
size_t buckets = *initial_buckets();
|
||||
for (size_t bucket_index = 0; bucket_index < buckets; bucket_index++) {
|
||||
if (*possibly_empty(bucket_index) != PossiblyEmpty::kNoOrNull) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static const int kCellsPerBucket = 32;
|
||||
static const int kCellsPerBucketLog2 = 5;
|
||||
static const int kCellSizeBytesLog2 = 2;
|
||||
@ -500,20 +576,15 @@ class SlotSet {
|
||||
*bit_index = static_cast<int>(slot & (kBitsPerCell - 1));
|
||||
}
|
||||
|
||||
static size_t PossiblyEmptyArraySize(size_t buckets) {
|
||||
return (sizeof(PossiblyEmpty) * buckets + (kSystemPointerSize - 1)) /
|
||||
kSystemPointerSize * kSystemPointerSize;
|
||||
}
|
||||
|
||||
Bucket** buckets() { return reinterpret_cast<Bucket**>(this); }
|
||||
Bucket** bucket(size_t bucket_index) { return buckets() + bucket_index; }
|
||||
PossiblyEmpty* possibly_empty(size_t bucket_index) {
|
||||
return reinterpret_cast<PossiblyEmpty*>(buckets()) - kInitialBucketsSize -
|
||||
1 - bucket_index;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
size_t* initial_buckets() { return reinterpret_cast<size_t*>(this) - 1; }
|
||||
static const int kInitialBucketsSize = sizeof(size_t);
|
||||
#else
|
||||
static const int kInitialBucketsSize = 0;
|
||||
#endif
|
||||
};
|
||||
|
||||
STATIC_ASSERT(std::is_standard_layout<SlotSet>::value);
|
||||
|
@ -750,6 +750,8 @@ MemoryChunk* MemoryChunk::Initialize(Heap* heap, Address base, size_t size,
|
||||
chunk->code_object_registry_ = nullptr;
|
||||
}
|
||||
|
||||
chunk->possibly_empty_buckets_.Initialize();
|
||||
|
||||
return chunk;
|
||||
}
|
||||
|
||||
@ -1394,6 +1396,7 @@ void MemoryChunk::ReleaseAllocatedMemoryNeededForWritableChunk() {
|
||||
code_object_registry_ = nullptr;
|
||||
}
|
||||
|
||||
possibly_empty_buckets_.Release();
|
||||
ReleaseSlotSet<OLD_TO_NEW>();
|
||||
ReleaseSweepingSlotSet();
|
||||
ReleaseSlotSet<OLD_TO_OLD>();
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "src/heap/heap.h"
|
||||
#include "src/heap/invalidated-slots.h"
|
||||
#include "src/heap/marking.h"
|
||||
#include "src/heap/slot-set.h"
|
||||
#include "src/objects/free-space.h"
|
||||
#include "src/objects/heap-object.h"
|
||||
#include "src/objects/map.h"
|
||||
@ -622,7 +623,8 @@ class MemoryChunk : public BasicMemoryChunk {
|
||||
+ kSystemPointerSize // LocalArrayBufferTracker* local_tracker_
|
||||
+ kIntptrSize // std::atomic<intptr_t> young_generation_live_byte_count_
|
||||
+ kSystemPointerSize // Bitmap* young_generation_bitmap_
|
||||
+ kSystemPointerSize; // CodeObjectRegistry* code_object_registry_
|
||||
+ kSystemPointerSize // CodeObjectRegistry* code_object_registry_
|
||||
+ kSystemPointerSize; // PossiblyEmptyBuckets possibly_empty_buckets_
|
||||
|
||||
// Page size in bytes. This must be a multiple of the OS page size.
|
||||
static const int kPageSize = 1 << kPageSizeBits;
|
||||
@ -869,6 +871,10 @@ class MemoryChunk : public BasicMemoryChunk {
|
||||
|
||||
FreeList* free_list() { return owner()->free_list(); }
|
||||
|
||||
PossiblyEmptyBuckets* possibly_empty_buckets() {
|
||||
return &possibly_empty_buckets_;
|
||||
}
|
||||
|
||||
protected:
|
||||
static MemoryChunk* Initialize(Heap* heap, Address base, size_t size,
|
||||
Address area_start, Address area_end,
|
||||
@ -964,6 +970,8 @@ class MemoryChunk : public BasicMemoryChunk {
|
||||
|
||||
CodeObjectRegistry* code_object_registry_;
|
||||
|
||||
PossiblyEmptyBuckets possibly_empty_buckets_;
|
||||
|
||||
private:
|
||||
void InitializeReservedMemory() { reservation_.Reset(); }
|
||||
|
||||
|
@ -110,6 +110,20 @@ TEST(SlotSet, Remove) {
|
||||
SlotSet::Delete(set, SlotSet::kBucketsRegularPage);
|
||||
}
|
||||
|
||||
TEST(PossiblyEmptyBuckets, ContainsAndInsert) {
|
||||
static const int kBuckets = 100;
|
||||
PossiblyEmptyBuckets possibly_empty_buckets;
|
||||
possibly_empty_buckets.Insert(0, kBuckets);
|
||||
int last = sizeof(uintptr_t) * kBitsPerByte - 2;
|
||||
possibly_empty_buckets.Insert(last, kBuckets);
|
||||
EXPECT_TRUE(possibly_empty_buckets.Contains(0));
|
||||
EXPECT_TRUE(possibly_empty_buckets.Contains(last));
|
||||
possibly_empty_buckets.Insert(last + 1, kBuckets);
|
||||
EXPECT_TRUE(possibly_empty_buckets.Contains(0));
|
||||
EXPECT_TRUE(possibly_empty_buckets.Contains(last));
|
||||
EXPECT_TRUE(possibly_empty_buckets.Contains(last + 1));
|
||||
}
|
||||
|
||||
void CheckRemoveRangeOn(uint32_t start, uint32_t end) {
|
||||
SlotSet* set = SlotSet::Allocate(SlotSet::kBucketsRegularPage);
|
||||
uint32_t first = start == 0 ? 0 : start - kTaggedSize;
|
||||
|
@ -190,228 +190,228 @@ INSTANCE_TYPES = {
|
||||
|
||||
# List of known V8 maps.
|
||||
KNOWN_MAPS = {
|
||||
("read_only_space", 0x00119): (161, "FreeSpaceMap"),
|
||||
("read_only_space", 0x00161): (162, "MetaMap"),
|
||||
("read_only_space", 0x001d9): (67, "NullMap"),
|
||||
("read_only_space", 0x00239): (156, "DescriptorArrayMap"),
|
||||
("read_only_space", 0x00291): (151, "WeakFixedArrayMap"),
|
||||
("read_only_space", 0x002d9): (160, "OnePointerFillerMap"),
|
||||
("read_only_space", 0x00321): (160, "TwoPointerFillerMap"),
|
||||
("read_only_space", 0x00399): (67, "UninitializedMap"),
|
||||
("read_only_space", 0x00401): (8, "OneByteInternalizedStringMap"),
|
||||
("read_only_space", 0x00499): (67, "UndefinedMap"),
|
||||
("read_only_space", 0x004f1): (66, "HeapNumberMap"),
|
||||
("read_only_space", 0x00569): (67, "TheHoleMap"),
|
||||
("read_only_space", 0x00609): (67, "BooleanMap"),
|
||||
("read_only_space", 0x006d9): (133, "ByteArrayMap"),
|
||||
("read_only_space", 0x00721): (118, "FixedArrayMap"),
|
||||
("read_only_space", 0x00769): (118, "FixedCOWArrayMap"),
|
||||
("read_only_space", 0x007b1): (119, "HashTableMap"),
|
||||
("read_only_space", 0x007f9): (64, "SymbolMap"),
|
||||
("read_only_space", 0x00841): (40, "OneByteStringMap"),
|
||||
("read_only_space", 0x00889): (131, "ScopeInfoMap"),
|
||||
("read_only_space", 0x008d1): (166, "SharedFunctionInfoMap"),
|
||||
("read_only_space", 0x00919): (154, "CodeMap"),
|
||||
("read_only_space", 0x00961): (153, "CellMap"),
|
||||
("read_only_space", 0x009a9): (165, "GlobalPropertyCellMap"),
|
||||
("read_only_space", 0x009f1): (70, "ForeignMap"),
|
||||
("read_only_space", 0x00a39): (152, "TransitionArrayMap"),
|
||||
("read_only_space", 0x00a81): (45, "ThinOneByteStringMap"),
|
||||
("read_only_space", 0x00ac9): (159, "FeedbackVectorMap"),
|
||||
("read_only_space", 0x00b61): (67, "ArgumentsMarkerMap"),
|
||||
("read_only_space", 0x00bf9): (67, "ExceptionMap"),
|
||||
("read_only_space", 0x00c91): (67, "TerminationExceptionMap"),
|
||||
("read_only_space", 0x00d31): (67, "OptimizedOutMap"),
|
||||
("read_only_space", 0x00dc9): (67, "StaleRegisterMap"),
|
||||
("read_only_space", 0x00e31): (132, "ScriptContextTableMap"),
|
||||
("read_only_space", 0x00e79): (129, "ClosureFeedbackCellArrayMap"),
|
||||
("read_only_space", 0x00ec1): (158, "FeedbackMetadataArrayMap"),
|
||||
("read_only_space", 0x00f09): (118, "ArrayListMap"),
|
||||
("read_only_space", 0x00f51): (65, "BigIntMap"),
|
||||
("read_only_space", 0x00f99): (130, "ObjectBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x00fe1): (134, "BytecodeArrayMap"),
|
||||
("read_only_space", 0x01029): (155, "CodeDataContainerMap"),
|
||||
("read_only_space", 0x01071): (135, "FixedDoubleArrayMap"),
|
||||
("read_only_space", 0x010b9): (121, "GlobalDictionaryMap"),
|
||||
("read_only_space", 0x01101): (93, "ManyClosuresCellMap"),
|
||||
("read_only_space", 0x01149): (118, "ModuleInfoMap"),
|
||||
("read_only_space", 0x01191): (122, "NameDictionaryMap"),
|
||||
("read_only_space", 0x011d9): (93, "NoClosuresCellMap"),
|
||||
("read_only_space", 0x01221): (123, "NumberDictionaryMap"),
|
||||
("read_only_space", 0x01269): (93, "OneClosureCellMap"),
|
||||
("read_only_space", 0x012b1): (124, "OrderedHashMapMap"),
|
||||
("read_only_space", 0x012f9): (125, "OrderedHashSetMap"),
|
||||
("read_only_space", 0x01341): (126, "OrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x01389): (163, "PreparseDataMap"),
|
||||
("read_only_space", 0x013d1): (164, "PropertyArrayMap"),
|
||||
("read_only_space", 0x01419): (89, "SideEffectCallHandlerInfoMap"),
|
||||
("read_only_space", 0x01461): (89, "SideEffectFreeCallHandlerInfoMap"),
|
||||
("read_only_space", 0x014a9): (89, "NextCallSideEffectFreeCallHandlerInfoMap"),
|
||||
("read_only_space", 0x014f1): (127, "SimpleNumberDictionaryMap"),
|
||||
("read_only_space", 0x01539): (118, "SloppyArgumentsElementsMap"),
|
||||
("read_only_space", 0x01581): (146, "SmallOrderedHashMapMap"),
|
||||
("read_only_space", 0x015c9): (147, "SmallOrderedHashSetMap"),
|
||||
("read_only_space", 0x01611): (148, "SmallOrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x01659): (68, "SourceTextModuleMap"),
|
||||
("read_only_space", 0x016a1): (128, "StringTableMap"),
|
||||
("read_only_space", 0x016e9): (69, "SyntheticModuleMap"),
|
||||
("read_only_space", 0x01731): (150, "UncompiledDataWithoutPreparseDataMap"),
|
||||
("read_only_space", 0x01779): (149, "UncompiledDataWithPreparseDataMap"),
|
||||
("read_only_space", 0x017c1): (167, "WeakArrayListMap"),
|
||||
("read_only_space", 0x01809): (120, "EphemeronHashTableMap"),
|
||||
("read_only_space", 0x01851): (157, "EmbedderDataArrayMap"),
|
||||
("read_only_space", 0x01899): (168, "WeakCellMap"),
|
||||
("read_only_space", 0x018e1): (32, "StringMap"),
|
||||
("read_only_space", 0x01929): (41, "ConsOneByteStringMap"),
|
||||
("read_only_space", 0x01971): (33, "ConsStringMap"),
|
||||
("read_only_space", 0x019b9): (37, "ThinStringMap"),
|
||||
("read_only_space", 0x01a01): (35, "SlicedStringMap"),
|
||||
("read_only_space", 0x01a49): (43, "SlicedOneByteStringMap"),
|
||||
("read_only_space", 0x01a91): (34, "ExternalStringMap"),
|
||||
("read_only_space", 0x01ad9): (42, "ExternalOneByteStringMap"),
|
||||
("read_only_space", 0x01b21): (50, "UncachedExternalStringMap"),
|
||||
("read_only_space", 0x01b69): (0, "InternalizedStringMap"),
|
||||
("read_only_space", 0x01bb1): (2, "ExternalInternalizedStringMap"),
|
||||
("read_only_space", 0x01bf9): (10, "ExternalOneByteInternalizedStringMap"),
|
||||
("read_only_space", 0x01c41): (18, "UncachedExternalInternalizedStringMap"),
|
||||
("read_only_space", 0x01c89): (26, "UncachedExternalOneByteInternalizedStringMap"),
|
||||
("read_only_space", 0x01cd1): (58, "UncachedExternalOneByteStringMap"),
|
||||
("read_only_space", 0x01d19): (67, "SelfReferenceMarkerMap"),
|
||||
("read_only_space", 0x01d79): (92, "EnumCacheMap"),
|
||||
("read_only_space", 0x01e11): (86, "ArrayBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x01ff9): (95, "InterceptorInfoMap"),
|
||||
("read_only_space", 0x04969): (71, "PromiseFulfillReactionJobTaskMap"),
|
||||
("read_only_space", 0x049b1): (72, "PromiseRejectReactionJobTaskMap"),
|
||||
("read_only_space", 0x049f9): (73, "CallableTaskMap"),
|
||||
("read_only_space", 0x04a41): (74, "CallbackTaskMap"),
|
||||
("read_only_space", 0x04a89): (75, "PromiseResolveThenableJobTaskMap"),
|
||||
("read_only_space", 0x04ad1): (78, "FunctionTemplateInfoMap"),
|
||||
("read_only_space", 0x04b19): (79, "ObjectTemplateInfoMap"),
|
||||
("read_only_space", 0x04b61): (80, "AccessCheckInfoMap"),
|
||||
("read_only_space", 0x04ba9): (81, "AccessorInfoMap"),
|
||||
("read_only_space", 0x04bf1): (82, "AccessorPairMap"),
|
||||
("read_only_space", 0x04c39): (83, "AliasedArgumentsEntryMap"),
|
||||
("read_only_space", 0x04c81): (84, "AllocationMementoMap"),
|
||||
("read_only_space", 0x04cc9): (87, "AsmWasmDataMap"),
|
||||
("read_only_space", 0x04d11): (88, "AsyncGeneratorRequestMap"),
|
||||
("read_only_space", 0x04d59): (90, "ClassPositionsMap"),
|
||||
("read_only_space", 0x04da1): (91, "DebugInfoMap"),
|
||||
("read_only_space", 0x04de9): (94, "FunctionTemplateRareDataMap"),
|
||||
("read_only_space", 0x04e31): (97, "InterpreterDataMap"),
|
||||
("read_only_space", 0x04e79): (98, "PromiseCapabilityMap"),
|
||||
("read_only_space", 0x04ec1): (99, "PromiseReactionMap"),
|
||||
("read_only_space", 0x04f09): (100, "PrototypeInfoMap"),
|
||||
("read_only_space", 0x04f51): (101, "ScriptMap"),
|
||||
("read_only_space", 0x04f99): (105, "SourcePositionTableWithFrameCacheMap"),
|
||||
("read_only_space", 0x04fe1): (106, "SourceTextModuleInfoEntryMap"),
|
||||
("read_only_space", 0x05029): (107, "StackFrameInfoMap"),
|
||||
("read_only_space", 0x05071): (108, "StackTraceFrameMap"),
|
||||
("read_only_space", 0x050b9): (109, "TemplateObjectDescriptionMap"),
|
||||
("read_only_space", 0x05101): (110, "Tuple2Map"),
|
||||
("read_only_space", 0x05149): (111, "Tuple3Map"),
|
||||
("read_only_space", 0x05191): (112, "WasmCapiFunctionDataMap"),
|
||||
("read_only_space", 0x051d9): (113, "WasmDebugInfoMap"),
|
||||
("read_only_space", 0x05221): (114, "WasmExceptionTagMap"),
|
||||
("read_only_space", 0x05269): (115, "WasmExportedFunctionDataMap"),
|
||||
("read_only_space", 0x052b1): (116, "WasmIndirectFunctionTableMap"),
|
||||
("read_only_space", 0x052f9): (117, "WasmJSFunctionDataMap"),
|
||||
("read_only_space", 0x05341): (96, "InternalClassMap"),
|
||||
("read_only_space", 0x05389): (103, "SmiPairMap"),
|
||||
("read_only_space", 0x053d1): (102, "SmiBoxMap"),
|
||||
("read_only_space", 0x05419): (104, "SortStateMap"),
|
||||
("read_only_space", 0x05461): (85, "AllocationSiteWithWeakNextMap"),
|
||||
("read_only_space", 0x054a9): (85, "AllocationSiteWithoutWeakNextMap"),
|
||||
("read_only_space", 0x054f1): (76, "LoadHandler1Map"),
|
||||
("read_only_space", 0x05539): (76, "LoadHandler2Map"),
|
||||
("read_only_space", 0x05581): (76, "LoadHandler3Map"),
|
||||
("read_only_space", 0x055c9): (77, "StoreHandler0Map"),
|
||||
("read_only_space", 0x05611): (77, "StoreHandler1Map"),
|
||||
("read_only_space", 0x05659): (77, "StoreHandler2Map"),
|
||||
("read_only_space", 0x056a1): (77, "StoreHandler3Map"),
|
||||
("map_space", 0x00119): (1057, "ExternalMap"),
|
||||
("map_space", 0x00161): (1072, "JSMessageObjectMap"),
|
||||
("read_only_space", 0x00121): (161, "FreeSpaceMap"),
|
||||
("read_only_space", 0x00169): (162, "MetaMap"),
|
||||
("read_only_space", 0x001e1): (67, "NullMap"),
|
||||
("read_only_space", 0x00241): (156, "DescriptorArrayMap"),
|
||||
("read_only_space", 0x00299): (151, "WeakFixedArrayMap"),
|
||||
("read_only_space", 0x002e1): (160, "OnePointerFillerMap"),
|
||||
("read_only_space", 0x00329): (160, "TwoPointerFillerMap"),
|
||||
("read_only_space", 0x003a1): (67, "UninitializedMap"),
|
||||
("read_only_space", 0x00409): (8, "OneByteInternalizedStringMap"),
|
||||
("read_only_space", 0x004a1): (67, "UndefinedMap"),
|
||||
("read_only_space", 0x004f9): (66, "HeapNumberMap"),
|
||||
("read_only_space", 0x00571): (67, "TheHoleMap"),
|
||||
("read_only_space", 0x00611): (67, "BooleanMap"),
|
||||
("read_only_space", 0x006e1): (133, "ByteArrayMap"),
|
||||
("read_only_space", 0x00729): (118, "FixedArrayMap"),
|
||||
("read_only_space", 0x00771): (118, "FixedCOWArrayMap"),
|
||||
("read_only_space", 0x007b9): (119, "HashTableMap"),
|
||||
("read_only_space", 0x00801): (64, "SymbolMap"),
|
||||
("read_only_space", 0x00849): (40, "OneByteStringMap"),
|
||||
("read_only_space", 0x00891): (131, "ScopeInfoMap"),
|
||||
("read_only_space", 0x008d9): (166, "SharedFunctionInfoMap"),
|
||||
("read_only_space", 0x00921): (154, "CodeMap"),
|
||||
("read_only_space", 0x00969): (153, "CellMap"),
|
||||
("read_only_space", 0x009b1): (165, "GlobalPropertyCellMap"),
|
||||
("read_only_space", 0x009f9): (70, "ForeignMap"),
|
||||
("read_only_space", 0x00a41): (152, "TransitionArrayMap"),
|
||||
("read_only_space", 0x00a89): (45, "ThinOneByteStringMap"),
|
||||
("read_only_space", 0x00ad1): (159, "FeedbackVectorMap"),
|
||||
("read_only_space", 0x00b69): (67, "ArgumentsMarkerMap"),
|
||||
("read_only_space", 0x00c01): (67, "ExceptionMap"),
|
||||
("read_only_space", 0x00c99): (67, "TerminationExceptionMap"),
|
||||
("read_only_space", 0x00d39): (67, "OptimizedOutMap"),
|
||||
("read_only_space", 0x00dd1): (67, "StaleRegisterMap"),
|
||||
("read_only_space", 0x00e39): (132, "ScriptContextTableMap"),
|
||||
("read_only_space", 0x00e81): (129, "ClosureFeedbackCellArrayMap"),
|
||||
("read_only_space", 0x00ec9): (158, "FeedbackMetadataArrayMap"),
|
||||
("read_only_space", 0x00f11): (118, "ArrayListMap"),
|
||||
("read_only_space", 0x00f59): (65, "BigIntMap"),
|
||||
("read_only_space", 0x00fa1): (130, "ObjectBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x00fe9): (134, "BytecodeArrayMap"),
|
||||
("read_only_space", 0x01031): (155, "CodeDataContainerMap"),
|
||||
("read_only_space", 0x01079): (135, "FixedDoubleArrayMap"),
|
||||
("read_only_space", 0x010c1): (121, "GlobalDictionaryMap"),
|
||||
("read_only_space", 0x01109): (93, "ManyClosuresCellMap"),
|
||||
("read_only_space", 0x01151): (118, "ModuleInfoMap"),
|
||||
("read_only_space", 0x01199): (122, "NameDictionaryMap"),
|
||||
("read_only_space", 0x011e1): (93, "NoClosuresCellMap"),
|
||||
("read_only_space", 0x01229): (123, "NumberDictionaryMap"),
|
||||
("read_only_space", 0x01271): (93, "OneClosureCellMap"),
|
||||
("read_only_space", 0x012b9): (124, "OrderedHashMapMap"),
|
||||
("read_only_space", 0x01301): (125, "OrderedHashSetMap"),
|
||||
("read_only_space", 0x01349): (126, "OrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x01391): (163, "PreparseDataMap"),
|
||||
("read_only_space", 0x013d9): (164, "PropertyArrayMap"),
|
||||
("read_only_space", 0x01421): (89, "SideEffectCallHandlerInfoMap"),
|
||||
("read_only_space", 0x01469): (89, "SideEffectFreeCallHandlerInfoMap"),
|
||||
("read_only_space", 0x014b1): (89, "NextCallSideEffectFreeCallHandlerInfoMap"),
|
||||
("read_only_space", 0x014f9): (127, "SimpleNumberDictionaryMap"),
|
||||
("read_only_space", 0x01541): (118, "SloppyArgumentsElementsMap"),
|
||||
("read_only_space", 0x01589): (146, "SmallOrderedHashMapMap"),
|
||||
("read_only_space", 0x015d1): (147, "SmallOrderedHashSetMap"),
|
||||
("read_only_space", 0x01619): (148, "SmallOrderedNameDictionaryMap"),
|
||||
("read_only_space", 0x01661): (68, "SourceTextModuleMap"),
|
||||
("read_only_space", 0x016a9): (128, "StringTableMap"),
|
||||
("read_only_space", 0x016f1): (69, "SyntheticModuleMap"),
|
||||
("read_only_space", 0x01739): (150, "UncompiledDataWithoutPreparseDataMap"),
|
||||
("read_only_space", 0x01781): (149, "UncompiledDataWithPreparseDataMap"),
|
||||
("read_only_space", 0x017c9): (167, "WeakArrayListMap"),
|
||||
("read_only_space", 0x01811): (120, "EphemeronHashTableMap"),
|
||||
("read_only_space", 0x01859): (157, "EmbedderDataArrayMap"),
|
||||
("read_only_space", 0x018a1): (168, "WeakCellMap"),
|
||||
("read_only_space", 0x018e9): (32, "StringMap"),
|
||||
("read_only_space", 0x01931): (41, "ConsOneByteStringMap"),
|
||||
("read_only_space", 0x01979): (33, "ConsStringMap"),
|
||||
("read_only_space", 0x019c1): (37, "ThinStringMap"),
|
||||
("read_only_space", 0x01a09): (35, "SlicedStringMap"),
|
||||
("read_only_space", 0x01a51): (43, "SlicedOneByteStringMap"),
|
||||
("read_only_space", 0x01a99): (34, "ExternalStringMap"),
|
||||
("read_only_space", 0x01ae1): (42, "ExternalOneByteStringMap"),
|
||||
("read_only_space", 0x01b29): (50, "UncachedExternalStringMap"),
|
||||
("read_only_space", 0x01b71): (0, "InternalizedStringMap"),
|
||||
("read_only_space", 0x01bb9): (2, "ExternalInternalizedStringMap"),
|
||||
("read_only_space", 0x01c01): (10, "ExternalOneByteInternalizedStringMap"),
|
||||
("read_only_space", 0x01c49): (18, "UncachedExternalInternalizedStringMap"),
|
||||
("read_only_space", 0x01c91): (26, "UncachedExternalOneByteInternalizedStringMap"),
|
||||
("read_only_space", 0x01cd9): (58, "UncachedExternalOneByteStringMap"),
|
||||
("read_only_space", 0x01d21): (67, "SelfReferenceMarkerMap"),
|
||||
("read_only_space", 0x01d81): (92, "EnumCacheMap"),
|
||||
("read_only_space", 0x01e19): (86, "ArrayBoilerplateDescriptionMap"),
|
||||
("read_only_space", 0x02001): (95, "InterceptorInfoMap"),
|
||||
("read_only_space", 0x04971): (71, "PromiseFulfillReactionJobTaskMap"),
|
||||
("read_only_space", 0x049b9): (72, "PromiseRejectReactionJobTaskMap"),
|
||||
("read_only_space", 0x04a01): (73, "CallableTaskMap"),
|
||||
("read_only_space", 0x04a49): (74, "CallbackTaskMap"),
|
||||
("read_only_space", 0x04a91): (75, "PromiseResolveThenableJobTaskMap"),
|
||||
("read_only_space", 0x04ad9): (78, "FunctionTemplateInfoMap"),
|
||||
("read_only_space", 0x04b21): (79, "ObjectTemplateInfoMap"),
|
||||
("read_only_space", 0x04b69): (80, "AccessCheckInfoMap"),
|
||||
("read_only_space", 0x04bb1): (81, "AccessorInfoMap"),
|
||||
("read_only_space", 0x04bf9): (82, "AccessorPairMap"),
|
||||
("read_only_space", 0x04c41): (83, "AliasedArgumentsEntryMap"),
|
||||
("read_only_space", 0x04c89): (84, "AllocationMementoMap"),
|
||||
("read_only_space", 0x04cd1): (87, "AsmWasmDataMap"),
|
||||
("read_only_space", 0x04d19): (88, "AsyncGeneratorRequestMap"),
|
||||
("read_only_space", 0x04d61): (90, "ClassPositionsMap"),
|
||||
("read_only_space", 0x04da9): (91, "DebugInfoMap"),
|
||||
("read_only_space", 0x04df1): (94, "FunctionTemplateRareDataMap"),
|
||||
("read_only_space", 0x04e39): (97, "InterpreterDataMap"),
|
||||
("read_only_space", 0x04e81): (98, "PromiseCapabilityMap"),
|
||||
("read_only_space", 0x04ec9): (99, "PromiseReactionMap"),
|
||||
("read_only_space", 0x04f11): (100, "PrototypeInfoMap"),
|
||||
("read_only_space", 0x04f59): (101, "ScriptMap"),
|
||||
("read_only_space", 0x04fa1): (105, "SourcePositionTableWithFrameCacheMap"),
|
||||
("read_only_space", 0x04fe9): (106, "SourceTextModuleInfoEntryMap"),
|
||||
("read_only_space", 0x05031): (107, "StackFrameInfoMap"),
|
||||
("read_only_space", 0x05079): (108, "StackTraceFrameMap"),
|
||||
("read_only_space", 0x050c1): (109, "TemplateObjectDescriptionMap"),
|
||||
("read_only_space", 0x05109): (110, "Tuple2Map"),
|
||||
("read_only_space", 0x05151): (111, "Tuple3Map"),
|
||||
("read_only_space", 0x05199): (112, "WasmCapiFunctionDataMap"),
|
||||
("read_only_space", 0x051e1): (113, "WasmDebugInfoMap"),
|
||||
("read_only_space", 0x05229): (114, "WasmExceptionTagMap"),
|
||||
("read_only_space", 0x05271): (115, "WasmExportedFunctionDataMap"),
|
||||
("read_only_space", 0x052b9): (116, "WasmIndirectFunctionTableMap"),
|
||||
("read_only_space", 0x05301): (117, "WasmJSFunctionDataMap"),
|
||||
("read_only_space", 0x05349): (96, "InternalClassMap"),
|
||||
("read_only_space", 0x05391): (103, "SmiPairMap"),
|
||||
("read_only_space", 0x053d9): (102, "SmiBoxMap"),
|
||||
("read_only_space", 0x05421): (104, "SortStateMap"),
|
||||
("read_only_space", 0x05469): (85, "AllocationSiteWithWeakNextMap"),
|
||||
("read_only_space", 0x054b1): (85, "AllocationSiteWithoutWeakNextMap"),
|
||||
("read_only_space", 0x054f9): (76, "LoadHandler1Map"),
|
||||
("read_only_space", 0x05541): (76, "LoadHandler2Map"),
|
||||
("read_only_space", 0x05589): (76, "LoadHandler3Map"),
|
||||
("read_only_space", 0x055d1): (77, "StoreHandler0Map"),
|
||||
("read_only_space", 0x05619): (77, "StoreHandler1Map"),
|
||||
("read_only_space", 0x05661): (77, "StoreHandler2Map"),
|
||||
("read_only_space", 0x056a9): (77, "StoreHandler3Map"),
|
||||
("map_space", 0x00121): (1057, "ExternalMap"),
|
||||
("map_space", 0x00169): (1072, "JSMessageObjectMap"),
|
||||
}
|
||||
|
||||
# List of known V8 objects.
|
||||
KNOWN_OBJECTS = {
|
||||
("read_only_space", 0x001a9): "NullValue",
|
||||
("read_only_space", 0x00221): "EmptyDescriptorArray",
|
||||
("read_only_space", 0x00281): "EmptyWeakFixedArray",
|
||||
("read_only_space", 0x00369): "UninitializedValue",
|
||||
("read_only_space", 0x00469): "UndefinedValue",
|
||||
("read_only_space", 0x004e1): "NanValue",
|
||||
("read_only_space", 0x00539): "TheHoleValue",
|
||||
("read_only_space", 0x005c9): "HoleNanValue",
|
||||
("read_only_space", 0x005d9): "TrueValue",
|
||||
("read_only_space", 0x00681): "FalseValue",
|
||||
("read_only_space", 0x006c9): "empty_string",
|
||||
("read_only_space", 0x00b11): "EmptyScopeInfo",
|
||||
("read_only_space", 0x00b21): "EmptyFixedArray",
|
||||
("read_only_space", 0x00b31): "ArgumentsMarker",
|
||||
("read_only_space", 0x00bc9): "Exception",
|
||||
("read_only_space", 0x00c61): "TerminationException",
|
||||
("read_only_space", 0x00d01): "OptimizedOut",
|
||||
("read_only_space", 0x00d99): "StaleRegister",
|
||||
("read_only_space", 0x01d61): "EmptyEnumCache",
|
||||
("read_only_space", 0x01dc1): "EmptyPropertyArray",
|
||||
("read_only_space", 0x01dd1): "EmptyByteArray",
|
||||
("read_only_space", 0x01de1): "EmptyObjectBoilerplateDescription",
|
||||
("read_only_space", 0x01df9): "EmptyArrayBoilerplateDescription",
|
||||
("read_only_space", 0x01e59): "EmptyClosureFeedbackCellArray",
|
||||
("read_only_space", 0x01e69): "EmptySloppyArgumentsElements",
|
||||
("read_only_space", 0x01e89): "EmptySlowElementDictionary",
|
||||
("read_only_space", 0x01ed1): "EmptyOrderedHashMap",
|
||||
("read_only_space", 0x01ef9): "EmptyOrderedHashSet",
|
||||
("read_only_space", 0x01f21): "EmptyFeedbackMetadata",
|
||||
("read_only_space", 0x01f31): "EmptyPropertyCell",
|
||||
("read_only_space", 0x01f59): "EmptyPropertyDictionary",
|
||||
("read_only_space", 0x01fa9): "NoOpInterceptorInfo",
|
||||
("read_only_space", 0x02041): "EmptyWeakArrayList",
|
||||
("read_only_space", 0x02059): "InfinityValue",
|
||||
("read_only_space", 0x02069): "MinusZeroValue",
|
||||
("read_only_space", 0x02079): "MinusInfinityValue",
|
||||
("read_only_space", 0x02089): "SelfReferenceMarker",
|
||||
("read_only_space", 0x020e1): "OffHeapTrampolineRelocationInfo",
|
||||
("read_only_space", 0x020f9): "TrampolineTrivialCodeDataContainer",
|
||||
("read_only_space", 0x02111): "TrampolinePromiseRejectionCodeDataContainer",
|
||||
("read_only_space", 0x02129): "GlobalThisBindingScopeInfo",
|
||||
("read_only_space", 0x02191): "EmptyFunctionScopeInfo",
|
||||
("read_only_space", 0x021e1): "NativeScopeInfo",
|
||||
("read_only_space", 0x02219): "HashSeed",
|
||||
("old_space", 0x00119): "ArgumentsIteratorAccessor",
|
||||
("old_space", 0x00189): "ArrayLengthAccessor",
|
||||
("old_space", 0x001f9): "BoundFunctionLengthAccessor",
|
||||
("old_space", 0x00269): "BoundFunctionNameAccessor",
|
||||
("old_space", 0x002d9): "ErrorStackAccessor",
|
||||
("old_space", 0x00349): "FunctionArgumentsAccessor",
|
||||
("old_space", 0x003b9): "FunctionCallerAccessor",
|
||||
("old_space", 0x00429): "FunctionNameAccessor",
|
||||
("old_space", 0x00499): "FunctionLengthAccessor",
|
||||
("old_space", 0x00509): "FunctionPrototypeAccessor",
|
||||
("old_space", 0x00579): "RegExpResultIndicesAccessor",
|
||||
("old_space", 0x005e9): "StringLengthAccessor",
|
||||
("old_space", 0x00659): "InvalidPrototypeValidityCell",
|
||||
("old_space", 0x00669): "EmptyScript",
|
||||
("old_space", 0x006e9): "ManyClosuresCell",
|
||||
("old_space", 0x00701): "ArrayConstructorProtector",
|
||||
("old_space", 0x00729): "NoElementsProtector",
|
||||
("old_space", 0x00751): "IsConcatSpreadableProtector",
|
||||
("old_space", 0x00779): "ArraySpeciesProtector",
|
||||
("old_space", 0x007a1): "TypedArraySpeciesProtector",
|
||||
("old_space", 0x007c9): "PromiseSpeciesProtector",
|
||||
("old_space", 0x007f1): "StringLengthProtector",
|
||||
("old_space", 0x00819): "ArrayIteratorProtector",
|
||||
("old_space", 0x00841): "ArrayBufferDetachingProtector",
|
||||
("old_space", 0x00869): "PromiseHookProtector",
|
||||
("old_space", 0x00891): "PromiseResolveProtector",
|
||||
("old_space", 0x008b9): "MapIteratorProtector",
|
||||
("old_space", 0x008e1): "PromiseThenProtector",
|
||||
("old_space", 0x00909): "SetIteratorProtector",
|
||||
("old_space", 0x00931): "StringIteratorProtector",
|
||||
("old_space", 0x00959): "SingleCharacterStringCache",
|
||||
("old_space", 0x01169): "StringSplitCache",
|
||||
("old_space", 0x01979): "RegExpMultipleCache",
|
||||
("old_space", 0x02189): "BuiltinsConstantsTable",
|
||||
("read_only_space", 0x001b1): "NullValue",
|
||||
("read_only_space", 0x00229): "EmptyDescriptorArray",
|
||||
("read_only_space", 0x00289): "EmptyWeakFixedArray",
|
||||
("read_only_space", 0x00371): "UninitializedValue",
|
||||
("read_only_space", 0x00471): "UndefinedValue",
|
||||
("read_only_space", 0x004e9): "NanValue",
|
||||
("read_only_space", 0x00541): "TheHoleValue",
|
||||
("read_only_space", 0x005d1): "HoleNanValue",
|
||||
("read_only_space", 0x005e1): "TrueValue",
|
||||
("read_only_space", 0x00689): "FalseValue",
|
||||
("read_only_space", 0x006d1): "empty_string",
|
||||
("read_only_space", 0x00b19): "EmptyScopeInfo",
|
||||
("read_only_space", 0x00b29): "EmptyFixedArray",
|
||||
("read_only_space", 0x00b39): "ArgumentsMarker",
|
||||
("read_only_space", 0x00bd1): "Exception",
|
||||
("read_only_space", 0x00c69): "TerminationException",
|
||||
("read_only_space", 0x00d09): "OptimizedOut",
|
||||
("read_only_space", 0x00da1): "StaleRegister",
|
||||
("read_only_space", 0x01d69): "EmptyEnumCache",
|
||||
("read_only_space", 0x01dc9): "EmptyPropertyArray",
|
||||
("read_only_space", 0x01dd9): "EmptyByteArray",
|
||||
("read_only_space", 0x01de9): "EmptyObjectBoilerplateDescription",
|
||||
("read_only_space", 0x01e01): "EmptyArrayBoilerplateDescription",
|
||||
("read_only_space", 0x01e61): "EmptyClosureFeedbackCellArray",
|
||||
("read_only_space", 0x01e71): "EmptySloppyArgumentsElements",
|
||||
("read_only_space", 0x01e91): "EmptySlowElementDictionary",
|
||||
("read_only_space", 0x01ed9): "EmptyOrderedHashMap",
|
||||
("read_only_space", 0x01f01): "EmptyOrderedHashSet",
|
||||
("read_only_space", 0x01f29): "EmptyFeedbackMetadata",
|
||||
("read_only_space", 0x01f39): "EmptyPropertyCell",
|
||||
("read_only_space", 0x01f61): "EmptyPropertyDictionary",
|
||||
("read_only_space", 0x01fb1): "NoOpInterceptorInfo",
|
||||
("read_only_space", 0x02049): "EmptyWeakArrayList",
|
||||
("read_only_space", 0x02061): "InfinityValue",
|
||||
("read_only_space", 0x02071): "MinusZeroValue",
|
||||
("read_only_space", 0x02081): "MinusInfinityValue",
|
||||
("read_only_space", 0x02091): "SelfReferenceMarker",
|
||||
("read_only_space", 0x020e9): "OffHeapTrampolineRelocationInfo",
|
||||
("read_only_space", 0x02101): "TrampolineTrivialCodeDataContainer",
|
||||
("read_only_space", 0x02119): "TrampolinePromiseRejectionCodeDataContainer",
|
||||
("read_only_space", 0x02131): "GlobalThisBindingScopeInfo",
|
||||
("read_only_space", 0x02199): "EmptyFunctionScopeInfo",
|
||||
("read_only_space", 0x021e9): "NativeScopeInfo",
|
||||
("read_only_space", 0x02221): "HashSeed",
|
||||
("old_space", 0x00121): "ArgumentsIteratorAccessor",
|
||||
("old_space", 0x00191): "ArrayLengthAccessor",
|
||||
("old_space", 0x00201): "BoundFunctionLengthAccessor",
|
||||
("old_space", 0x00271): "BoundFunctionNameAccessor",
|
||||
("old_space", 0x002e1): "ErrorStackAccessor",
|
||||
("old_space", 0x00351): "FunctionArgumentsAccessor",
|
||||
("old_space", 0x003c1): "FunctionCallerAccessor",
|
||||
("old_space", 0x00431): "FunctionNameAccessor",
|
||||
("old_space", 0x004a1): "FunctionLengthAccessor",
|
||||
("old_space", 0x00511): "FunctionPrototypeAccessor",
|
||||
("old_space", 0x00581): "RegExpResultIndicesAccessor",
|
||||
("old_space", 0x005f1): "StringLengthAccessor",
|
||||
("old_space", 0x00661): "InvalidPrototypeValidityCell",
|
||||
("old_space", 0x00671): "EmptyScript",
|
||||
("old_space", 0x006f1): "ManyClosuresCell",
|
||||
("old_space", 0x00709): "ArrayConstructorProtector",
|
||||
("old_space", 0x00731): "NoElementsProtector",
|
||||
("old_space", 0x00759): "IsConcatSpreadableProtector",
|
||||
("old_space", 0x00781): "ArraySpeciesProtector",
|
||||
("old_space", 0x007a9): "TypedArraySpeciesProtector",
|
||||
("old_space", 0x007d1): "PromiseSpeciesProtector",
|
||||
("old_space", 0x007f9): "StringLengthProtector",
|
||||
("old_space", 0x00821): "ArrayIteratorProtector",
|
||||
("old_space", 0x00849): "ArrayBufferDetachingProtector",
|
||||
("old_space", 0x00871): "PromiseHookProtector",
|
||||
("old_space", 0x00899): "PromiseResolveProtector",
|
||||
("old_space", 0x008c1): "MapIteratorProtector",
|
||||
("old_space", 0x008e9): "PromiseThenProtector",
|
||||
("old_space", 0x00911): "SetIteratorProtector",
|
||||
("old_space", 0x00939): "StringIteratorProtector",
|
||||
("old_space", 0x00961): "SingleCharacterStringCache",
|
||||
("old_space", 0x01171): "StringSplitCache",
|
||||
("old_space", 0x01981): "RegExpMultipleCache",
|
||||
("old_space", 0x02191): "BuiltinsConstantsTable",
|
||||
}
|
||||
|
||||
# List of known V8 Frame Markers.
|
||||
|
Loading…
Reference in New Issue
Block a user