Index: src/heap.cc |
diff --git a/src/heap.cc b/src/heap.cc |
index c2a2707602e88eb60d3d7db3921796d66f0ef3aa..365e9c68062a0c162194a5fbc5fe1763738f2462 100644 |
--- a/src/heap.cc |
+++ b/src/heap.cc |
@@ -1014,6 +1014,8 @@ bool Heap::PerformGarbageCollection(GarbageCollector collector, |
} |
gc_post_processing_depth_--; |
+ isolate_->eternal_handles()->PostGarbageCollectionProcessing(this); |
+ |
// Update relocatables. |
Relocatable::PostGarbageCollectionProcessing(); |
@@ -3218,9 +3220,6 @@ bool Heap::CreateInitialObjects() { |
} |
set_observed_symbol(Symbol::cast(obj)); |
- set_i18n_template_one(the_hole_value()); |
- set_i18n_template_two(the_hole_value()); |
- |
// Handling of script id generation is in Factory::NewScript. |
set_last_script_id(Smi::FromInt(v8::Script::kNoScriptId)); |
@@ -6608,6 +6607,14 @@ void Heap::IterateStrongRoots(ObjectVisitor* v, VisitMode mode) { |
} |
v->Synchronize(VisitorSynchronization::kGlobalHandles); |
+ // Iterate over eternal handles. |
+ if (mode == VISIT_ALL_IN_SCAVENGE) { |
+ isolate_->eternal_handles()->IterateNewSpaceRoots(v); |
+ } else { |
+ isolate_->eternal_handles()->IterateAllRoots(v); |
+ } |
+ v->Synchronize(VisitorSynchronization::kEternalHandles); |
+ |
// Iterate over pointers being held by inactive threads. |
isolate_->thread_manager()->Iterate(v); |
v->Synchronize(VisitorSynchronization::kThreadManager); |