OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 ASSERT(FLAG_log_internal_timer_events); | 651 ASSERT(FLAG_log_internal_timer_events); |
652 LogMessageBuilder msg(this); | 652 LogMessageBuilder msg(this); |
653 int since_epoch = static_cast<int>(OS::Ticks() - epoch_); | 653 int since_epoch = static_cast<int>(OS::Ticks() - epoch_); |
654 const char* format = (se == START) ? "timer-event-start,\"%s\",%ld\n" | 654 const char* format = (se == START) ? "timer-event-start,\"%s\",%ld\n" |
655 : "timer-event-end,\"%s\",%ld\n"; | 655 : "timer-event-end,\"%s\",%ld\n"; |
656 msg.Append(format, name, since_epoch); | 656 msg.Append(format, name, since_epoch); |
657 msg.WriteToLogFile(); | 657 msg.WriteToLogFile(); |
658 } | 658 } |
659 | 659 |
660 | 660 |
661 void Logger::EnterExternal() { | 661 void Logger::EnterExternal(Isolate* isolate) { |
662 LOG(ISOLATE, TimerEvent(START, TimerEventScope::v8_external)); | 662 LOG(isolate, TimerEvent(START, TimerEventScope::v8_external)); |
| 663 ASSERT(isolate->current_vm_state() == JS); |
| 664 isolate->set_current_vm_state(EXTERNAL); |
663 } | 665 } |
664 | 666 |
665 | 667 |
666 void Logger::LeaveExternal() { | 668 void Logger::LeaveExternal(Isolate* isolate) { |
667 LOG(ISOLATE, TimerEvent(END, TimerEventScope::v8_external)); | 669 LOG(isolate, TimerEvent(END, TimerEventScope::v8_external)); |
| 670 ASSERT(isolate->current_vm_state() == EXTERNAL); |
| 671 isolate->set_current_vm_state(JS); |
668 } | 672 } |
669 | 673 |
670 | 674 |
671 void Logger::TimerEventScope::LogTimerEvent(StartEnd se) { | 675 void Logger::TimerEventScope::LogTimerEvent(StartEnd se) { |
672 LOG(isolate_, TimerEvent(se, name_)); | 676 LOG(isolate_, TimerEvent(se, name_)); |
673 } | 677 } |
674 | 678 |
675 | 679 |
676 const char* Logger::TimerEventScope::v8_recompile_synchronous = | 680 const char* Logger::TimerEventScope::v8_recompile_synchronous = |
677 "V8.RecompileSynchronous"; | 681 "V8.RecompileSynchronous"; |
(...skipping 1132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1810 PROFILE(isolate_, GetterCallbackEvent(name, getter_entry)); | 1814 PROFILE(isolate_, GetterCallbackEvent(name, getter_entry)); |
1811 } | 1815 } |
1812 Address setter_entry = v8::ToCData<Address>(ai->setter()); | 1816 Address setter_entry = v8::ToCData<Address>(ai->setter()); |
1813 if (setter_entry != 0) { | 1817 if (setter_entry != 0) { |
1814 PROFILE(isolate_, SetterCallbackEvent(name, setter_entry)); | 1818 PROFILE(isolate_, SetterCallbackEvent(name, setter_entry)); |
1815 } | 1819 } |
1816 } | 1820 } |
1817 } | 1821 } |
1818 | 1822 |
1819 | 1823 |
1820 bool Logger::SetUp() { | 1824 bool Logger::SetUp(Isolate* isolate) { |
1821 // Tests and EnsureInitialize() can call this twice in a row. It's harmless. | 1825 // Tests and EnsureInitialize() can call this twice in a row. It's harmless. |
1822 if (is_initialized_) return true; | 1826 if (is_initialized_) return true; |
1823 is_initialized_ = true; | 1827 is_initialized_ = true; |
1824 | 1828 |
1825 // --ll-prof implies --log-code and --log-snapshot-positions. | 1829 // --ll-prof implies --log-code and --log-snapshot-positions. |
1826 if (FLAG_ll_prof) { | 1830 if (FLAG_ll_prof) { |
1827 FLAG_log_snapshot_positions = true; | 1831 FLAG_log_snapshot_positions = true; |
1828 } | 1832 } |
1829 | 1833 |
1830 // --prof_lazy controls --log-code, implies --noprof_auto. | 1834 // --prof_lazy controls --log-code, implies --noprof_auto. |
1831 if (FLAG_prof_lazy) { | 1835 if (FLAG_prof_lazy) { |
1832 FLAG_log_code = false; | 1836 FLAG_log_code = false; |
1833 FLAG_prof_auto = false; | 1837 FLAG_prof_auto = false; |
1834 } | 1838 } |
1835 | 1839 |
1836 // TODO(isolates): this assert introduces cyclic dependency (logger | |
1837 // -> thread local top -> heap -> logger). | |
1838 // ASSERT(VMState::is_outermost_external()); | |
1839 | |
1840 log_->Initialize(); | 1840 log_->Initialize(); |
1841 | 1841 |
1842 if (FLAG_ll_prof) LogCodeInfo(); | 1842 if (FLAG_ll_prof) LogCodeInfo(); |
1843 | 1843 |
1844 Isolate* isolate = Isolate::Current(); | |
1845 ticker_ = new Ticker(isolate, kSamplingIntervalMs); | 1844 ticker_ = new Ticker(isolate, kSamplingIntervalMs); |
1846 | 1845 |
1847 bool start_logging = FLAG_log || FLAG_log_runtime || FLAG_log_api | 1846 if (Log::InitLogAtStart()) { |
1848 || FLAG_log_code || FLAG_log_gc || FLAG_log_handles || FLAG_log_suspect | |
1849 || FLAG_log_regexp || FLAG_log_state_changes || FLAG_ll_prof | |
1850 || FLAG_log_internal_timer_events; | |
1851 | |
1852 if (start_logging) { | |
1853 logging_nesting_ = 1; | 1847 logging_nesting_ = 1; |
1854 } | 1848 } |
1855 | 1849 |
1856 if (FLAG_prof) { | 1850 if (FLAG_prof) { |
1857 profiler_ = new Profiler(isolate); | 1851 profiler_ = new Profiler(isolate); |
1858 if (!FLAG_prof_auto) { | 1852 if (!FLAG_prof_auto) { |
1859 profiler_->pause(); | 1853 profiler_->pause(); |
1860 } else { | 1854 } else { |
1861 logging_nesting_ = 1; | 1855 logging_nesting_ = 1; |
1862 } | 1856 } |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1899 profiler_ = NULL; | 1893 profiler_ = NULL; |
1900 } | 1894 } |
1901 | 1895 |
1902 delete ticker_; | 1896 delete ticker_; |
1903 ticker_ = NULL; | 1897 ticker_ = NULL; |
1904 | 1898 |
1905 return log_->Close(); | 1899 return log_->Close(); |
1906 } | 1900 } |
1907 | 1901 |
1908 } } // namespace v8::internal | 1902 } } // namespace v8::internal |
OLD | NEW |