Bug 86438
| Summary: | FunctionParameters waste a lot of Vector capacity | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Simon Fraser (smfr) <simon.fraser> |
| Component: | JavaScriptCore | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | barraclough, fpizlo, ggaren, msaboff, oliver, simon.fraser, slewis |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Bug Depends on: | |||
| Bug Blocks: | 86281 | ||
Simon Fraser (smfr)
Data collected via bug 86281 show that a lot of vector capacity is wasted via the Vector allocated here:
6369 vectors, 60.39KB used of 546.38KB, 485.98KB wasted at:
1 0x10696fa45 WTF::Vector<JSC::Identifier, 0ul>::Vector()
2 0x106bb9ee0 JSC::FunctionParameters::FunctionParameters(JSC::ParameterNode*)
3 0x106bb9ead JSC::FunctionParameters::FunctionParameters(JSC::ParameterNode*)
4 0x106bbac59 JSC::FunctionParameters::create(JSC::ParameterNode*)
5 0x106bb9f84 JSC::FunctionBodyNode::finishParsing(JSC::SourceCode const&, JSC::ParameterNode*, JSC::Identifier const&)
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Simon Fraser (smfr)
This is the top most wasteful Vector client after the other JSC stuff was fixed:
2680 vectors, 28.22KB used of 249.88KB, 221.66KB wasted at:
1 0x108917855 JSC::FunctionParameters::FunctionParameters(JSC::ParameterNode*)
2 0x10891793f JSC::FunctionBodyNode::finishParsing(JSC::SourceCode const&, JSC::ParameterNode*, JSC::Identifier const&)
3 0x108945704 JSC::ASTBuilder::createFunctionExpr(int, JSC::Identifier const*, JSC::FunctionBodyNode*, JSC::ParameterNode*, int, int, int, int)
4 0x10894459f JSC::ASTBuilder::Expression JSC::Parser<JSC::Lexer<unsigned short> >::parseMemberExpression<JSC::ASTBuilder>(JSC::ASTBuilder&)
5 0x10893c8a9 JSC::ASTBuilder::Expression JSC::Parser<JSC::Lexer<unsigned short> >::parseAssignmentExpression<JSC::ASTBuilder>(JSC::ASTBuilder&)
Oliver Hunt
Are these short term vectors, or are they things that are lying around?
Simon Fraser (smfr)
I'm dumping from a run loop observer, so they persist over at least one runloop.