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

Side by Side Diff: base/trace_event/trace_event_impl.cc

Issue 992083002: base: Stop passing by non-const references in some more places. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 | « base/threading/thread_collision_warner_unittest.cc ('k') | no next file » | 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium 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 "base/trace_event/trace_event_impl.h" 5 #include "base/trace_event/trace_event_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/base_switches.h" 9 #include "base/base_switches.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 cloned_chunk->next_free_ = next_free_; 423 cloned_chunk->next_free_ = next_free_;
424 for (size_t i = 0; i < next_free_; ++i) 424 for (size_t i = 0; i < next_free_; ++i)
425 cloned_chunk->chunk_[i].CopyFrom(chunk_[i]); 425 cloned_chunk->chunk_[i].CopyFrom(chunk_[i]);
426 return cloned_chunk.Pass(); 426 return cloned_chunk.Pass();
427 } 427 }
428 428
429 // A helper class that allows the lock to be acquired in the middle of the scope 429 // A helper class that allows the lock to be acquired in the middle of the scope
430 // and unlocks at the end of scope if locked. 430 // and unlocks at the end of scope if locked.
431 class TraceLog::OptionalAutoLock { 431 class TraceLog::OptionalAutoLock {
432 public: 432 public:
433 explicit OptionalAutoLock(Lock& lock) 433 explicit OptionalAutoLock(Lock* lock) : lock_(lock), locked_(false) {}
434 : lock_(lock),
435 locked_(false) {
436 }
437 434
438 ~OptionalAutoLock() { 435 ~OptionalAutoLock() {
439 if (locked_) 436 if (locked_)
440 lock_.Release(); 437 lock_->Release();
441 } 438 }
442 439
443 void EnsureAcquired() { 440 void EnsureAcquired() {
444 if (!locked_) { 441 if (!locked_) {
445 lock_.Acquire(); 442 lock_->Acquire();
446 locked_ = true; 443 locked_ = true;
447 } 444 }
448 } 445 }
449 446
450 private: 447 private:
451 Lock& lock_; 448 Lock* lock_;
452 bool locked_; 449 bool locked_;
453 DISALLOW_COPY_AND_ASSIGN(OptionalAutoLock); 450 DISALLOW_COPY_AND_ASSIGN(OptionalAutoLock);
454 }; 451 };
455 452
456 // Use this function instead of TraceEventHandle constructor to keep the 453 // Use this function instead of TraceEventHandle constructor to keep the
457 // overhead of ScopedTracer (trace_event.h) constructor minimum. 454 // overhead of ScopedTracer (trace_event.h) constructor minimum.
458 void MakeHandle(uint32 chunk_seq, size_t chunk_index, size_t event_index, 455 void MakeHandle(uint32 chunk_seq, size_t chunk_index, size_t event_index,
459 TraceEventHandle* handle) { 456 TraceEventHandle* handle) {
460 DCHECK(chunk_seq); 457 DCHECK(chunk_seq);
461 DCHECK(chunk_index < (1u << 16)); 458 DCHECK(chunk_index < (1u << 16));
(...skipping 1508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1970 existing_name->second.push_back(','); 1967 existing_name->second.push_back(',');
1971 existing_name->second.append(new_name); 1968 existing_name->second.append(new_name);
1972 } 1969 }
1973 } 1970 }
1974 } 1971 }
1975 } 1972 }
1976 1973
1977 std::string console_message; 1974 std::string console_message;
1978 if (*category_group_enabled & 1975 if (*category_group_enabled &
1979 (ENABLED_FOR_RECORDING | ENABLED_FOR_MONITORING)) { 1976 (ENABLED_FOR_RECORDING | ENABLED_FOR_MONITORING)) {
1980 OptionalAutoLock lock(lock_); 1977 OptionalAutoLock lock(&lock_);
1981 1978
1982 TraceEvent* trace_event = NULL; 1979 TraceEvent* trace_event = NULL;
1983 if (thread_local_event_buffer) { 1980 if (thread_local_event_buffer) {
1984 trace_event = thread_local_event_buffer->AddTraceEvent(&handle); 1981 trace_event = thread_local_event_buffer->AddTraceEvent(&handle);
1985 } else { 1982 } else {
1986 lock.EnsureAcquired(); 1983 lock.EnsureAcquired();
1987 trace_event = AddEventToThreadSharedChunkWhileLocked(&handle, true); 1984 trace_event = AddEventToThreadSharedChunkWhileLocked(&handle, true);
1988 } 1985 }
1989 1986
1990 if (trace_event) { 1987 if (trace_event) {
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
2123 if (thread_is_in_trace_event_.Get()) 2120 if (thread_is_in_trace_event_.Get())
2124 return; 2121 return;
2125 2122
2126 AutoThreadLocalBoolean thread_is_in_trace_event(&thread_is_in_trace_event_); 2123 AutoThreadLocalBoolean thread_is_in_trace_event(&thread_is_in_trace_event_);
2127 2124
2128 TimeTicks thread_now = ThreadNow(); 2125 TimeTicks thread_now = ThreadNow();
2129 TimeTicks now = OffsetNow(); 2126 TimeTicks now = OffsetNow();
2130 2127
2131 std::string console_message; 2128 std::string console_message;
2132 if (*category_group_enabled & ENABLED_FOR_RECORDING) { 2129 if (*category_group_enabled & ENABLED_FOR_RECORDING) {
2133 OptionalAutoLock lock(lock_); 2130 OptionalAutoLock lock(&lock_);
2134 2131
2135 TraceEvent* trace_event = GetEventByHandleInternal(handle, &lock); 2132 TraceEvent* trace_event = GetEventByHandleInternal(handle, &lock);
2136 if (trace_event) { 2133 if (trace_event) {
2137 DCHECK(trace_event->phase() == TRACE_EVENT_PHASE_COMPLETE); 2134 DCHECK(trace_event->phase() == TRACE_EVENT_PHASE_COMPLETE);
2138 trace_event->UpdateDuration(now, thread_now); 2135 trace_event->UpdateDuration(now, thread_now);
2139 #if defined(OS_ANDROID) 2136 #if defined(OS_ANDROID)
2140 trace_event->SendToATrace(); 2137 trace_event->SendToATrace();
2141 #endif 2138 #endif
2142 } 2139 }
2143 2140
(...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
2605 } 2602 }
2606 2603
2607 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { 2604 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() {
2608 if (*category_group_enabled_) { 2605 if (*category_group_enabled_) {
2609 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, 2606 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_,
2610 name_, event_handle_); 2607 name_, event_handle_);
2611 } 2608 }
2612 } 2609 }
2613 2610
2614 } // namespace trace_event_internal 2611 } // namespace trace_event_internal
OLDNEW
« no previous file with comments | « base/threading/thread_collision_warner_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698