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

Side by Side Diff: src/log.cc

Issue 2603333002: [profiler] Log both code and bytecode in heap SFI traversal (Closed)
Patch Set: Created 3 years, 11 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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/log.h" 5 #include "src/log.h"
6 6
7 #include <cstdarg> 7 #include <cstdarg>
8 #include <memory> 8 #include <memory>
9 #include <sstream> 9 #include <sstream>
10 10
(...skipping 1359 matching lines...) Expand 10 before | Expand all | Expand 10 after
1370 int compiled_funcs_count = 0; 1370 int compiled_funcs_count = 0;
1371 1371
1372 // Iterate the heap to find shared function info objects and record 1372 // Iterate the heap to find shared function info objects and record
1373 // the unoptimized code for them. 1373 // the unoptimized code for them.
1374 for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) { 1374 for (HeapObject* obj = iterator.next(); obj != NULL; obj = iterator.next()) {
1375 if (!obj->IsSharedFunctionInfo()) continue; 1375 if (!obj->IsSharedFunctionInfo()) continue;
1376 SharedFunctionInfo* sfi = SharedFunctionInfo::cast(obj); 1376 SharedFunctionInfo* sfi = SharedFunctionInfo::cast(obj);
1377 if (sfi->is_compiled() 1377 if (sfi->is_compiled()
1378 && (!sfi->script()->IsScript() 1378 && (!sfi->script()->IsScript()
1379 || Script::cast(sfi->script())->HasValidSource())) { 1379 || Script::cast(sfi->script())->HasValidSource())) {
1380 if (sfis != NULL) { 1380 // In some cases, an SFI might have (and have executing!) both bytecode
1381 sfis[compiled_funcs_count] = Handle<SharedFunctionInfo>(sfi); 1381 // and baseline code, so check for both and add them both if needed.
1382
rmcilroy 2017/01/03 12:05:30 nit - drop the newline
Leszek Swirski 2017/01/03 12:22:45 Done.
1383 if (sfi->HasBytecodeArray()) {
1384 if (sfis != NULL) {
1385 sfis[compiled_funcs_count] = Handle<SharedFunctionInfo>(sfi);
1386 }
1387 if (code_objects != NULL) {
1388 code_objects[compiled_funcs_count] =
1389 Handle<AbstractCode>(AbstractCode::cast(sfi->bytecode_array()));
1390 }
1391 ++compiled_funcs_count;
1382 } 1392 }
1383 if (code_objects != NULL) { 1393
1384 code_objects[compiled_funcs_count] = 1394 if (!sfi->IsInterpreted()) {
rmcilroy 2017/01/03 12:05:30 This should be HasBaselineCode instead
Leszek Swirski 2017/01/03 12:22:45 This would change previous behaviour, which also i
1385 Handle<AbstractCode>(sfi->abstract_code()); 1395 if (sfis != NULL) {
1396 sfis[compiled_funcs_count] = Handle<SharedFunctionInfo>(sfi);
1397 }
1398 if (code_objects != NULL) {
1399 code_objects[compiled_funcs_count] =
1400 Handle<AbstractCode>(AbstractCode::cast(sfi->code()));
1401 }
1402 ++compiled_funcs_count;
rmcilroy 2017/01/03 12:05:30 nit - could you pull the duplicate code out into a
Leszek Swirski 2017/01/03 12:22:45 Done.
1386 } 1403 }
1387 ++compiled_funcs_count;
1388 } 1404 }
1389 } 1405 }
1390 1406
1391 // Iterate all optimized functions in all contexts. 1407 // Iterate all optimized functions in all contexts.
1392 EnumerateOptimizedFunctionsVisitor visitor(sfis, 1408 EnumerateOptimizedFunctionsVisitor visitor(sfis,
1393 code_objects, 1409 code_objects,
1394 &compiled_funcs_count); 1410 &compiled_funcs_count);
1395 Deoptimizer::VisitAllOptimizedFunctions(heap->isolate(), &visitor); 1411 Deoptimizer::VisitAllOptimizedFunctions(heap->isolate(), &visitor);
1396 1412
1397 return compiled_funcs_count; 1413 return compiled_funcs_count;
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
1780 1796
1781 if (profiler_listener_.get() != nullptr) { 1797 if (profiler_listener_.get() != nullptr) {
1782 removeCodeEventListener(profiler_listener_.get()); 1798 removeCodeEventListener(profiler_listener_.get());
1783 } 1799 }
1784 1800
1785 return log_->Close(); 1801 return log_->Close();
1786 } 1802 }
1787 1803
1788 } // namespace internal 1804 } // namespace internal
1789 } // namespace v8 1805 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698