Index: src/heap-snapshot-generator.cc |
diff --git a/src/heap-snapshot-generator.cc b/src/heap-snapshot-generator.cc |
index b23b60f3f537a699735720cfb56b96762b51a58b..f319b166d4fb70b393db093bdb7ac3b884942f4c 100644 |
--- a/src/heap-snapshot-generator.cc |
+++ b/src/heap-snapshot-generator.cc |
@@ -1322,8 +1322,22 @@ void V8HeapExplorer::ExtractMapReferences(int entry, Map* map) { |
TagObject(back_pointer, "(back pointer)"); |
SetInternalReference(transitions, transitions_entry, |
"back_pointer", back_pointer); |
+ |
+ if (FLAG_collect_maps && map->CanTransition()) { |
+ if (!transitions->IsSimpleTransition()) { |
+ if (transitions->HasPrototypeTransitions()) { |
+ FixedArray* prototype_transitions = |
+ transitions->GetPrototypeTransitions(); |
+ MarkAsWeakContainer(prototype_transitions); |
+ TagObject(prototype_transitions, "(prototype transitions array"); |
+ SetInternalReference(transitions, transitions_entry, |
+ "prototype_transitions", prototype_transitions); |
+ } |
+ MarkAsWeakContainer(transitions); |
ulan
2014/04/03 13:31:34
MarkTransitionArray visitor also visits Keys.
alph
2014/04/03 14:35:39
yes, I saw that. I'd like to address that in a sep
|
+ } |
+ } |
+ |
TagObject(transitions, "(transition array)"); |
- MarkAsWeakContainer(transitions); |
SetInternalReference(map, entry, |
"transitions", transitions, |
Map::kTransitionsOrBackPointerOffset); |