| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index b01c49d2b4fcb66b8f949b622e1c9ea1d1c0d2f5..d348dc07bacccd4ece13ec577eaa988a5ee33961 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -2079,23 +2079,12 @@ bool JSObject::HasFastProperties() {
|
| }
|
|
|
|
|
| -bool JSObject::TooManyFastProperties(StoreFromKeyed store_mode) {
|
| - // Allow extra fast properties if the object has more than
|
| - // kFastPropertiesSoftLimit in-object properties. When this is the case, it is
|
| - // very unlikely that the object is being used as a dictionary and there is a
|
| - // good chance that allowing more map transitions will be worth it.
|
| - Map* map = this->map();
|
| - if (map->unused_property_fields() != 0) return false;
|
| -
|
| - int inobject = map->inobject_properties();
|
| -
|
| - int limit;
|
| - if (store_mode == CERTAINLY_NOT_STORE_FROM_KEYED) {
|
| - limit = Max(inobject, kMaxFastProperties);
|
| - } else {
|
| - limit = Max(inobject, kFastPropertiesSoftLimit);
|
| - }
|
| - return properties()->length() > limit;
|
| +bool Map::TooManyFastProperties(StoreFromKeyed store_mode) {
|
| + if (unused_property_fields() != 0) return false;
|
| + int minimum = store_mode == CERTAINLY_NOT_STORE_FROM_KEYED ? 128 : 12;
|
| + int limit = Max(minimum, inobject_properties());
|
| + int external = NumberOfFields() - inobject_properties();
|
| + return external > limit;
|
| }
|
|
|
|
|
|
|