| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/heap-snapshot-generator-inl.h" | 7 #include "src/heap-snapshot-generator-inl.h" |
| 8 | 8 |
| 9 #include "src/allocation-tracker.h" | 9 #include "src/allocation-tracker.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 1264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1275 Context::FIRST_WEAK_SLOT); | 1275 Context::FIRST_WEAK_SLOT); |
| 1276 STATIC_ASSERT(Context::NEXT_CONTEXT_LINK + 1 == | 1276 STATIC_ASSERT(Context::NEXT_CONTEXT_LINK + 1 == |
| 1277 Context::NATIVE_CONTEXT_SLOTS); | 1277 Context::NATIVE_CONTEXT_SLOTS); |
| 1278 STATIC_ASSERT(Context::FIRST_WEAK_SLOT + 4 == | 1278 STATIC_ASSERT(Context::FIRST_WEAK_SLOT + 4 == |
| 1279 Context::NATIVE_CONTEXT_SLOTS); | 1279 Context::NATIVE_CONTEXT_SLOTS); |
| 1280 } | 1280 } |
| 1281 } | 1281 } |
| 1282 | 1282 |
| 1283 | 1283 |
| 1284 void V8HeapExplorer::ExtractMapReferences(int entry, Map* map) { | 1284 void V8HeapExplorer::ExtractMapReferences(int entry, Map* map) { |
| 1285 Object* raw_transitions = map->raw_transitions(); | 1285 Object* raw_transitions_or_prototype_info = map->raw_transitions(); |
| 1286 if (TransitionArray::IsFullTransitionArray(raw_transitions)) { | 1286 if (TransitionArray::IsFullTransitionArray( |
| 1287 TransitionArray* transitions = TransitionArray::cast(raw_transitions); | 1287 raw_transitions_or_prototype_info)) { |
| 1288 TransitionArray* transitions = |
| 1289 TransitionArray::cast(raw_transitions_or_prototype_info); |
| 1288 int transitions_entry = GetEntry(transitions)->index(); | 1290 int transitions_entry = GetEntry(transitions)->index(); |
| 1289 | 1291 |
| 1290 if (FLAG_collect_maps && map->CanTransition()) { | 1292 if (FLAG_collect_maps && map->CanTransition()) { |
| 1291 if (transitions->HasPrototypeTransitions()) { | 1293 if (transitions->HasPrototypeTransitions()) { |
| 1292 FixedArray* prototype_transitions = | 1294 FixedArray* prototype_transitions = |
| 1293 transitions->GetPrototypeTransitions(); | 1295 transitions->GetPrototypeTransitions(); |
| 1294 MarkAsWeakContainer(prototype_transitions); | 1296 MarkAsWeakContainer(prototype_transitions); |
| 1295 TagObject(prototype_transitions, "(prototype transitions"); | 1297 TagObject(prototype_transitions, "(prototype transitions"); |
| 1296 SetInternalReference(transitions, transitions_entry, | 1298 SetInternalReference(transitions, transitions_entry, |
| 1297 "prototype_transitions", prototype_transitions); | 1299 "prototype_transitions", prototype_transitions); |
| 1298 } | 1300 } |
| 1299 // TODO(alph): transitions keys are strong links. | 1301 // TODO(alph): transitions keys are strong links. |
| 1300 MarkAsWeakContainer(transitions); | 1302 MarkAsWeakContainer(transitions); |
| 1301 } | 1303 } |
| 1302 | 1304 |
| 1303 TagObject(transitions, "(transition array)"); | 1305 TagObject(transitions, "(transition array)"); |
| 1304 SetInternalReference(map, entry, "transitions", transitions, | 1306 SetInternalReference(map, entry, "transitions", transitions, |
| 1305 Map::kTransitionsOffset); | 1307 Map::kTransitionsOrPrototypeInfoOffset); |
| 1306 } else if (TransitionArray::IsSimpleTransition(raw_transitions)) { | 1308 } else if (TransitionArray::IsSimpleTransition( |
| 1307 TagObject(raw_transitions, "(transition)"); | 1309 raw_transitions_or_prototype_info)) { |
| 1308 SetInternalReference(map, entry, "transition", raw_transitions, | 1310 TagObject(raw_transitions_or_prototype_info, "(transition)"); |
| 1309 Map::kTransitionsOffset); | 1311 SetInternalReference(map, entry, "transition", |
| 1312 raw_transitions_or_prototype_info, |
| 1313 Map::kTransitionsOrPrototypeInfoOffset); |
| 1314 } else if (map->is_prototype_map()) { |
| 1315 TagObject(raw_transitions_or_prototype_info, "prototype_info"); |
| 1316 SetInternalReference(map, entry, "prototype_info", |
| 1317 raw_transitions_or_prototype_info, |
| 1318 Map::kTransitionsOrPrototypeInfoOffset); |
| 1310 } | 1319 } |
| 1311 DescriptorArray* descriptors = map->instance_descriptors(); | 1320 DescriptorArray* descriptors = map->instance_descriptors(); |
| 1312 TagObject(descriptors, "(map descriptors)"); | 1321 TagObject(descriptors, "(map descriptors)"); |
| 1313 SetInternalReference(map, entry, | 1322 SetInternalReference(map, entry, |
| 1314 "descriptors", descriptors, | 1323 "descriptors", descriptors, |
| 1315 Map::kDescriptorsOffset); | 1324 Map::kDescriptorsOffset); |
| 1316 | 1325 |
| 1317 MarkAsWeakContainer(map->code_cache()); | 1326 MarkAsWeakContainer(map->code_cache()); |
| 1318 SetInternalReference(map, entry, | 1327 SetInternalReference(map, entry, |
| 1319 "code_cache", map->code_cache(), | 1328 "code_cache", map->code_cache(), |
| (...skipping 1832 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3152 writer_->AddString("\"<dummy>\""); | 3161 writer_->AddString("\"<dummy>\""); |
| 3153 for (int i = 1; i < sorted_strings.length(); ++i) { | 3162 for (int i = 1; i < sorted_strings.length(); ++i) { |
| 3154 writer_->AddCharacter(','); | 3163 writer_->AddCharacter(','); |
| 3155 SerializeString(sorted_strings[i]); | 3164 SerializeString(sorted_strings[i]); |
| 3156 if (writer_->aborted()) return; | 3165 if (writer_->aborted()) return; |
| 3157 } | 3166 } |
| 3158 } | 3167 } |
| 3159 | 3168 |
| 3160 | 3169 |
| 3161 } } // namespace v8::internal | 3170 } } // namespace v8::internal |
| OLD | NEW |