Chromium Code Reviews| Index: src/runtime/runtime-debug.cc | 
| diff --git a/src/runtime/runtime-debug.cc b/src/runtime/runtime-debug.cc | 
| index 9db7b7f0f1ccce5bf707d01b6670e9ed31cce644..4da0ef9c6440e82446d6ac754774f9782aa60a5f 100644 | 
| --- a/src/runtime/runtime-debug.cc | 
| +++ b/src/runtime/runtime-debug.cc | 
| @@ -612,16 +612,13 @@ RUNTIME_FUNCTION(Runtime_GetFrameDetails) { | 
| } | 
| } | 
| - Handle<FixedArray> locals = | 
| - isolate->factory()->NewFixedArray(local_count * 2); | 
| - | 
| + List<Handle<Object> > locals; | 
| 
 
jgruber
2016/07/11 13:59:48
Nit: We could use C++11 style List<Handle<Object>>
 
 | 
| // Fill in the values of the locals. | 
| - int local = 0; | 
| int i = 0; | 
| for (; i < scope_info->StackLocalCount(); ++i) { | 
| // Use the value from the stack. | 
| if (ScopeInfo::VariableIsSynthetic(scope_info->LocalName(i))) continue; | 
| - locals->set(local * 2, scope_info->LocalName(i)); | 
| + locals.Add(Handle<String>(scope_info->LocalName(i), isolate)); | 
| Handle<Object> value = | 
| frame_inspector.GetExpression(scope_info->StackLocalIndex(i)); | 
| // TODO(yangguo): We convert optimized out values to {undefined} when they | 
| @@ -629,10 +626,9 @@ RUNTIME_FUNCTION(Runtime_GetFrameDetails) { | 
| if (value->IsOptimizedOut(isolate)) { | 
| value = isolate->factory()->undefined_value(); | 
| } | 
| - locals->set(local * 2 + 1, *value); | 
| - local++; | 
| + locals.Add(value); | 
| } | 
| - if (local < local_count) { | 
| + if (locals.length() < local_count * 2) { | 
| // Get the context containing declarations. | 
| Handle<Context> context( | 
| Handle<Context>::cast(frame_inspector.GetContext())->closure_context()); | 
| @@ -642,12 +638,11 @@ RUNTIME_FUNCTION(Runtime_GetFrameDetails) { | 
| VariableMode mode; | 
| InitializationFlag init_flag; | 
| MaybeAssignedFlag maybe_assigned_flag; | 
| - locals->set(local * 2, *name); | 
| + locals.Add(name); | 
| int context_slot_index = ScopeInfo::ContextSlotIndex( | 
| scope_info, name, &mode, &init_flag, &maybe_assigned_flag); | 
| Object* value = context->get(context_slot_index); | 
| - locals->set(local * 2 + 1, value); | 
| - local++; | 
| + locals.Add(Handle<Object>(value, isolate)); | 
| } | 
| } | 
| @@ -753,9 +748,7 @@ RUNTIME_FUNCTION(Runtime_GetFrameDetails) { | 
| } | 
| // Add locals name and value from the temporary copy from the function frame. | 
| - for (int i = 0; i < local_count * 2; i++) { | 
| - details->set(details_index++, locals->get(i)); | 
| - } | 
| + for (const auto& local : locals) details->set(details_index++, *local); | 
| // Add the value being returned. | 
| if (at_return) { |