Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: src/profiler/heap-snapshot-generator.cc

Issue 2028983002: Introduce IsUndefined(Isolate*) and IsTheHole(Isolate*) (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase master Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ppc/code-stubs-ppc.cc ('k') | src/property-descriptor.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/profiler/heap-snapshot-generator.h" 5 #include "src/profiler/heap-snapshot-generator.h"
6 6
7 #include "src/code-stubs.h" 7 #include "src/code-stubs.h"
8 #include "src/conversions.h" 8 #include "src/conversions.h"
9 #include "src/debug/debug.h" 9 #include "src/debug/debug.h"
10 #include "src/objects-body-descriptors.h" 10 #include "src/objects-body-descriptors.h"
(...skipping 1090 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 SetNativeBindReference(js_obj, entry, "bound_function", 1101 SetNativeBindReference(js_obj, entry, "bound_function",
1102 js_fun->bound_target_function()); 1102 js_fun->bound_target_function());
1103 FixedArray* bindings = js_fun->bound_arguments(); 1103 FixedArray* bindings = js_fun->bound_arguments();
1104 for (int i = 0; i < bindings->length(); i++) { 1104 for (int i = 0; i < bindings->length(); i++) {
1105 const char* reference_name = names_->GetFormatted("bound_argument_%d", i); 1105 const char* reference_name = names_->GetFormatted("bound_argument_%d", i);
1106 SetNativeBindReference(js_obj, entry, reference_name, bindings->get(i)); 1106 SetNativeBindReference(js_obj, entry, reference_name, bindings->get(i));
1107 } 1107 }
1108 } else if (obj->IsJSFunction()) { 1108 } else if (obj->IsJSFunction()) {
1109 JSFunction* js_fun = JSFunction::cast(js_obj); 1109 JSFunction* js_fun = JSFunction::cast(js_obj);
1110 Object* proto_or_map = js_fun->prototype_or_initial_map(); 1110 Object* proto_or_map = js_fun->prototype_or_initial_map();
1111 if (!proto_or_map->IsTheHole()) { 1111 if (!proto_or_map->IsTheHole(heap_->isolate())) {
1112 if (!proto_or_map->IsMap()) { 1112 if (!proto_or_map->IsMap()) {
1113 SetPropertyReference( 1113 SetPropertyReference(
1114 obj, entry, 1114 obj, entry,
1115 heap_->prototype_string(), proto_or_map, 1115 heap_->prototype_string(), proto_or_map,
1116 NULL, 1116 NULL,
1117 JSFunction::kPrototypeOrInitialMapOffset); 1117 JSFunction::kPrototypeOrInitialMapOffset);
1118 } else { 1118 } else {
1119 SetPropertyReference( 1119 SetPropertyReference(
1120 obj, entry, 1120 obj, entry,
1121 heap_->prototype_string(), js_fun->prototype()); 1121 heap_->prototype_string(), js_fun->prototype());
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1634 } 1634 }
1635 1635
1636 1636
1637 void V8HeapExplorer::ExtractElementReferences(JSObject* js_obj, int entry) { 1637 void V8HeapExplorer::ExtractElementReferences(JSObject* js_obj, int entry) {
1638 if (js_obj->HasFastObjectElements()) { 1638 if (js_obj->HasFastObjectElements()) {
1639 FixedArray* elements = FixedArray::cast(js_obj->elements()); 1639 FixedArray* elements = FixedArray::cast(js_obj->elements());
1640 int length = js_obj->IsJSArray() ? 1640 int length = js_obj->IsJSArray() ?
1641 Smi::cast(JSArray::cast(js_obj)->length())->value() : 1641 Smi::cast(JSArray::cast(js_obj)->length())->value() :
1642 elements->length(); 1642 elements->length();
1643 for (int i = 0; i < length; ++i) { 1643 for (int i = 0; i < length; ++i) {
1644 if (!elements->get(i)->IsTheHole()) { 1644 if (!elements->get(i)->IsTheHole(heap_->isolate())) {
1645 SetElementReference(js_obj, entry, i, elements->get(i)); 1645 SetElementReference(js_obj, entry, i, elements->get(i));
1646 } 1646 }
1647 } 1647 }
1648 } else if (js_obj->HasDictionaryElements()) { 1648 } else if (js_obj->HasDictionaryElements()) {
1649 SeededNumberDictionary* dictionary = js_obj->element_dictionary(); 1649 SeededNumberDictionary* dictionary = js_obj->element_dictionary();
1650 int length = dictionary->Capacity(); 1650 int length = dictionary->Capacity();
1651 for (int i = 0; i < length; ++i) { 1651 for (int i = 0; i < length; ++i) {
1652 Object* k = dictionary->KeyAt(i); 1652 Object* k = dictionary->KeyAt(i);
1653 if (dictionary->IsKey(k)) { 1653 if (dictionary->IsKey(heap_, k)) {
1654 DCHECK(k->IsNumber()); 1654 DCHECK(k->IsNumber());
1655 uint32_t index = static_cast<uint32_t>(k->Number()); 1655 uint32_t index = static_cast<uint32_t>(k->Number());
1656 SetElementReference(js_obj, entry, index, dictionary->ValueAt(i)); 1656 SetElementReference(js_obj, entry, index, dictionary->ValueAt(i));
1657 } 1657 }
1658 } 1658 }
1659 } 1659 }
1660 } 1660 }
1661 1661
1662 1662
1663 void V8HeapExplorer::ExtractInternalReferences(JSObject* js_obj, int entry) { 1663 void V8HeapExplorer::ExtractInternalReferences(JSObject* js_obj, int entry) {
(...skipping 1450 matching lines...) Expand 10 before | Expand all | Expand 10 after
3114 for (int i = 1; i < sorted_strings.length(); ++i) { 3114 for (int i = 1; i < sorted_strings.length(); ++i) {
3115 writer_->AddCharacter(','); 3115 writer_->AddCharacter(',');
3116 SerializeString(sorted_strings[i]); 3116 SerializeString(sorted_strings[i]);
3117 if (writer_->aborted()) return; 3117 if (writer_->aborted()) return;
3118 } 3118 }
3119 } 3119 }
3120 3120
3121 3121
3122 } // namespace internal 3122 } // namespace internal
3123 } // namespace v8 3123 } // namespace v8
OLDNEW
« no previous file with comments | « src/ppc/code-stubs-ppc.cc ('k') | src/property-descriptor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698