Browse Source

deps: backport 2bcbe2f from V8 upstream

Excessive buffering of perf map files in V8 could cause profiles
to be missing symbols at times.

Original commit message:
  switch perf and ll_prof loggers to line buffering

  BUG=v8:5015
  R=jarin@chromium.org,yangguo@chromium.org

  Review-Url: https://codereview.chromium.org/2041243002
  Cr-Commit-Position: refs/heads/master@{#36788}

PR-URL: https://github.com/nodejs/node/pull/7814
Reviewed-By: bnoordhuis - Ben Noordhuis <info@bnoordhuis.nl>
v4.x
ofrobots 9 years ago
committed by Myles Borins
parent
commit
52cba4147d
  1. 2
      deps/v8/include/v8-version.h
  2. 12
      deps/v8/src/log.cc

2
deps/v8/include/v8-version.h

@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 4 #define V8_MAJOR_VERSION 4
#define V8_MINOR_VERSION 5 #define V8_MINOR_VERSION 5
#define V8_BUILD_NUMBER 103 #define V8_BUILD_NUMBER 103
#define V8_PATCH_LEVEL 41 #define V8_PATCH_LEVEL 42
// Use 1 for candidates and 0 otherwise. // Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.) // (Boolean macro values are not supported by all preprocessors.)

12
deps/v8/src/log.cc

@ -250,10 +250,6 @@ class PerfBasicLogger : public CodeEventLogger {
static const char kFilenameFormatString[]; static const char kFilenameFormatString[];
static const int kFilenameBufferPadding; static const int kFilenameBufferPadding;
// File buffer size of the low-level log. We don't use the default to
// minimize the associated overhead.
static const int kLogBufferSize = 2 * MB;
FILE* perf_output_handle_; FILE* perf_output_handle_;
}; };
@ -274,7 +270,7 @@ PerfBasicLogger::PerfBasicLogger()
perf_output_handle_ = perf_output_handle_ =
base::OS::FOpen(perf_dump_name.start(), base::OS::LogFileOpenMode); base::OS::FOpen(perf_dump_name.start(), base::OS::LogFileOpenMode);
CHECK_NOT_NULL(perf_output_handle_); CHECK_NOT_NULL(perf_output_handle_);
setvbuf(perf_output_handle_, NULL, _IOFBF, kLogBufferSize); setvbuf(perf_output_handle_, NULL, _IOLBF, 0);
} }
@ -361,10 +357,6 @@ class LowLevelLogger : public CodeEventLogger {
// Extension added to V8 log file name to get the low-level log name. // Extension added to V8 log file name to get the low-level log name.
static const char kLogExt[]; static const char kLogExt[];
// File buffer size of the low-level log. We don't use the default to
// minimize the associated overhead.
static const int kLogBufferSize = 2 * MB;
void LogCodeInfo(); void LogCodeInfo();
void LogWriteBytes(const char* bytes, int size); void LogWriteBytes(const char* bytes, int size);
@ -389,7 +381,7 @@ LowLevelLogger::LowLevelLogger(const char* name)
MemCopy(ll_name.start() + len, kLogExt, sizeof(kLogExt)); MemCopy(ll_name.start() + len, kLogExt, sizeof(kLogExt));
ll_output_handle_ = ll_output_handle_ =
base::OS::FOpen(ll_name.start(), base::OS::LogFileOpenMode); base::OS::FOpen(ll_name.start(), base::OS::LogFileOpenMode);
setvbuf(ll_output_handle_, NULL, _IOFBF, kLogBufferSize); setvbuf(ll_output_handle_, NULL, _IOLBF, 0);
LogCodeInfo(); LogCodeInfo();
} }

Loading…
Cancel
Save