From 3888b2fe0cf334735f19b2e6b4c59ec16fb4b1ba Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Thu, 5 Jun 2014 08:56:38 +0000 Subject: [PATCH] Do not make heap iterable eagerly. R=jarin@chromium.org BUG=379740 LOG=Y Review URL: https://codereview.chromium.org/318863004 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21691 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/heap.h | 17 +++++++++-------- src/liveedit.cc | 4 ---- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/heap.h b/src/heap.h index 6972ca7f98..ccf212b4ed 100644 --- a/src/heap.h +++ b/src/heap.h @@ -764,10 +764,6 @@ class Heap { // Check whether the heap is currently iterable. bool IsHeapIterable(); - // Ensure that we have swept all spaces in such a way that we can iterate - // over all objects. May cause a GC. - void MakeHeapIterable(); - // Notify the heap that a context has been disposed. int NotifyContextDisposed(); @@ -1707,6 +1703,10 @@ class Heap { // with the allocation memento of the object at the top void EnsureFillerObjectAtTop(); + // Ensure that we have swept all spaces in such a way that we can iterate + // over all objects. May cause a GC. + void MakeHeapIterable(); + // Performs garbage collection operation. // Returns whether there is a chance that another major GC could // collect more garbage. @@ -2171,10 +2171,11 @@ class Heap { int gc_callbacks_depth_; - friend class Factory; - friend class GCTracer; friend class AlwaysAllocateScope; - friend class Page; + friend class Factory; + friend class GCCallbacksScope; + friend class GCTracer; + friend class HeapIterator; friend class Isolate; friend class MarkCompactCollector; friend class MarkCompactMarkingVisitor; @@ -2182,7 +2183,7 @@ class Heap { #ifdef VERIFY_HEAP friend class NoWeakObjectVerificationScope; #endif - friend class GCCallbacksScope; + friend class Page; DISALLOW_COPY_AND_ASSIGN(Heap); }; diff --git a/src/liveedit.cc b/src/liveedit.cc index bbec278981..d802d0dd9d 100644 --- a/src/liveedit.cc +++ b/src/liveedit.cc @@ -1188,8 +1188,6 @@ void LiveEdit::ReplaceFunctionCode( Handle shared_info = shared_info_wrapper.GetInfo(); - isolate->heap()->MakeHeapIterable(); - if (IsJSFunctionCode(shared_info->code())) { Handle code = compile_info_wrapper.GetFunctionCode(); ReplaceCodeObject(Handle(shared_info->code()), code); @@ -1425,8 +1423,6 @@ void LiveEdit::PatchFunctionPositions(Handle shared_info_array, info->set_end_position(new_function_end); info->set_function_token_position(new_function_token_pos); - info->GetIsolate()->heap()->MakeHeapIterable(); - if (IsJSFunctionCode(info->code())) { // Patch relocation info section of the code. Handle patched_code = PatchPositionsInCode(Handle(info->code()),