You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[MERGE #5299@pleath] OS#17729736: Don't cache missing properties for objects with DictionaryTypeHandler's
Merge pull request #5299 from pleath:17729736
This may leave stale isMissing elements in the TypePropertyCache after the property has been added to the prototype chain.
// Only cache missing property lookups for non-root field loads on objects that have PathTypeHandlers and DictionaryTypeHandlers, because only these types have the right behavior
1810
-
// when the missing property is later added: path types guarantee a type change, and DictionaryTypeHandlerBase::AddProperty explicitly invalidates all prototype caches for the
1811
-
// property. (We don't support other types only because we haven't needed to yet; we do not anticipate any difficulties in adding the cache-invalidation logic there if that changes.)
1812
-
if (!handler->IsPathTypeHandler() && !handler->IsDictionaryTypeHandler())
1809
+
// Only cache missing property lookups for non-root field loads on objects that have PathTypeHandlers, because only these types have the right behavior
1810
+
// when the missing property is later added. DictionaryTypeHandler's introduce the possibility that a stale TypePropertyCache entry with isMissing==true can
1811
+
// be left in the cache after the property has been installed in the object's prototype chain. Other changes to optimize accesses to objects that don't
1812
+
// override special symbols make it unnecessary to introduce an invalidation scheme to deal with DictionaryTypeHandler's.
0 commit comments