Reviewers: Hannes Payer,

Description:
Fix incremental marking of native context when bootstrapping.

This should fix one of the arm64 build breaks - we have tried to mark
half-initialized native context there, but the normalized_map_cache
entry was still undefined.

[email protected]
BUG=

Please review this at https://codereview.chromium.org/284633002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+8, -3 lines):
  M src/incremental-marking.cc


Index: src/incremental-marking.cc
diff --git a/src/incremental-marking.cc b/src/incremental-marking.cc
index 0cf6a9e1dc68fa55bbcdebcd420b1dda0725a442..2ae4dd5403c883f237c3b69b80bc9047d0239793 100644
--- a/src/incremental-marking.cc
+++ b/src/incremental-marking.cc
@@ -222,9 +222,14 @@ class IncrementalMarkingMarkingVisitor
   static void VisitNativeContextIncremental(Map* map, HeapObject* object) {
     Context* context = Context::cast(object);

-    // We will mark cache black with a separate pass
-    // when we finish marking.
-    MarkObjectGreyDoNotEnqueue(context->normalized_map_cache());
+ // We will mark cache black with a separate pass when we finish marking.
+    // Note that GC can happen when the context is not fully initialized,
+    // so the cache can be undefined.
+    Object* cache =
+        Context::cast(context)->get(Context::NORMALIZED_MAP_CACHE_INDEX);
+    if (!cache->IsUndefined()) {
+      MarkObjectGreyDoNotEnqueue(NormalizedMapCache::cast(cache));
+    }
     VisitNativeContext(map, context);
   }



--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to