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