This is working towards a cell size of 32 bytes, which enables significant performance wins.
Created attachment 14065 [details] 04-js-gc-shrink-propertymap.patch.txt
Comment on attachment 14065 [details] 04-js-gc-shrink-propertymap.patch.txt We should just get rid of m_singleEntryAttributes and allow single entries only when attributes are 0. But that won't save any size. -inline PropertyMap::PropertyMap() : _table(0) +inline PropertyMap::PropertyMap() + : m_singleEntryKey(0) + , m_getterSetterFlag(false) + , m_usingTable(false) + { - _singleEntry.globalGetterSetterFlag = 0; + m_u.table = 0; } Should be 4-character indented. Why are we initializing m_u.table? Otherwise looks good. I read the whole thing.
I fixed the indents and removed initialization of m_u, since it isn't needed unless either m_usingTable is true or m_singleEntryKey is non-NULL.