| Index: third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp | 
| diff --git a/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp b/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp | 
| index 675101a641777e58a9c95989725c3d43b9668423..d3c07eaccac74beeb73572e677da7dfc0aeaca3a 100644 | 
| --- a/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp | 
| +++ b/third_party/WebKit/Source/core/inspector/InspectorTraceEvents.cpp | 
| @@ -33,6 +33,7 @@ | 
| #include "wtf/Vector.h" | 
| #include "wtf/text/TextPosition.h" | 
| #include <inttypes.h> | 
| +#include <v8-profiler.h> | 
| #include <v8.h> | 
|  | 
| namespace blink { | 
| @@ -44,17 +45,9 @@ String toHexString(const void* p) | 
| return String::format("0x%" PRIx64, static_cast<uint64_t>(reinterpret_cast<intptr_t>(p))); | 
| } | 
|  | 
| -void setCallStack(TracedValue* value) | 
| +void requestCallStackSample() | 
| { | 
| -    static const unsigned char* traceCategoryEnabled = 0; | 
| -    WTF_ANNOTATE_BENIGN_RACE(&traceCategoryEnabled, "trace_event category"); | 
| -    if (!traceCategoryEnabled) | 
| -        traceCategoryEnabled = TRACE_EVENT_API_GET_CATEGORY_GROUP_ENABLED(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack")); | 
| -    if (!*traceCategoryEnabled) | 
| -        return; | 
| -    RefPtr<ScriptCallStack> scriptCallStack = currentScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture); | 
| -    if (scriptCallStack) | 
| -        scriptCallStack->toTracedValue(value, "stackTrace"); | 
| +    v8::Isolate::GetCurrent()->GetCpuProfiler()->CollectSample(); | 
| } | 
|  | 
| namespace { | 
| @@ -284,7 +277,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::beginData | 
| value->setInteger("totalObjects", totalObjects); | 
| value->setBoolean("partialLayout", isPartial); | 
| value->setString("frame", toHexString(&frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -418,7 +411,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorSendRequestEvent::data | 
| } | 
| if (priority) | 
| value->setString("priority", priority); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -471,7 +464,7 @@ static PassRefPtr<TracedValue> genericTimerData(ExecutionContext* context, int t | 
| value->setInteger("timerId", timerId); | 
| if (LocalFrame* frame = frameForExecutionContext(context)) | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -501,7 +494,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorAnimationFrameEvent::d | 
| value->setString("frame", toHexString(toDocument(context)->frame())); | 
| else if (context->isWorkerGlobalScope()) | 
| value->setString("worker", toHexString(toWorkerGlobalScope(context))); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -511,7 +504,7 @@ PassRefPtr<TracedValue> genericIdleCallbackEvent(ExecutionContext* context, int | 
| value->setInteger("id", id); | 
| if (LocalFrame* frame = frameForExecutionContext(context)) | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -541,7 +534,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorParseHtmlEvent::beginD | 
| value->setInteger("startLine", startLine); | 
| value->setString("frame", toHexString(document->frame())); | 
| value->setString("url", document->url().string()); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -566,7 +559,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrReadyStateChangeEve | 
| value->setInteger("readyState", request->readyState()); | 
| if (LocalFrame* frame = frameForExecutionContext(context)) | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -576,7 +569,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrLoadEvent::data(Exe | 
| value->setString("url", request->url().string()); | 
| if (LocalFrame* frame = frameForExecutionContext(context)) | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -618,7 +611,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintEvent::data(Layou | 
| setGeneratingNodeInfo(value.get(), layoutObject, "nodeId"); | 
| int graphicsLayerId = graphicsLayer ? graphicsLayer->platformLayer()->id() : 0; | 
| value->setInteger("layerId", graphicsLayerId); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -673,7 +666,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEvaluateScriptEvent::d | 
| { | 
| RefPtr<TracedValue> value = fillLocation(url, textPosition); | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -690,7 +683,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorFunctionCallEvent::dat | 
| value->setInteger("scriptLine", scriptLine); | 
| if (LocalFrame* frame = frameForExecutionContext(context)) | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -743,7 +736,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorInvalidateLayoutEvent: | 
| { | 
| RefPtr<TracedValue> value = TracedValue::create(); | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -751,7 +744,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorRecalculateStylesEvent | 
| { | 
| RefPtr<TracedValue> value = TracedValue::create(); | 
| value->setString("frame", toHexString(frame)); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
| @@ -759,7 +752,7 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEventDispatchEvent::da | 
| { | 
| RefPtr<TracedValue> value = TracedValue::create(); | 
| value->setString("type", event.type()); | 
| -    setCallStack(value.get()); | 
| +    requestCallStackSample(); | 
| return value.release(); | 
| } | 
|  | 
|  |