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 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 } | 175 } |
176 | 176 |
177 v8::AllocationProfile::Node* SamplingHeapProfiler::TranslateAllocationNode( | 177 v8::AllocationProfile::Node* SamplingHeapProfiler::TranslateAllocationNode( |
178 AllocationProfile* profile, SamplingHeapProfiler::AllocationNode* node, | 178 AllocationProfile* profile, SamplingHeapProfiler::AllocationNode* node, |
179 const std::map<int, Script*>& scripts) { | 179 const std::map<int, Script*>& scripts) { |
180 Local<v8::String> script_name = | 180 Local<v8::String> script_name = |
181 ToApiHandle<v8::String>(isolate_->factory()->InternalizeUtf8String("")); | 181 ToApiHandle<v8::String>(isolate_->factory()->InternalizeUtf8String("")); |
182 int line = v8::AllocationProfile::kNoLineNumberInfo; | 182 int line = v8::AllocationProfile::kNoLineNumberInfo; |
183 int column = v8::AllocationProfile::kNoColumnNumberInfo; | 183 int column = v8::AllocationProfile::kNoColumnNumberInfo; |
184 std::vector<v8::AllocationProfile::Allocation> allocations; | 184 std::vector<v8::AllocationProfile::Allocation> allocations; |
| 185 allocations.reserve(node->allocations_.size()); |
185 if (node->script_id_ != v8::UnboundScript::kNoScriptId) { | 186 if (node->script_id_ != v8::UnboundScript::kNoScriptId) { |
186 // Cannot use std::map<T>::at because it is not available on android. | 187 // Cannot use std::map<T>::at because it is not available on android. |
187 auto non_const_scripts = const_cast<std::map<int, Script*>&>(scripts); | 188 auto non_const_scripts = const_cast<std::map<int, Script*>&>(scripts); |
188 Script* script = non_const_scripts[node->script_id_]; | 189 Script* script = non_const_scripts[node->script_id_]; |
189 if (script->name()->IsName()) { | 190 if (script->name()->IsName()) { |
190 Name* name = Name::cast(script->name()); | 191 Name* name = Name::cast(script->name()); |
191 script_name = ToApiHandle<v8::String>( | 192 script_name = ToApiHandle<v8::String>( |
192 isolate_->factory()->InternalizeUtf8String(names_->GetName(name))); | 193 isolate_->factory()->InternalizeUtf8String(names_->GetName(name))); |
193 } | 194 } |
194 Handle<Script> script_handle(script); | 195 Handle<Script> script_handle(script); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 auto profile = new v8::internal::AllocationProfile(); | 229 auto profile = new v8::internal::AllocationProfile(); |
229 | 230 |
230 TranslateAllocationNode(profile, &profile_root_, scripts); | 231 TranslateAllocationNode(profile, &profile_root_, scripts); |
231 | 232 |
232 return profile; | 233 return profile; |
233 } | 234 } |
234 | 235 |
235 | 236 |
236 } // namespace internal | 237 } // namespace internal |
237 } // namespace v8 | 238 } // namespace v8 |
OLD | NEW |