| Index: base/trace_event/trace_event_impl.cc
|
| diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc
|
| index 95cf06d5a576c061eda861c74f923de6c50b9eef..9ca0ddc3b6075bf78e7818a5ae2038742cb27e43 100644
|
| --- a/base/trace_event/trace_event_impl.cc
|
| +++ b/base/trace_event/trace_event_impl.cc
|
| @@ -1908,11 +1908,13 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| AutoThreadLocalBoolean thread_is_in_trace_event(&thread_is_in_trace_event_);
|
|
|
| DCHECK(name);
|
| + DCHECK(!timestamp.is_null());
|
|
|
| if (flags & TRACE_EVENT_FLAG_MANGLE_ID)
|
| id ^= process_id_hash_;
|
|
|
| - TimeTicks now = OffsetTimestamp(timestamp);
|
| + TimeTicks offset_event_timestamp = OffsetTimestamp(timestamp);
|
| + TimeTicks now = OffsetNow();
|
| TimeTicks thread_now = ThreadNow();
|
|
|
| ThreadLocalEventBuffer* thread_local_event_buffer = NULL;
|
| @@ -1985,8 +1987,8 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| }
|
|
|
| if (trace_event) {
|
| - trace_event->Initialize(thread_id, now, thread_now, phase,
|
| - category_group_enabled, name, id,
|
| + trace_event->Initialize(thread_id, offset_event_timestamp, thread_now,
|
| + phase, category_group_enabled, name, id,
|
| num_args, arg_names, arg_types, arg_values,
|
| convertable_values, flags);
|
|
|
| @@ -2024,7 +2026,7 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| EventCallback event_callback = reinterpret_cast<EventCallback>(
|
| subtle::NoBarrier_Load(&event_callback_));
|
| if (event_callback) {
|
| - event_callback(now,
|
| + event_callback(offset_event_timestamp,
|
| phase == TRACE_EVENT_PHASE_COMPLETE ?
|
| TRACE_EVENT_PHASE_BEGIN : phase,
|
| category_group_enabled, name, id,
|
| @@ -2033,6 +2035,9 @@ TraceEventHandle TraceLog::AddTraceEventWithThreadIdAndTimestamp(
|
| }
|
| }
|
|
|
| + // Use |now| instead of |offset_event_timestamp| to compute overhead, because
|
| + // event timestamp may be not the real time that we started to add the event
|
| + // (e.g. event with zero timestamp or that was generated some time ago).
|
| if (thread_local_event_buffer)
|
| thread_local_event_buffer->ReportOverhead(now, thread_now);
|
|
|
|
|