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

Unified Diff: runtime/vm/debugger.cc

Issue 2872503004: vm-service: Add optional 'scope' parameter to 'evaluate' and 'evaluateInFrame'. (Closed)
Patch Set: . Created 3 years, 7 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: runtime/vm/debugger.cc
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 2bd07a4ba09af7f89d7ad6a6f8d5fb33a313a8b6..2e68d750ebd704f1a62deaa1f7fc4dfc83015275 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -1284,13 +1284,12 @@ static bool IsPrivateVariableName(const String& var_name) {
}
-RawObject* ActivationFrame::Evaluate(const String& expr) {
+RawObject* ActivationFrame::Evaluate(const String& expr,
+ const GrowableObjectArray& param_names,
+ const GrowableObjectArray& param_values) {
GetDescIndices();
- const GrowableObjectArray& param_names =
- GrowableObjectArray::Handle(GrowableObjectArray::New());
- const GrowableObjectArray& param_values =
- GrowableObjectArray::Handle(GrowableObjectArray::New());
String& name = String::Handle();
+ String& existing_name = String::Handle();
Object& value = Instance::Handle();
intptr_t num_variables = desc_indices_.length();
for (intptr_t i = 0; i < num_variables; i++) {
@@ -1300,8 +1299,18 @@ RawObject* ActivationFrame::Evaluate(const String& expr) {
if (IsPrivateVariableName(name)) {
name = String::ScrubName(name);
}
- param_names.Add(name);
- param_values.Add(value);
+ bool conflict = false;
+ for (intptr_t j = 0; j < param_names.Length(); j++) {
+ existing_name ^= param_names.At(j);
+ if (name.Equals(existing_name)) {
+ conflict = true;
+ break;
+ }
+ }
+ if (!conflict) {
+ param_names.Add(name);
+ param_values.Add(value);
+ }
siva 2017/05/18 20:56:48 if there are conflicts what happens do we get an e
rmacnak 2017/05/19 00:56:44 This code says if there is a local 'x' and value i
}
}
@@ -1655,8 +1664,7 @@ void Debugger::Shutdown() {
}
-void Debugger::OnIsolateRunnable() {
-}
+void Debugger::OnIsolateRunnable() {}
static RawFunction* ResolveLibraryFunction(const Library& library,
« no previous file with comments | « runtime/vm/debugger.h ('k') | runtime/vm/debugger_api_impl.cc » ('j') | runtime/vm/service.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698