Index: src/stub-cache.cc |
=================================================================== |
--- src/stub-cache.cc (revision 10254) |
+++ src/stub-cache.cc (working copy) |
@@ -877,7 +877,8 @@ |
void StubCache::CollectMatchingMaps(SmallMapList* types, |
String* name, |
- Code::Flags flags) { |
+ Code::Flags flags, |
+ Handle<Context> global_context) { |
for (int i = 0; i < kPrimaryTableSize; i++) { |
if (primary_[i].key == name) { |
Map* map = primary_[i].value->FindFirstMap(); |
@@ -886,7 +887,8 @@ |
if (map == NULL) continue; |
int offset = PrimaryOffset(name, flags, map); |
- if (entry(primary_, offset) == &primary_[i]) { |
+ if (entry(primary_, offset) == &primary_[i] && |
+ !TypeFeedbackOracle::CanRetainOtherContext(map, *global_context)) { |
types->Add(Handle<Map>(map)); |
} |
} |
@@ -909,7 +911,8 @@ |
// Lookup in secondary table and add matches. |
int offset = SecondaryOffset(name, flags, primary_offset); |
- if (entry(secondary_, offset) == &secondary_[i]) { |
+ if (entry(secondary_, offset) == &secondary_[i] && |
+ !TypeFeedbackOracle::CanRetainOtherContext(map, *global_context)) { |
types->Add(Handle<Map>(map)); |
} |
} |