| Index: src/heap-snapshot-generator.cc
|
| diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc
|
| index 2809072c9c9521aa21a96666d17da24cfd94ed3c..6fb68702fdc2a28ca2e02a783c1b2b6f3a19b58c 100644
|
| --- a/src/heap-snapshot-generator.cc
|
| +++ b/src/heap-snapshot-generator.cc
|
| @@ -1286,30 +1286,27 @@
|
|
|
|
|
| void V8HeapExplorer::ExtractMapReferences(int entry, Map* map) {
|
| - Object* raw_transitions = map->raw_transitions();
|
| - if (TransitionArray::IsFullTransitionArray(raw_transitions)) {
|
| - TransitionArray* transitions = TransitionArray::cast(raw_transitions);
|
| + if (map->HasTransitionArray()) {
|
| + TransitionArray* transitions = map->transitions();
|
| int transitions_entry = GetEntry(transitions)->index();
|
|
|
| if (FLAG_collect_maps && map->CanTransition()) {
|
| - if (transitions->HasPrototypeTransitions()) {
|
| - FixedArray* prototype_transitions =
|
| - transitions->GetPrototypeTransitions();
|
| - MarkAsWeakContainer(prototype_transitions);
|
| - TagObject(prototype_transitions, "(prototype transitions");
|
| - SetInternalReference(transitions, transitions_entry,
|
| - "prototype_transitions", prototype_transitions);
|
| + if (!transitions->IsSimpleTransition()) {
|
| + if (transitions->HasPrototypeTransitions()) {
|
| + FixedArray* prototype_transitions =
|
| + transitions->GetPrototypeTransitions();
|
| + MarkAsWeakContainer(prototype_transitions);
|
| + TagObject(prototype_transitions, "(prototype transitions");
|
| + SetInternalReference(transitions, transitions_entry,
|
| + "prototype_transitions", prototype_transitions);
|
| + }
|
| + // TODO(alph): transitions keys are strong links.
|
| + MarkAsWeakContainer(transitions);
|
| }
|
| - // TODO(alph): transitions keys are strong links.
|
| - MarkAsWeakContainer(transitions);
|
| }
|
|
|
| TagObject(transitions, "(transition array)");
|
| SetInternalReference(map, entry, "transitions", transitions,
|
| - Map::kTransitionsOffset);
|
| - } else if (TransitionArray::IsSimpleTransition(raw_transitions)) {
|
| - TagObject(raw_transitions, "(transition)");
|
| - SetInternalReference(map, entry, "transition", raw_transitions,
|
| Map::kTransitionsOffset);
|
| }
|
| DescriptorArray* descriptors = map->instance_descriptors();
|
|
|