Bug 20812
| Summary: | MASTER: Function call overhead is taking a lot of time on v8's benchmarks | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Maciej Stachowiak <mjs> |
| Component: | JavaScriptCore | Assignee: | Geoffrey Garen <ggaren> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | barraclough, zwarich |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | Mac | ||
| OS: | OS X 10.5 | ||
| Bug Depends on: | 21295, 21296, 21317, 21319, 21364, 21396, 21541, 21583, 21584 | ||
| Bug Blocks: | 20813 | ||
Maciej Stachowiak
Many of v8's individual benchmark tests spend a lot of time in function call overhead, including cti_op_call_JSFunction, cti_op_ret, and getCallData. It is the top issue on the Richards, DeltaBlue, and EarleyBoyer test cases.There is also some effect on Crypto and Raytrace. Shark profiles to come.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Maciej Stachowiak
See bug 20813 for Shark profiles of individual v8 tests.
Note: this should probably be broken down into separate bugs for separate tasks.
Cameron Zwarich (cpst)
Replacing ExecState with a call frame Register pointer is bug 21295.
Cameron Zwarich (cpst)
Removing profiling hooks when not profiling is bug 21296.
Cameron Zwarich (cpst)
Moving toThisObject() conversion to the callee is bug 21297.
Cameron Zwarich (cpst)
Replacing the RegisterFile size and capacity information with Register pointers is bug 21317.
Cameron Zwarich (cpst)
Avoiding restoring the caller's 'r' value in op_ret is bug 21319.
Cameron Zwarich (cpst)
Removing the branch in op_ret for OptionalCalleeActivation and OptionalCalleeArguments is bug 21364.
Cameron Zwarich (cpst)
Removing the OptionalCalleeActivation call frame slot is bug 21396.
Cameron Zwarich (cpst)
Removing the branches for CodeBlock and CTI code in function call logic is bug 21583.
Gavin Barraclough
All dependencies closed, making fixed.