| Index: src/liveedit.cc | 
| diff --git a/src/liveedit.cc b/src/liveedit.cc | 
| index 22b82501e91f244b7bf16839e30ffb295c51e34d..e670b442b6d5033c4734d307a3cc74c9d094d537 100644 | 
| --- a/src/liveedit.cc | 
| +++ b/src/liveedit.cc | 
| @@ -825,7 +825,8 @@ class FunctionInfoListener { | 
|  | 
| // Saves full information about a function: its code, its scope info | 
| // and a SharedFunctionInfo object. | 
| -  void FunctionInfo(Handle<SharedFunctionInfo> shared, Scope* scope) { | 
| +  void FunctionInfo(Handle<SharedFunctionInfo> shared, Scope* scope, | 
| +                    Zone* zone) { | 
| if (!shared->IsSharedFunctionInfo()) { | 
| return; | 
| } | 
| @@ -836,14 +837,14 @@ class FunctionInfoListener { | 
| Handle<Object>(shared->scope_info())); | 
| info.SetSharedFunctionInfo(shared); | 
|  | 
| -    Handle<Object> scope_info_list(SerializeFunctionScope(scope)); | 
| +    Handle<Object> scope_info_list(SerializeFunctionScope(scope, zone)); | 
| info.SetOuterScopeInfo(scope_info_list); | 
| } | 
|  | 
| Handle<JSArray> GetResult() { return result_; } | 
|  | 
| private: | 
| -  Object* SerializeFunctionScope(Scope* scope) { | 
| +  Object* SerializeFunctionScope(Scope* scope, Zone* zone) { | 
| HandleScope handle_scope; | 
|  | 
| Handle<JSArray> scope_info_list = FACTORY->NewJSArray(10); | 
| @@ -857,8 +858,8 @@ class FunctionInfoListener { | 
| return HEAP->undefined_value(); | 
| } | 
| do { | 
| -      ZoneList<Variable*> stack_list(outer_scope->StackLocalCount()); | 
| -      ZoneList<Variable*> context_list(outer_scope->ContextLocalCount()); | 
| +      ZoneList<Variable*> stack_list(outer_scope->StackLocalCount(), zone); | 
| +      ZoneList<Variable*> context_list(outer_scope->ContextLocalCount(), zone); | 
| outer_scope->CollectStackAndContextLocals(&stack_list, &context_list); | 
| context_list.Sort(&Variable::CompareIndex); | 
|  | 
| @@ -927,28 +928,32 @@ void LiveEdit::WrapSharedFunctionInfos(Handle<JSArray> array) { | 
| // It works in context of ZoneScope. | 
| class ReferenceCollectorVisitor : public ObjectVisitor { | 
| public: | 
| -  explicit ReferenceCollectorVisitor(Code* original) | 
| -    : original_(original), rvalues_(10), reloc_infos_(10), code_entries_(10) { | 
| +  ReferenceCollectorVisitor(Code* original, Zone* zone) | 
| +      : original_(original), | 
| +        rvalues_(10, zone), | 
| +        reloc_infos_(10, zone), | 
| +        code_entries_(10, zone), | 
| +        zone_(zone) { | 
| } | 
|  | 
| virtual void VisitPointers(Object** start, Object** end) { | 
| for (Object** p = start; p < end; p++) { | 
| if (*p == original_) { | 
| -        rvalues_.Add(p); | 
| +        rvalues_.Add(p, zone_); | 
| } | 
| } | 
| } | 
|  | 
| virtual void VisitCodeEntry(Address entry) { | 
| if (Code::GetObjectFromEntryAddress(entry) == original_) { | 
| -      code_entries_.Add(entry); | 
| +      code_entries_.Add(entry, zone_); | 
| } | 
| } | 
|  | 
| virtual void VisitCodeTarget(RelocInfo* rinfo) { | 
| if (RelocInfo::IsCodeTarget(rinfo->rmode()) && | 
| Code::GetCodeFromTargetAddress(rinfo->target_address()) == original_) { | 
| -      reloc_infos_.Add(*rinfo); | 
| +      reloc_infos_.Add(*rinfo, zone_); | 
| } | 
| } | 
|  | 
| @@ -977,6 +982,7 @@ class ReferenceCollectorVisitor : public ObjectVisitor { | 
| ZoneList<Object**> rvalues_; | 
| ZoneList<RelocInfo> reloc_infos_; | 
| ZoneList<Address> code_entries_; | 
| +  Zone* zone_; | 
| }; | 
|  | 
|  | 
| @@ -990,7 +996,7 @@ static void ReplaceCodeObject(Code* original, Code* substitution) { | 
| // A zone scope for ReferenceCollectorVisitor. | 
| ZoneScope scope(Isolate::Current(), DELETE_ON_EXIT); | 
|  | 
| -  ReferenceCollectorVisitor visitor(original); | 
| +  ReferenceCollectorVisitor visitor(original, Isolate::Current()->zone()); | 
|  | 
| // Iterate over all roots. Stack frames may have pointer into original code, | 
| // so temporary replace the pointers with offset numbers | 
| @@ -1592,11 +1598,12 @@ static bool IsDropableFrame(StackFrame* frame) { | 
| // Fills result array with statuses of functions. Modifies the stack | 
| // removing all listed function if possible and if do_drop is true. | 
| static const char* DropActivationsInActiveThread( | 
| -    Handle<JSArray> shared_info_array, Handle<JSArray> result, bool do_drop) { | 
| +    Handle<JSArray> shared_info_array, Handle<JSArray> result, bool do_drop, | 
| +    Zone* zone) { | 
| Isolate* isolate = Isolate::Current(); | 
| Debug* debug = isolate->debug(); | 
| ZoneScope scope(isolate, DELETE_ON_EXIT); | 
| -  Vector<StackFrame*> frames = CreateStackMap(); | 
| +  Vector<StackFrame*> frames = CreateStackMap(zone); | 
|  | 
| int array_len = Smi::cast(shared_info_array->length())->value(); | 
|  | 
| @@ -1723,7 +1730,7 @@ class InactiveThreadActivationsChecker : public ThreadVisitor { | 
|  | 
|  | 
| Handle<JSArray> LiveEdit::CheckAndDropActivations( | 
| -    Handle<JSArray> shared_info_array, bool do_drop) { | 
| +    Handle<JSArray> shared_info_array, bool do_drop, Zone* zone) { | 
| int len = Smi::cast(shared_info_array->length())->value(); | 
|  | 
| Handle<JSArray> result = FACTORY->NewJSArray(len); | 
| @@ -1748,7 +1755,7 @@ Handle<JSArray> LiveEdit::CheckAndDropActivations( | 
|  | 
| // Try to drop activations from the current stack. | 
| const char* error_message = | 
| -      DropActivationsInActiveThread(shared_info_array, result, do_drop); | 
| +      DropActivationsInActiveThread(shared_info_array, result, do_drop, zone); | 
| if (error_message != NULL) { | 
| // Add error message as an array extra element. | 
| Vector<const char> vector_message(error_message, StrLength(error_message)); | 
| @@ -1776,9 +1783,11 @@ LiveEditFunctionTracker::~LiveEditFunctionTracker() { | 
|  | 
|  | 
| void LiveEditFunctionTracker::RecordFunctionInfo( | 
| -    Handle<SharedFunctionInfo> info, FunctionLiteral* lit) { | 
| +    Handle<SharedFunctionInfo> info, FunctionLiteral* lit, | 
| +    Zone* zone) { | 
| if (isolate_->active_function_info_listener() != NULL) { | 
| -    isolate_->active_function_info_listener()->FunctionInfo(info, lit->scope()); | 
| +    isolate_->active_function_info_listener()->FunctionInfo(info, lit->scope(), | 
| +                                                            zone); | 
| } | 
| } | 
|  | 
|  |