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

Side by Side Diff: runtime/vm/isolate.cc

Issue 1296353002: Add --timing (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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 | « runtime/vm/isolate.h ('k') | runtime/vm/os_thread.h » ('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 (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/isolate.h" 5 #include "vm/isolate.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "platform/json.h" 9 #include "platform/json.h"
10 #include "vm/code_observers.h" 10 #include "vm/code_observers.h"
(...skipping 20 matching lines...) Expand all
31 #include "vm/service_isolate.h" 31 #include "vm/service_isolate.h"
32 #include "vm/simulator.h" 32 #include "vm/simulator.h"
33 #include "vm/stack_frame.h" 33 #include "vm/stack_frame.h"
34 #include "vm/store_buffer.h" 34 #include "vm/store_buffer.h"
35 #include "vm/stub_code.h" 35 #include "vm/stub_code.h"
36 #include "vm/symbols.h" 36 #include "vm/symbols.h"
37 #include "vm/tags.h" 37 #include "vm/tags.h"
38 #include "vm/thread_interrupter.h" 38 #include "vm/thread_interrupter.h"
39 #include "vm/thread_registry.h" 39 #include "vm/thread_registry.h"
40 #include "vm/timeline.h" 40 #include "vm/timeline.h"
41 #include "vm/timeline_analysis.h"
41 #include "vm/timer.h" 42 #include "vm/timer.h"
42 #include "vm/visitor.h" 43 #include "vm/visitor.h"
43 44
44 45
45 namespace dart { 46 namespace dart {
46 47
47 DECLARE_FLAG(bool, print_metrics); 48 DECLARE_FLAG(bool, print_metrics);
49 DECLARE_FLAG(bool, timing);
48 DECLARE_FLAG(bool, trace_service); 50 DECLARE_FLAG(bool, trace_service);
49 51
50 DEFINE_FLAG(bool, trace_isolates, false, 52 DEFINE_FLAG(bool, trace_isolates, false,
51 "Trace isolate creation and shut down."); 53 "Trace isolate creation and shut down.");
52 DEFINE_FLAG(bool, pause_isolates_on_start, false, 54 DEFINE_FLAG(bool, pause_isolates_on_start, false,
53 "Pause isolates before starting."); 55 "Pause isolates before starting.");
54 DEFINE_FLAG(bool, pause_isolates_on_exit, false, 56 DEFINE_FLAG(bool, pause_isolates_on_exit, false,
55 "Pause isolates exiting."); 57 "Pause isolates exiting.");
56 DEFINE_FLAG(bool, break_at_isolate_spawn, false, 58 DEFINE_FLAG(bool, break_at_isolate_spawn, false,
57 "Insert a one-time breakpoint at the entrypoint for all spawned " 59 "Insert a one-time breakpoint at the entrypoint for all spawned "
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after
1522 // Close all the ports owned by this isolate. 1524 // Close all the ports owned by this isolate.
1523 PortMap::ClosePorts(message_handler()); 1525 PortMap::ClosePorts(message_handler());
1524 1526
1525 // Fail fast if anybody tries to post any more messsages to this isolate. 1527 // Fail fast if anybody tries to post any more messsages to this isolate.
1526 delete message_handler(); 1528 delete message_handler();
1527 set_message_handler(NULL); 1529 set_message_handler(NULL);
1528 1530
1529 // Dump all accumulated timer data for the isolate. 1531 // Dump all accumulated timer data for the isolate.
1530 timer_list_.ReportTimers(); 1532 timer_list_.ReportTimers();
1531 1533
1534 // Before analyzing the isolate's timeline blocks- close all of them.
1535 CloseAllTimelineBlocks();
1536
1537 // Dump all timing data for the isolate.
1538 if (FLAG_timing) {
1539 TimelinePauseTrace tpt;
1540 tpt.Print();
1541 }
1542
1532 // Finalize any weak persistent handles with a non-null referent. 1543 // Finalize any weak persistent handles with a non-null referent.
1533 FinalizeWeakPersistentHandlesVisitor visitor; 1544 FinalizeWeakPersistentHandlesVisitor visitor;
1534 api_state()->weak_persistent_handles().VisitHandles(&visitor); 1545 api_state()->weak_persistent_handles().VisitHandles(&visitor);
1535 api_state()->prologue_weak_persistent_handles().VisitHandles(&visitor); 1546 api_state()->prologue_weak_persistent_handles().VisitHandles(&visitor);
1536 1547
1537 if (FLAG_trace_isolates) { 1548 if (FLAG_trace_isolates) {
1538 heap()->PrintSizes(); 1549 heap()->PrintSizes();
1539 megamorphic_cache_table()->PrintSizes(); 1550 megamorphic_cache_table()->PrintSizes();
1540 Symbols::DumpStats(); 1551 Symbols::DumpStats();
1541 OS::Print("[-] Stopping isolate:\n" 1552 OS::Print("[-] Stopping isolate:\n"
(...skipping 21 matching lines...) Expand all
1563 1574
1564 // TODO(5411455): For now just make sure there are no current isolates 1575 // TODO(5411455): For now just make sure there are no current isolates
1565 // as we are shutting down the isolate. 1576 // as we are shutting down the isolate.
1566 Thread::ExitIsolate(); 1577 Thread::ExitIsolate();
1567 // All threads should have exited by now. 1578 // All threads should have exited by now.
1568 thread_registry()->CheckNotScheduled(this); 1579 thread_registry()->CheckNotScheduled(this);
1569 Profiler::ShutdownProfilingForIsolate(this); 1580 Profiler::ShutdownProfilingForIsolate(this);
1570 } 1581 }
1571 1582
1572 1583
1584 void Isolate::CloseAllTimelineBlocks() {
1585 // Close all blocks
1586 thread_registry_->CloseAllTimelineBlocks();
1587 TimelineEventRecorder* recorder = Timeline::recorder();
1588 if (recorder != NULL) {
1589 MutexLocker ml(&recorder->lock_);
1590 Thread::Current()->CloseTimelineBlock();
1591 }
1592 }
1593
1594
1573 Dart_IsolateCreateCallback Isolate::create_callback_ = NULL; 1595 Dart_IsolateCreateCallback Isolate::create_callback_ = NULL;
1574 Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL; 1596 Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL;
1575 Dart_IsolateUnhandledExceptionCallback 1597 Dart_IsolateUnhandledExceptionCallback
1576 Isolate::unhandled_exception_callback_ = NULL; 1598 Isolate::unhandled_exception_callback_ = NULL;
1577 Dart_IsolateShutdownCallback Isolate::shutdown_callback_ = NULL; 1599 Dart_IsolateShutdownCallback Isolate::shutdown_callback_ = NULL;
1578 Dart_FileOpenCallback Isolate::file_open_callback_ = NULL; 1600 Dart_FileOpenCallback Isolate::file_open_callback_ = NULL;
1579 Dart_FileReadCallback Isolate::file_read_callback_ = NULL; 1601 Dart_FileReadCallback Isolate::file_read_callback_ = NULL;
1580 Dart_FileWriteCallback Isolate::file_write_callback_ = NULL; 1602 Dart_FileWriteCallback Isolate::file_write_callback_ = NULL;
1581 Dart_FileCloseCallback Isolate::file_close_callback_ = NULL; 1603 Dart_FileCloseCallback Isolate::file_close_callback_ = NULL;
1582 Dart_EntropySource Isolate::entropy_source_callback_ = NULL; 1604 Dart_EntropySource Isolate::entropy_source_callback_ = NULL;
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after
2330 serialized_message_, serialized_message_len_); 2352 serialized_message_, serialized_message_len_);
2331 } 2353 }
2332 2354
2333 2355
2334 void IsolateSpawnState::Cleanup() { 2356 void IsolateSpawnState::Cleanup() {
2335 SwitchIsolateScope switch_scope(I); 2357 SwitchIsolateScope switch_scope(I);
2336 Dart::ShutdownIsolate(); 2358 Dart::ShutdownIsolate();
2337 } 2359 }
2338 2360
2339 } // namespace dart 2361 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/os_thread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698