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

Unified Diff: Source/core/inspector/InjectedScript.cpp

Issue 466243002: Support merged Dart-JS callstacks (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/dartium
Patch Set: Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/inspector/InjectedScript.cpp
diff --git a/Source/core/inspector/InjectedScript.cpp b/Source/core/inspector/InjectedScript.cpp
index 4005d2a9d3c5a8e99877e16b3257f23fee4d3fd0..58a6077a90cbd42a8ba6a64bd381d7dde103c6be 100644
--- a/Source/core/inspector/InjectedScript.cpp
+++ b/Source/core/inspector/InjectedScript.cpp
@@ -34,10 +34,13 @@
#include "core/inspector/InjectedScript.h"
#include "bindings/v8/ScriptFunctionCall.h"
+#include "bindings/v8/V8PerIsolateData.h"
#include "core/inspector/InjectedScriptHost.h"
#include "platform/JSONValues.h"
#include "wtf/text/WTFString.h"
+#include <v8-debug.h>
+
using WebCore::TypeBuilder::Array;
using WebCore::TypeBuilder::Debugger::CallFrame;
using WebCore::TypeBuilder::Runtime::PropertyDescriptor;
@@ -81,11 +84,13 @@ void V8InjectedScript::callFunctionOn(ErrorString* errorString, const String& ob
void V8InjectedScript::evaluateOnCallFrame(ErrorString* errorString, const StackTrace& callFrames, const Vector<StackTrace>& asyncCallStacks, const String& callFrameId, const String& expression, const String& objectGroup, bool includeCommandLineAPI, bool returnByValue, bool generatePreview, RefPtr<RemoteObject>* result, TypeBuilder::OptOutput<bool>* wasThrown)
{
+ v8::Context::Scope contextScope(v8::Debug::GetDebugContext());
+
ScriptFunctionCall function(injectedScriptObject(), "evaluateOnCallFrame");
function.appendArgument(callFrames.asJavaScript());
Vector<ScriptValue> asyncCallStacksJavaScript;
for (size_t i = 0; i < asyncCallStacks.size(); i++) {
- if (asyncCallStacks[i].isJavaScript())
+ if (asyncCallStacks[i].hasJavaScript())
asyncCallStacksJavaScript.append(asyncCallStacks[i].asJavaScript());
}
function.appendArgument(asyncCallStacksJavaScript);
@@ -104,7 +109,7 @@ void V8InjectedScript::getCompletionsOnCallFrame(ErrorString* errorString, const
function.appendArgument(callFrames.asJavaScript());
Vector<ScriptValue> asyncCallStacksJavaScript;
for (size_t i = 0; i < asyncCallStacks.size(); i++) {
- if (asyncCallStacks[i].isJavaScript())
+ if (asyncCallStacks[i].hasJavaScript())
asyncCallStacksJavaScript.append(asyncCallStacks[i].asJavaScript());
}
function.appendArgument(asyncCallStacksJavaScript);
@@ -290,8 +295,18 @@ PassRefPtr<Array<CallFrame> > V8InjectedScript::wrapCallFrames(const StackTrace&
ScriptValue callFramesValue = callFunctionWithEvalEnabled(function, hadException);
ASSERT(!hadException);
RefPtr<JSONValue> result = callFramesValue.toJSONValue(scriptState());
- if (result && result->type() == JSONValue::TypeArray)
+ if (result && result->type() == JSONValue::TypeArray) {
+ // FIXMEDART: set timestamps for async callstacks as well.
+ if (asyncOrdinal < 1) {
+ // Bread the CallFrame JSON with timestamps.
vsm 2014/08/29 08:42:08 Bread?
Jacob 2014/09/05 23:35:56 This code has been removed.
+ StackTraceTimestampTracker* tracker = V8PerIsolateData::from(v8::Isolate::GetCurrent())->stackTraceTimestampTracker();
+ RefPtr<JSONArray> arr;
+ result->asArray(&arr);
+ for (size_t i = 0, length = arr->length(); i < length; i++)
+ CallFrame::runtimeCast(arr->get(i))->setTimestamp(tracker->getTimestamp(length - i - 1));
+ }
return Array<CallFrame>::runtimeCast(result);
+ }
return Array<CallFrame>::create();
}

Powered by Google App Engine
This is Rietveld 408576698