| 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) {
 | 
| 
 |