| Index: src/heap.cc
|
| diff --git a/src/heap.cc b/src/heap.cc
|
| index fc9086655201b970f92a4a01911be013eb23d9a7..b037efd80450e1df3aae746d286eb9068b4e4b39 100644
|
| --- a/src/heap.cc
|
| +++ b/src/heap.cc
|
| @@ -581,25 +581,22 @@ void Heap::EnsureFromSpaceIsCommitted() {
|
| }
|
|
|
|
|
| -class ClearThreadJSFunctionResultCachesVisitor: public ThreadVisitor {
|
| - virtual void VisitThread(ThreadLocalTop* top) {
|
| - Context* context = top->context_;
|
| - if (context == NULL) return;
|
| +void Heap::ClearJSFunctionResultCaches() {
|
| + if (Bootstrapper::IsActive()) return;
|
|
|
| + Object* context = global_contexts_list_;
|
| + while (!context->IsUndefined()) {
|
| + // Get the caches for this context:
|
| FixedArray* caches =
|
| - context->global()->global_context()->jsfunction_result_caches();
|
| + Context::cast(context)->jsfunction_result_caches();
|
| + // Clear the caches:
|
| int length = caches->length();
|
| for (int i = 0; i < length; i++) {
|
| JSFunctionResultCache::cast(caches->get(i))->Clear();
|
| }
|
| + // Get the next context:
|
| + context = Context::cast(context)->get(Context::NEXT_CONTEXT_LINK);
|
| }
|
| -};
|
| -
|
| -
|
| -void Heap::ClearJSFunctionResultCaches() {
|
| - if (Bootstrapper::IsActive()) return;
|
| - ClearThreadJSFunctionResultCachesVisitor visitor;
|
| - ThreadManager::IterateArchivedThreads(&visitor);
|
| }
|
|
|
|
|
|
|