Bug 20989

Summary: Aguments constructor should put 'callee' and 'length' properties in a more efficient way
Product: WebKit Reporter: Cameron Zwarich (cpst) <zwarich>
Component: JavaScriptCoreAssignee: Cameron Zwarich (cpst) <zwarich>
Status: RESOLVED FIXED    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 20813    
Attachments:
Description Flags
Proposed patch oliver: review+

Description Cameron Zwarich (cpst) 2008-09-22 03:56:21 PDT
Currently the Arguments constructor uses putDirect() to put both of these properties. A Shark profile on my system says that this is 5.6% of total time in the V8 Raytrace benchmark, which suggests that we should find a better way to add these properties.
Comment 1 Cameron Zwarich (cpst) 2008-09-23 03:00:38 PDT
Created attachment 23699 [details]
Proposed patch
Comment 2 Oliver Hunt 2008-09-23 03:10:15 PDT
Comment on attachment 23699 [details]
Proposed patch

r=me

I wonder if overrodeLength/overrodeCallee being bitfields is "expensive" -- did you try without?

Also if you're trying to reduce size it might be worth seeing if you can drop one of the other fields to 30 bits and so merge the bitfields.
Comment 3 Cameron Zwarich (cpst) 2008-09-23 04:02:32 PDT
Landed in r36804.

Using bitfields rather than booleans doesn't seem to affect speed (in fact, using bitfields rather than nothing at all didn't seem to affect speed), and I didn't want to merge the bitfields with any integer arguments because they are used fairly often. I can still try it out later, though.