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

Side by Side Diff: src/log.cc

Issue 334763003: Start using OStreams. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased. Reformatted. Feedback addressed. Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « src/isolate.h ('k') | src/objects.cc » ('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 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 <stdarg.h> 5 #include <stdarg.h>
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #include "src/base/platform/platform.h" 9 #include "src/base/platform/platform.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 1954 matching lines...) Expand 10 before | Expand all | Expand 10 after
1965 PROFILE(isolate_, GetterCallbackEvent(name, getter_entry)); 1965 PROFILE(isolate_, GetterCallbackEvent(name, getter_entry));
1966 } 1966 }
1967 Address setter_entry = v8::ToCData<Address>(ai->setter()); 1967 Address setter_entry = v8::ToCData<Address>(ai->setter());
1968 if (setter_entry != 0) { 1968 if (setter_entry != 0) {
1969 PROFILE(isolate_, SetterCallbackEvent(name, setter_entry)); 1969 PROFILE(isolate_, SetterCallbackEvent(name, setter_entry));
1970 } 1970 }
1971 } 1971 }
1972 } 1972 }
1973 1973
1974 1974
1975 static void AddIsolateIdIfNeeded(Isolate* isolate, StringStream* stream) { 1975 static void AddIsolateIdIfNeeded(OStream& os, // NOLINT
1976 if (FLAG_logfile_per_isolate) stream->Add("isolate-%p-", isolate); 1976 Isolate* isolate) {
1977 if (FLAG_logfile_per_isolate) os << "isolate-" << isolate << "-";
1977 } 1978 }
1978 1979
1979 1980
1980 static SmartArrayPointer<const char> PrepareLogFileName( 1981 static void PrepareLogFileName(OStream& os, // NOLINT
1981 Isolate* isolate, const char* file_name) { 1982 Isolate* isolate, const char* file_name) {
1982 HeapStringAllocator allocator; 1983 AddIsolateIdIfNeeded(os, isolate);
1983 StringStream stream(&allocator);
1984 AddIsolateIdIfNeeded(isolate, &stream);
1985 for (const char* p = file_name; *p; p++) { 1984 for (const char* p = file_name; *p; p++) {
1986 if (*p == '%') { 1985 if (*p == '%') {
1987 p++; 1986 p++;
1988 switch (*p) { 1987 switch (*p) {
1989 case '\0': 1988 case '\0':
1990 // If there's a % at the end of the string we back up 1989 // If there's a % at the end of the string we back up
1991 // one character so we can escape the loop properly. 1990 // one character so we can escape the loop properly.
1992 p--; 1991 p--;
1993 break; 1992 break;
1994 case 'p': 1993 case 'p':
1995 stream.Add("%d", base::OS::GetCurrentProcessId()); 1994 os << base::OS::GetCurrentProcessId();
1996 break; 1995 break;
1997 case 't': { 1996 case 't':
1998 // %t expands to the current time in milliseconds. 1997 // %t expands to the current time in milliseconds.
1999 double time = base::OS::TimeCurrentMillis(); 1998 os << static_cast<int64_t>(base::OS::TimeCurrentMillis());
2000 stream.Add("%.0f", FmtElm(time));
2001 break; 1999 break;
2002 }
2003 case '%': 2000 case '%':
2004 // %% expands (contracts really) to %. 2001 // %% expands (contracts really) to %.
2005 stream.Put('%'); 2002 os << '%';
2006 break; 2003 break;
2007 default: 2004 default:
2008 // All other %'s expand to themselves. 2005 // All other %'s expand to themselves.
2009 stream.Put('%'); 2006 os << '%' << *p;
2010 stream.Put(*p);
2011 break; 2007 break;
2012 } 2008 }
2013 } else { 2009 } else {
2014 stream.Put(*p); 2010 os << *p;
2015 } 2011 }
2016 } 2012 }
2017 return SmartArrayPointer<const char>(stream.ToCString());
2018 } 2013 }
2019 2014
2020 2015
2021 bool Logger::SetUp(Isolate* isolate) { 2016 bool Logger::SetUp(Isolate* isolate) {
2022 // Tests and EnsureInitialize() can call this twice in a row. It's harmless. 2017 // Tests and EnsureInitialize() can call this twice in a row. It's harmless.
2023 if (is_initialized_) return true; 2018 if (is_initialized_) return true;
2024 is_initialized_ = true; 2019 is_initialized_ = true;
2025 2020
2026 // --ll-prof implies --log-code and --log-snapshot-positions. 2021 // --ll-prof implies --log-code and --log-snapshot-positions.
2027 if (FLAG_ll_prof) { 2022 if (FLAG_ll_prof) {
2028 FLAG_log_snapshot_positions = true; 2023 FLAG_log_snapshot_positions = true;
2029 } 2024 }
2030 2025
2031 SmartArrayPointer<const char> log_file_name = 2026 OStringStream log_file_name;
2032 PrepareLogFileName(isolate, FLAG_logfile); 2027 PrepareLogFileName(log_file_name, isolate, FLAG_logfile);
2033 log_->Initialize(log_file_name.get()); 2028 log_->Initialize(log_file_name.c_str());
2034 2029
2035 2030
2036 if (FLAG_perf_basic_prof) { 2031 if (FLAG_perf_basic_prof) {
2037 perf_basic_logger_ = new PerfBasicLogger(); 2032 perf_basic_logger_ = new PerfBasicLogger();
2038 addCodeEventListener(perf_basic_logger_); 2033 addCodeEventListener(perf_basic_logger_);
2039 } 2034 }
2040 2035
2041 if (FLAG_perf_jit_prof) { 2036 if (FLAG_perf_jit_prof) {
2042 perf_jit_logger_ = new PerfJitLogger(); 2037 perf_jit_logger_ = new PerfJitLogger();
2043 addCodeEventListener(perf_jit_logger_); 2038 addCodeEventListener(perf_jit_logger_);
2044 } 2039 }
2045 2040
2046 if (FLAG_ll_prof) { 2041 if (FLAG_ll_prof) {
2047 ll_logger_ = new LowLevelLogger(log_file_name.get()); 2042 ll_logger_ = new LowLevelLogger(log_file_name.c_str());
2048 addCodeEventListener(ll_logger_); 2043 addCodeEventListener(ll_logger_);
2049 } 2044 }
2050 2045
2051 ticker_ = new Ticker(isolate, kSamplingIntervalMs); 2046 ticker_ = new Ticker(isolate, kSamplingIntervalMs);
2052 2047
2053 if (Log::InitLogAtStart()) { 2048 if (Log::InitLogAtStart()) {
2054 is_logging_ = true; 2049 is_logging_ = true;
2055 } 2050 }
2056 2051
2057 if (FLAG_prof) { 2052 if (FLAG_prof) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
2126 if (jit_logger_) { 2121 if (jit_logger_) {
2127 removeCodeEventListener(jit_logger_); 2122 removeCodeEventListener(jit_logger_);
2128 delete jit_logger_; 2123 delete jit_logger_;
2129 jit_logger_ = NULL; 2124 jit_logger_ = NULL;
2130 } 2125 }
2131 2126
2132 return log_->Close(); 2127 return log_->Close();
2133 } 2128 }
2134 2129
2135 } } // namespace v8::internal 2130 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/isolate.h ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698