[Webkit-unassigned] [Bug 6083] REGRESSION: 5-10% performance regression on JS iBench from getter/setter change

bugzilla-daemon at opendarwin.org bugzilla-daemon at opendarwin.org
Fri Dec 16 08:36:28 PST 2005


darin at apple.com changed:

           What    |Removed                     |Added
                 CC|                            |andersca at mac.com
           Priority|P2                          |P1

------- Additional Comments From darin at apple.com  2005-12-16 08:36 -------
I can't believe I didn't notice the use of the virtual function type() in the very hot get function.

One possibility is setting a special bit pattern in the low two bits of the GetterSetterImp* ala the 
01 tag mask used in SimpleNumber. Then you can check if a property value is a GetterSetterImp* 
without dispatching to type().

Unfortunately, that might slow down garbage collection since the mark function in the property 
map would have to know about this convention.

Another possibility is to not have the GetterSetterImp be garbage collected at all, since they are 
uniquely owned by a particular property slot in a property hash table. So we can teach the 
property hash table about some special pointer convention and give them sole ownership.

I think with this suggested design we'd have only a single mask and branch in the hot 
getOwnPropertySlot function so we'd probably be "back in business".

Configure bugmail: http://bugzilla.opendarwin.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

More information about the webkit-unassigned mailing list