Fix for buildbot failure after r19102.
authorishell@chromium.org <ishell@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 5 Feb 2014 15:22:54 +0000 (15:22 +0000)
committerishell@chromium.org <ishell@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 5 Feb 2014 15:22:54 +0000 (15:22 +0000)
R=verwaest@chromium.org

Review URL: https://codereview.chromium.org/149093011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19105 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/hydrogen-check-elimination.cc
src/hydrogen-instructions.h

index 21bf6c9..e393234 100644 (file)
@@ -285,7 +285,8 @@ class HCheckTable : public ZoneObject {
           HGraph* graph = instr->block()->graph();
           HCheckMaps* new_check_maps =
               HCheckMaps::New(graph->zone(), NULL, instr->value(),
-                              intersection, instr->typecheck());
+                              intersection, instr->typecheck(),
+                              instr->has_migration_target());
           if (entry->check_ != NULL &&
               entry->check_->block() == instr->block()) {
             // There is a check in the same block so replace it with a more
index 6e24790..c351687 100644 (file)
@@ -2647,22 +2647,29 @@ class HCheckMaps V8_FINAL : public HTemplateInstruction<2> {
  public:
   static HCheckMaps* New(Zone* zone, HValue* context, HValue* value,
                          Handle<Map> map, CompilationInfo* info,
-                         HValue *typecheck = NULL);
+                         HValuetypecheck = NULL);
   static HCheckMaps* New(Zone* zone, HValue* context,
                          HValue* value, SmallMapList* maps,
-                         HValue *typecheck = NULL) {
+                         HValuetypecheck = NULL) {
     HCheckMaps* check_map = new(zone) HCheckMaps(value, zone, typecheck);
     for (int i = 0; i < maps->length(); i++) {
       check_map->Add(maps->at(i), zone);
     }
     return check_map;
   }
+  // HCheckMaps creation method safe for using during concurrent compilation
+  // (does not dereference maps handles).
   static HCheckMaps* New(Zone* zone, HValue* context,
                          HValue* value, UniqueSet<Map>* maps,
-                         HValue *typecheck = NULL) {
+                         HValue* typecheck,
+                         bool has_migration_target) {
     HCheckMaps* check_map = new(zone) HCheckMaps(value, zone, typecheck);
     for (int i = 0; i < maps->size(); i++) {
-      check_map->Add(maps->at(i).handle(), zone);
+      check_map->map_set_.Add(maps->at(i), zone);
+    }
+    if (has_migration_target) {
+      check_map->has_migration_target_ = true;
+      check_map->SetGVNFlag(kChangesNewSpacePromotion);
     }
     return check_map;
   }