Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index e966e5ca949324294a70e7b4f3acc568790e0754..06373d2d8a39f62c0f98db6fd4978270f486f350 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -2339,14 +2339,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) { |