Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/sampling-heap-profiler.h" | 5 #include "src/profiler/sampling-heap-profiler.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include "src/api.h" | 9 #include "src/api.h" |
| 10 #include "src/base/utils/random-number-generator.h" | 10 #include "src/base/utils/random-number-generator.h" |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 197 Local<v8::String> script_name = | 197 Local<v8::String> script_name = |
| 198 ToApiHandle<v8::String>(isolate_->factory()->InternalizeUtf8String("")); | 198 ToApiHandle<v8::String>(isolate_->factory()->InternalizeUtf8String("")); |
| 199 int line = v8::AllocationProfile::kNoLineNumberInfo; | 199 int line = v8::AllocationProfile::kNoLineNumberInfo; |
| 200 int column = v8::AllocationProfile::kNoColumnNumberInfo; | 200 int column = v8::AllocationProfile::kNoColumnNumberInfo; |
| 201 std::vector<v8::AllocationProfile::Allocation> allocations; | 201 std::vector<v8::AllocationProfile::Allocation> allocations; |
| 202 allocations.reserve(node->allocations_.size()); | 202 allocations.reserve(node->allocations_.size()); |
| 203 if (node->script_id_ != v8::UnboundScript::kNoScriptId) { | 203 if (node->script_id_ != v8::UnboundScript::kNoScriptId) { |
| 204 // Cannot use std::map<T>::at because it is not available on android. | 204 // Cannot use std::map<T>::at because it is not available on android. |
| 205 auto non_const_scripts = const_cast<std::map<int, Script*>&>(scripts); | 205 auto non_const_scripts = const_cast<std::map<int, Script*>&>(scripts); |
| 206 Script* script = non_const_scripts[node->script_id_]; | 206 Script* script = non_const_scripts[node->script_id_]; |
| 207 if (script->name()->IsName()) { | 207 if (script) { |
| 208 Name* name = Name::cast(script->name()); | 208 if (script->name()->IsName()) { |
| 209 script_name = ToApiHandle<v8::String>( | 209 Name* name = Name::cast(script->name()); |
|
Michael Achenbach
2016/03/24 09:18:25
Experimental code-coverage reports this block as n
| |
| 210 isolate_->factory()->InternalizeUtf8String(names_->GetName(name))); | 210 script_name = ToApiHandle<v8::String>( |
| 211 isolate_->factory()->InternalizeUtf8String(names_->GetName(name))); | |
| 212 } | |
| 213 Handle<Script> script_handle(script); | |
| 214 line = 1 + Script::GetLineNumber(script_handle, node->script_position_); | |
| 215 column = | |
| 216 1 + Script::GetColumnNumber(script_handle, node->script_position_); | |
| 211 } | 217 } |
| 212 Handle<Script> script_handle(script); | |
| 213 | |
| 214 line = 1 + Script::GetLineNumber(script_handle, node->script_position_); | |
| 215 column = 1 + Script::GetColumnNumber(script_handle, node->script_position_); | |
| 216 for (auto alloc : node->allocations_) { | 218 for (auto alloc : node->allocations_) { |
| 217 allocations.push_back(ScaleSample(alloc.first, alloc.second)); | 219 allocations.push_back(ScaleSample(alloc.first, alloc.second)); |
| 218 } | 220 } |
| 219 } | 221 } |
| 220 | 222 |
| 221 profile->nodes().push_back(v8::AllocationProfile::Node( | 223 profile->nodes().push_back(v8::AllocationProfile::Node( |
| 222 {ToApiHandle<v8::String>( | 224 {ToApiHandle<v8::String>( |
| 223 isolate_->factory()->InternalizeUtf8String(node->name_)), | 225 isolate_->factory()->InternalizeUtf8String(node->name_)), |
| 224 script_name, node->script_id_, node->script_position_, line, column, | 226 script_name, node->script_id_, node->script_position_, line, column, |
| 225 std::vector<v8::AllocationProfile::Node*>(), allocations})); | 227 std::vector<v8::AllocationProfile::Node*>(), allocations})); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 252 auto profile = new v8::internal::AllocationProfile(); | 254 auto profile = new v8::internal::AllocationProfile(); |
| 253 | 255 |
| 254 TranslateAllocationNode(profile, &profile_root_, scripts); | 256 TranslateAllocationNode(profile, &profile_root_, scripts); |
| 255 | 257 |
| 256 return profile; | 258 return profile; |
| 257 } | 259 } |
| 258 | 260 |
| 259 | 261 |
| 260 } // namespace internal | 262 } // namespace internal |
| 261 } // namespace v8 | 263 } // namespace v8 |
| OLD | NEW |