| Index: src/heap.cc
|
| diff --git a/src/heap.cc b/src/heap.cc
|
| index 9e877ab1582f08b5f7e3b8b4c9c64a3a44f42ca9..ac0023b60249986e1568740ea42a67ee02ea6a6a 100644
|
| --- a/src/heap.cc
|
| +++ b/src/heap.cc
|
| @@ -753,6 +753,7 @@ int Heap::NotifyContextDisposed() {
|
| isolate()->optimizing_compiler_thread()->Flush();
|
| }
|
| flush_monomorphic_ics_ = true;
|
| + AgeInlineCaches();
|
| return ++contexts_disposed_;
|
| }
|
|
|
| @@ -1150,8 +1151,6 @@ void Heap::MarkCompact(GCTracer* tracer) {
|
|
|
| isolate_->counters()->objs_since_last_full()->Set(0);
|
|
|
| - contexts_disposed_ = 0;
|
| -
|
| flush_monomorphic_ics_ = false;
|
| }
|
|
|
| @@ -5728,12 +5727,7 @@ bool Heap::IdleNotification(int hint) {
|
| size_factor * IncrementalMarking::kAllocatedThreshold;
|
|
|
| if (contexts_disposed_ > 0) {
|
| - if (hint >= kMaxHint) {
|
| - // The embedder is requesting a lot of GC work after context disposal,
|
| - // we age inline caches so that they don't keep objects from
|
| - // the old context alive.
|
| - AgeInlineCaches();
|
| - }
|
| + contexts_disposed_ = 0;
|
| int mark_sweep_time = Min(TimeMarkSweepWouldTakeInMs(), 1000);
|
| if (hint >= mark_sweep_time && !FLAG_expose_gc &&
|
| incremental_marking()->IsStopped()) {
|
| @@ -5742,8 +5736,8 @@ bool Heap::IdleNotification(int hint) {
|
| "idle notification: contexts disposed");
|
| } else {
|
| AdvanceIdleIncrementalMarking(step_size);
|
| - contexts_disposed_ = 0;
|
| }
|
| +
|
| // After context disposal there is likely a lot of garbage remaining, reset
|
| // the idle notification counters in order to trigger more incremental GCs
|
| // on subsequent idle notifications.
|
|
|