Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index fca1e1c1ca8abc821566f8e697fd591c7705e098..103a3086651552a101ddc678c0537cc48622592e 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -2386,14 +2386,18 @@ Handle<JSWeakMap> Factory::NewJSWeakMap() { |
Handle<Map> Factory::ObjectLiteralMapFromCache(Handle<Context> context, |
int number_of_properties, |
+ bool is_strong, |
bool* is_result_from_cache) { |
const int kMapCacheSize = 128; |
// We do not cache maps for too many properties or when running builtin code. |
- if (number_of_properties > kMapCacheSize || |
+ // TODO(rossberg): cache strong maps properly |
+ if (number_of_properties > kMapCacheSize || is_strong || |
isolate()->bootstrapper()->IsActive()) { |
*is_result_from_cache = false; |
- return Map::Create(isolate(), number_of_properties); |
+ Handle<Map> map = Map::Create(isolate(), number_of_properties); |
+ if (is_strong) map->set_is_strong(true); |
+ return map; |
} |
*is_result_from_cache = true; |
if (number_of_properties == 0) { |