Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index fc57aa879c68111e4158f7db07ebe685c2790110..8f8c59ea8c0f713a476a3e9061a2fd56debb29fc 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -2521,6 +2521,8 @@ HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context, |
i < types->length() && types_.length() < kMaxLoadPolymorphism; |
++i) { |
Handle<Map> map = types->at(i); |
+ // Deprecated maps are updated to the current map in the type oracle. |
+ ASSERT(!map->is_deprecated()); |
LookupResult lookup(map->GetIsolate()); |
map->LookupDescriptor(NULL, *name, &lookup); |
if (lookup.IsFound()) { |
@@ -2532,6 +2534,12 @@ HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context, |
} else { |
SetGVNFlag(kDependsOnBackingStoreFields); |
} |
+ if (FLAG_track_double_fields && |
+ lookup.representation().IsDouble()) { |
+ // Since the value needs to be boxed, use a generic handler for |
+ // loading doubles. |
+ continue; |
+ } |
types_.Add(types->at(i), zone); |
break; |
} |