In r121439, we changed the argument type of Element::getAttribute() from String to AtomicString for optimization. We can also change the argument type of Element::getAttributeNS() from String to AtomicString. Actually this change affects V8 performance only. [JSC without the patch] The binding code converts a given JavaScript string to a String -> the String is passed to getAttributeNS() -> the String is converted to an AtomicString when it is passed to QualifiedName() constructor. [JSC with the patch] The binding code converts a given JavaScript string to a String -> the String is converted to an AtomicString when it is passed to getAttributeNS() -> the AtomicString is passed to QualifiedName() constructor. [V8 without the patch] The binding code retrieves a cached external String for a given JavaScript string -> the String is passed to getAttributeNS() -> the String is converted to AtomicString when it is passed to QualifiedName() constructor. [V8 with the patch] The binding code retrieves a cached external AtomicString for a given JavaScript string -> the AtomicString is passed to getAttributeNS() -> the AtomicString is passed to QualifiedName() constructor. In this way, in JSC, the change affects where a String is converted to an AtomicString. On the other hand, in V8, (since the AtomicString is already cached,) we can skip the conversion step.
Created attachment 150156 [details] Performance test
Created attachment 150158 [details] Updated performance test
Created attachment 150159 [details] Patch
Comment on attachment 150159 [details] Patch Based on further discussion in #webkit, my current understanding is that ap is ok with these patches. I'm going to r+ them, but please give ap a chance to respond before landing.
Comment on attachment 150159 [details] Patch Clearing flags on attachment: 150159 Committed r123944: <http://trac.webkit.org/changeset/123944>
All reviewed patches have been landed. Closing bug.