Skip to content
This repository has been archived by the owner on Mar 25, 2018. It is now read-only.

Commit

Permalink
Revert of [Tracing] Remove unnecessary memory allocation in runtime c…
Browse files Browse the repository at this point in the history
…all stats. (patchset #1 id:1 of https://codereview.chromium.org/2342643004/ )

Reason for revert:
Revert because this breaks V8's roll into Chromium. ASAN complains about memory accesses in a particular unit test.

Borked roll CL:
https://codereview.chromium.org/2348833002/

Reproduce breakage with:

1, args.gn:
  v8_deprecation_warnings = true
  use_goma = true
  is_asan = true
2, ninja -C out/... content_browsertests
3, out/.../content_browsertests --gtest_filter=V8SamplingProfilerTest.*

Original issue's description:
> [Tracing] Remove unnecessary memory allocation in runtime call stats.
>
> Previously we didn't implement TRACE_STR_COPY when we write trace events to
> file, which causes us to allocate a growing independent memory chunk for dumped
> runtime call stats table. Since we now have a fully functional TRACE_STR_COPY,
> this memory allocation can be avoided, this patch removes it.
>
> BUG=v8:5089
>
> Committed: https://crrev.com/e1997bb7d780d12e3a89078e8dd652dcf1d90039
> Cr-Commit-Position: refs/heads/master@{#39462}

TBR=cbruni@chromium.org,fmeawad@chromium.org,lpy@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:5089

Review-Url: https://codereview.chromium.org/2349593004
Cr-Commit-Position: refs/heads/master@{#39475}
  • Loading branch information
otherdaniel authored and Commit bot committed Sep 16, 2016
1 parent 8d00743 commit eb7ba29
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/counters.cc
Original file line number Diff line number Diff line change
Expand Up @@ -393,8 +393,15 @@ const char* RuntimeCallStats::Dump() {
FOR_EACH_HANDLER_COUNTER(DUMP_COUNTER)
#undef DUMP_COUNTER
buffer_ << "\"END\":[]}";
const std::string& buffer_str = buffer_.str();
size_t length = buffer_str.size();
if (length > len_) {
buffer_c_str_.reset(new char[length + 1]);
len_ = length;
}
strncpy(buffer_c_str_.get(), buffer_str.c_str(), length + 1);
in_use_ = false;
return buffer_.str().c_str();
return buffer_c_str_.get();
}

} // namespace internal
Expand Down
2 changes: 2 additions & 0 deletions src/counters.h
Original file line number Diff line number Diff line change
Expand Up @@ -803,6 +803,8 @@ class RuntimeCallStats {

private:
std::stringstream buffer_;
std::unique_ptr<char[]> buffer_c_str_;
size_t len_ = 0;
// Counter to track recursive time events.
RuntimeCallTimer* current_timer_ = NULL;
// Used to track nested tracing scopes.
Expand Down

0 comments on commit eb7ba29

Please sign in to comment.