Bug 92486

Summary: [JSC] JSC should use AtomicStrings to make Element::getAttributeNS() faster
Product: WebKit Reporter: Kentaro Hara <haraken>
Component: WebCore JavaScriptAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: abarth, barraclough, eric, ggaren, rniwa, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 99118    
Bug Blocks:    

Description Kentaro Hara 2012-07-27 03:41:13 PDT
Assume Node::foo(AtomicString& str). Assume JavaScript calls node.foo("bar").

[V8] V8 can cache both Strings and AtomicStrings. "bar" is cached as an AtomicString. When node.foo("bar") is called, the cached AtomicString is passed to Node::foo(). Very efficient.

[JSC] JSC can cache Strings but cannot cache AtomicStrings. "bar" is cached as a String. When node.foo("bar") is called, the cached String has to be converted to AtomicString and then passed to Node::foo().

For more details, please refer to Comment #0 of bug 90276.
Comment 1 Geoffrey Garen 2012-07-27 08:34:21 PDT
"Cache" is the wrong term for what happens when JSC passes a string to WebCore. JSC already has a StringImpl*, and it passes that to WebCore.

The issue here is that "foo" is in the Identifier table but not the AtomicString table. One way to fix this is to merge the tables.
Comment 2 Eric Seidel (no email) 2012-10-11 18:50:12 PDT
I believe bug 99118 and this are the same bug?