Reviewers: , Description: Prevent modification of cached normalized maps.
Finally sovles the problem that r5342 attempted to solve. When adding a stub to a map's code cache we need to make sure that this map is not used by object that do not need this stub. Existing solution had 2 flaws: 1. It checked that the map is cached by asking the current context. If the object escaped into another context then NormalizedMapCache::Contains returns false negative. 2. If a map gets evicted from the cache we should not try to modify it even though Contains returns false. This patch implements much less fragile solution of the same problem: A map now has a flag (is_shared) that is set once the map is added to a cache, stays set even after the cache eviction, and is cleared if the object goes back to fast mode. Added a regression test. Please review this at http://codereview.chromium.org/3472006/show SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/objects-debug.cc M src/objects-inl.h M src/objects.h M src/objects.cc M test/cctest/test-api.cc -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
