From: hpayer Date: Fri, 9 Jan 2015 12:54:07 +0000 (-0800) Subject: Try to reduce memory footprint when we run out of memory in Deserializer. X-Git-Tag: upstream/4.7.83~5030 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b1bcf6667d5a9cd1b5da565ede8e678c6a16cf2a;p=platform%2Fupstream%2Fv8.git Try to reduce memory footprint when we run out of memory in Deserializer. BUG=403113 LOG=n Review URL: https://codereview.chromium.org/831893003 Cr-Commit-Position: refs/heads/master@{#26010} --- diff --git a/src/heap/heap.cc b/src/heap/heap.cc index 0b817e4..a49806f 100644 --- a/src/heap/heap.cc +++ b/src/heap/heap.cc @@ -922,15 +922,6 @@ static void VerifyStringTable(Heap* heap) { #endif // VERIFY_HEAP -static bool AbortIncrementalMarkingAndCollectGarbage( - Heap* heap, AllocationSpace space, const char* gc_reason = NULL) { - heap->mark_compact_collector()->SetFlags(Heap::kAbortIncrementalMarkingMask); - bool result = heap->CollectGarbage(space, gc_reason); - heap->mark_compact_collector()->SetFlags(Heap::kNoGCFlags); - return result; -} - - bool Heap::ReserveSpace(Reservation* reservations) { bool gc_performed = true; int counter = 0; @@ -972,12 +963,18 @@ bool Heap::ReserveSpace(Reservation* reservations) { } if (perform_gc) { if (space == NEW_SPACE) { - Heap::CollectGarbage(NEW_SPACE, - "failed to reserve space in the new space"); + CollectGarbage(NEW_SPACE, "failed to reserve space in the new space"); } else { - AbortIncrementalMarkingAndCollectGarbage( - this, static_cast(space), - "failed to reserve space in paged or large object space"); + if (counter > 1) { + CollectAllGarbage( + kReduceMemoryFootprintMask, + "failed to reserve space in paged or large " + "object space, trying to reduce memory footprint"); + } else { + CollectAllGarbage( + kAbortIncrementalMarkingMask, + "failed to reserve space in paged or large object space"); + } } gc_performed = true; break; // Abort for-loop over spaces and retry.