Index: runtime/vm/debugger.cc |
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc |
index 16bb50f3ad6098f129118f482f0aebba5e0b4d1f..5176eff46ca9f0ecbbd3732c5378c1658c08c984 100644 |
--- a/runtime/vm/debugger.cc |
+++ b/runtime/vm/debugger.cc |
@@ -896,8 +896,9 @@ void ActivationFrame::PrintContextMismatchError( |
void ActivationFrame::VariableAt(intptr_t i, |
String* name, |
- TokenPosition* token_pos, |
- TokenPosition* end_pos, |
+ TokenPosition* declaration_token_pos, |
+ TokenPosition* visible_start_token_pos, |
+ TokenPosition* visible_end_token_pos, |
Object* value) { |
GetDescIndices(); |
ASSERT(i < desc_indices_.length()); |
@@ -908,10 +909,12 @@ void ActivationFrame::VariableAt(intptr_t i, |
RawLocalVarDescriptors::VarInfo var_info; |
var_descriptors_.GetInfo(desc_index, &var_info); |
- ASSERT(token_pos != NULL); |
- *token_pos = var_info.begin_pos; |
- ASSERT(end_pos != NULL); |
- *end_pos = var_info.end_pos; |
+ ASSERT(declaration_token_pos != NULL); |
+ *declaration_token_pos = var_info.declaration_pos; |
+ ASSERT(visible_start_token_pos != NULL); |
+ *visible_start_token_pos = var_info.begin_pos; |
+ ASSERT(visible_end_token_pos != NULL); |
+ *visible_end_token_pos = var_info.end_pos; |
ASSERT(value != NULL); |
const int8_t kind = var_info.kind(); |
if (kind == RawLocalVarDescriptors::kStackVar) { |
@@ -966,7 +969,7 @@ RawArray* ActivationFrame::GetLocalVariables() { |
const Array& list = Array::Handle(Array::New(2 * num_variables)); |
for (intptr_t i = 0; i < num_variables; i++) { |
TokenPosition ignore; |
- VariableAt(i, &var_name, &ignore, &ignore, &value); |
+ VariableAt(i, &var_name, &ignore, &ignore, &ignore, &value); |
list.SetAt(2 * i, var_name); |
list.SetAt((2 * i) + 1, value); |
} |
@@ -981,7 +984,7 @@ RawObject* ActivationFrame::GetReceiver() { |
Instance& value = Instance::Handle(); |
for (intptr_t i = 0; i < num_variables; i++) { |
TokenPosition ignore; |
- VariableAt(i, &var_name, &ignore, &ignore, &value); |
+ VariableAt(i, &var_name, &ignore, &ignore, &ignore, &value); |
if (var_name.Equals(Symbols::This())) { |
return value.raw(); |
} |
@@ -1011,7 +1014,7 @@ RawObject* ActivationFrame::Evaluate(const String& expr) { |
intptr_t num_variables = desc_indices_.length(); |
for (intptr_t i = 0; i < num_variables; i++) { |
TokenPosition ignore; |
- VariableAt(i, &name, &ignore, &ignore, &value); |
+ VariableAt(i, &name, &ignore, &ignore, &ignore, &value); |
if (!name.Equals(Symbols::This()) && !IsSyntheticVariableName(name)) { |
if (IsPrivateVariableName(name)) { |
name = String::ScrubName(name); |
@@ -1087,20 +1090,27 @@ void ActivationFrame::PrintToJSONObject(JSONObject* jsobj, |
for (intptr_t v = 0; v < num_vars; v++) { |
String& var_name = String::Handle(); |
Instance& var_value = Instance::Handle(); |
- TokenPosition token_pos; |
- TokenPosition end_token_pos; |
- VariableAt(v, &var_name, &token_pos, &end_token_pos, &var_value); |
+ TokenPosition declaration_token_pos; |
+ TokenPosition visible_start_token_pos; |
+ TokenPosition visible_end_token_pos; |
+ VariableAt(v, |
+ &var_name, |
+ &declaration_token_pos, |
+ &visible_start_token_pos, |
+ &visible_end_token_pos, |
+ &var_value); |
if (var_name.raw() != Symbols::AsyncOperation().raw()) { |
JSONObject jsvar(&jsvars); |
jsvar.AddProperty("type", "BoundVariable"); |
var_name = String::ScrubName(var_name); |
jsvar.AddProperty("name", var_name.ToCString()); |
jsvar.AddProperty("value", var_value, !full); |
- // TODO(turnidge): Do we really want to provide this on every |
- // stack dump? Should be associated with the function object, I |
- // think, and not the stack frame. |
- jsvar.AddProperty("_tokenPos", token_pos); |
- jsvar.AddProperty("_endTokenPos", end_token_pos); |
+ // Where was the variable declared? |
+ jsvar.AddProperty("declarationTokenPos", declaration_token_pos); |
+ // When the variable becomes visible to the scope. |
+ jsvar.AddProperty("scopeStartTokenPos", visible_start_token_pos); |
+ // When the variable stops being visible to the scope. |
+ jsvar.AddProperty("scopeEndTokenPos", visible_end_token_pos); |
} |
} |
} |