Index: src/heap.cc |
diff --git a/src/heap.cc b/src/heap.cc |
index 38a5dee04d104768e8c6ec26cb65287497884029..7b9f0d5235d9ab58bc0e158fe31f732afb26a5b1 100644 |
--- a/src/heap.cc |
+++ b/src/heap.cc |
@@ -608,6 +608,11 @@ void Heap::CollectAllAvailableGarbage(const char* gc_reason) { |
// Note: as weak callbacks can execute arbitrary code, we cannot |
// hope that eventually there will be no weak callbacks invocations. |
// Therefore stop recollecting after several attempts. |
+ if (FLAG_concurrent_recompilation) { |
+ // The optimizing compiler may be unnecessarily holding on to memory. |
+ DisallowHeapAllocation no_recursive_gc; |
+ isolate()->optimizing_compiler_thread()->Flush(); |
+ } |
mark_compact_collector()->SetFlags(kMakeHeapIterableMask | |
kReduceMemoryFootprintMask); |
isolate_->compilation_cache()->Clear(); |