From c7b91cd4940b391f3a85cdada51277bc7aab35ca Mon Sep 17 00:00:00 2001 From: "verwaest@chromium.org" Date: Fri, 31 Jan 2014 11:38:43 +0000 Subject: [PATCH] Don't unmark dictionary mode maps as unstable. R=ulan@chromium.org BUG= Review URL: https://codereview.chromium.org/148493007 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18983 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/objects-inl.h | 5 +++-- src/objects.cc | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/objects-inl.h b/src/objects-inl.h index 1ea9441..9ac2d6b 100644 --- a/src/objects-inl.h +++ b/src/objects-inl.h @@ -3988,8 +3988,9 @@ bool Map::is_shared() { void Map::set_dictionary_map(bool value) { - if (value) mark_unstable(); - set_bit_field3(DictionaryMap::update(bit_field3(), value)); + uint32_t new_bit_field3 = DictionaryMap::update(bit_field3(), value); + new_bit_field3 = IsUnstable::update(new_bit_field3, value); + set_bit_field3(new_bit_field3); } diff --git a/src/objects.cc b/src/objects.cc index fe791f3..246557b 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -6682,7 +6682,9 @@ MaybeObject* Map::RawCopy(int instance_size) { new_bit_field3 = EnumLengthBits::update(new_bit_field3, kInvalidEnumCacheSentinel); new_bit_field3 = Deprecated::update(new_bit_field3, false); - new_bit_field3 = IsUnstable::update(new_bit_field3, false); + if (!is_dictionary_map()) { + new_bit_field3 = IsUnstable::update(new_bit_field3, false); + } result->set_bit_field3(new_bit_field3); return result; } -- 2.7.4