<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>115995</bug_id>
          
          <creation_ts>2013-05-12 16:28:40 -0700</creation_ts>
          <short_desc>Node: Use FINAL instead of the non-virtual shadowing hack.</short_desc>
          <delta_ts>2013-05-13 06:22:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>888029</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-12 16:28:40 -0700</bug_when>
    <thetext>WebCore::Node currently has:

const AtomicString&amp; localName() const { return virtualLocalName(); }
const AtomicString&amp; namespaceURI() const { return virtualNamespaceURI(); }
const AtomicString&amp; prefix() const { return virtualPrefix(); }

These are then shadowed on Element to avoid virtual dispatch when calling through on subclass pointers.
While this is pretty neat, we should just use FINAL instead. Yup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888030</commentid>
    <comment_count>1</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-12 16:29:43 -0700</bug_when>
    <thetext>Oh, also this:

RenderStyle* computedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) { return virtualComputedStyle(pseudoElementSpecifier); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888032</commentid>
    <comment_count>2</comment_count>
      <attachid>201511</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-12 16:37:38 -0700</bug_when>
    <thetext>Created attachment 201511
Patch

Actually, never mind computedStyle(), we want that to be fast for non-SVG elements and we can&apos;t make it FINAL on Element since SVGElement overrides it.
This patch changes prefix/namespaceURI/localName to use FINAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888057</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-12 18:59:55 -0700</bug_when>
    <thetext>Committed r149974: &lt;http://trac.webkit.org/changeset/149974&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888083</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-05-12 21:40:53 -0700</bug_when>
    <thetext>The non-virtual shadowing *design pattern*. Hack, my foot ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>888215</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-13 06:22:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; The non-virtual shadowing *design pattern*. Hack, my foot ;-)

&lt;http://i.imgur.com/sXXky9V.jpg&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201511</attachid>
            <date>2013-05-12 16:37:38 -0700</date>
            <delta_ts>2013-05-12 16:42:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115995.diff</filename>
            <type>text/plain</type>
            <size>5902</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZGIxZDZjLi44YzY1NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAg
QEAKIDIwMTMtMDUtMTIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCisgICAg
ICAgIE5vZGU6IFVzZSBGSU5BTCBpbnN0ZWFkIG9mIHRoZSBub24tdmlydHVhbCBzaGFkb3dpbmcg
aGFjay4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE1OTk1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlY29yYXRlIEVsZW1lbnQvQXR0
ciBpbXBsZW1lbnRhdGlvbnMgb2YgcHJlZml4L2xvY2FsTmFtZS9uYW1lc3BhY2VVUkkgZ2V0dGVy
cyB3aXRoIEZJTkFMCisgICAgICAgIHNvIHRoYXQgY2FsbCBzaXRlcyB3aXRoIGEgbW9yZSBzcGVj
aWZpYyBwb2ludGVyIHR5cGUgdGhhbiBOb2RlKiBjYW4gYXZvaWQgdGhlIHZpcnR1YWwgZGlzcGF0
Y2guCisKKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisKKzIwMTMtMDUt
MTIgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCiAgICAgICAgIEFwcGx5IEZJ
TkFMIHRvIHRoZSBOb2RlIGhpZXJhcmNoeS4KICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTE1OTg0PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCA3NmU2YWRjLi41MmFiNjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgK
QEAgLTczLDkgKzczLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG5hbWUoKTsgfQogICAgIHZpcnR1YWwgTm9kZVR5cGUg
bm9kZVR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBBVFRSSUJVVEVfTk9ERTsgfQogCi0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWUu
bG9jYWxOYW1lKCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZS5uYW1lc3BhY2VVUkkoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLnByZWZpeCgpOyB9CisgICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fbmFtZS5sb2NhbE5hbWUoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lc3BhY2VVUkkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX25hbWUubmFtZXNwYWNl
VVJJKCk7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9uYW1lLnByZWZpeCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtODgs
MTAgKzg4LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Ym9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9k
ZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKLSAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdmlydHVhbFByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIHBy
ZWZpeCgpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHZpcnR1YWxMb2NhbE5h
bWUoKSBjb25zdCB7IHJldHVybiBsb2NhbE5hbWUoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiB2aXJ0dWFsTmFtZXNwYWNlVVJJKCkgY29uc3QgeyByZXR1cm4gbmFtZXNwYWNl
VVJJKCk7IH0KLQogICAgIEF0dHJpYnV0ZSYgZWxlbWVudEF0dHJpYnV0ZSgpOwogCiAgICAgLy8g
QXR0ciB3cmFwcyBlaXRoZXIgYW4gZWxlbWVudC9uYW1lLCBvciBhIG5hbWUvdmFsdWUgcGFpciAo
d2hlbiBpdCdzIGEgc3RhbmRhbG9uZSBOb2RlLikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDZkZjk1
YWQuLmY4ZDMwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzU2LDkgKzM1Niw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0xvY2FsTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3RhZ05hbWUubG9jYWxOYW1lKCkgPT0gb3RoZXI7IH0KICAgICBib29sIGhh
c0xvY2FsTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV90
YWdOYW1lLmxvY2FsTmFtZSgpID09IG90aGVyLmxvY2FsTmFtZSgpOyB9CiAKLSAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5sb2NhbE5h
bWUoKTsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3QgeyByZXR1cm4g
bV90YWdOYW1lLnByZWZpeCgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWUubmFtZXNwYWNlVVJJKCk7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgT1ZFUlJJREUgRklOQUwg
eyByZXR1cm4gbV90YWdOYW1lLmxvY2FsTmFtZSgpOyB9CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0IE9WRVJSSURFIEZJTkFMIHsgcmV0dXJuIG1fdGFnTmFt
ZS5wcmVmaXgoKTsgfQorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBtX3RhZ05hbWUubmFtZXNwYWNlVVJJ
KCk7IH0KIAogICAgIHZpcnR1YWwgS1VSTCBiYXNlVVJJKCkgY29uc3QgT1ZFUlJJREUgRklOQUw7
CiAKQEAgLTY5OSw5ICs2OTksNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjYW5jZWxGb2N1c0Fw
cGVhcmFuY2VVcGRhdGUoKTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB2aXJ0
dWFsUHJlZml4KCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyByZXR1cm4gcHJlZml4KCk7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdmlydHVhbExvY2FsTmFtZSgpIGNvbnN0IE9W
RVJSSURFIEZJTkFMIHsgcmV0dXJuIGxvY2FsTmFtZSgpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHZpcnR1YWxOYW1lc3BhY2VVUkkoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7
IHJldHVybiBuYW1lc3BhY2VVUkkoKTsgfQogICAgIHZpcnR1YWwgUmVuZGVyU3R5bGUqIHZpcnR1
YWxDb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPSBOT1BTRVVE
TykgeyByZXR1cm4gY29tcHV0ZWRTdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKTsgfQogICAg
IAogICAgIC8vIGNsb25lTm9kZSBpcyBwcml2YXRlIHNvIHRoYXQgbm9uLXZpcnR1YWwgY2xvbmVF
bGVtZW50V2l0aENoaWxkcmVuIGFuZCBjbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCAxYjAxZmFjLi41ZDI3NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02Mzgs
NyArNjM4LDcgQEAgdm9pZCBOb2RlOjpub3JtYWxpemUoKQogICAgIH0KIH0KIAotY29uc3QgQXRv
bWljU3RyaW5nJiBOb2RlOjp2aXJ0dWFsUHJlZml4KCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmlu
ZyYgTm9kZTo6cHJlZml4KCkgY29uc3QKIHsKICAgICAvLyBGb3Igbm9kZXMgb3RoZXIgdGhhbiBl
bGVtZW50cyBhbmQgYXR0cmlidXRlcywgdGhlIHByZWZpeCBpcyBhbHdheXMgbnVsbAogICAgIHJl
dHVybiBudWxsQXRvbTsKQEAgLTY1MiwxMiArNjUyLDEyIEBAIHZvaWQgTm9kZTo6c2V0UHJlZml4
KGNvbnN0IEF0b21pY1N0cmluZyYgLypwcmVmaXgqLywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ZWMgPSBOQU1FU1BBQ0VfRVJSOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmcmIE5vZGU6OnZpcnR1
YWxMb2NhbE5hbWUoKSBjb25zdAorY29uc3QgQXRvbWljU3RyaW5nJiBOb2RlOjpsb2NhbE5hbWUo
KSBjb25zdAogewogICAgIHJldHVybiBudWxsQXRvbTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5n
JiBOb2RlOjp2aXJ0dWFsTmFtZXNwYWNlVVJJKCkgY29uc3QKK2NvbnN0IEF0b21pY1N0cmluZyYg
Tm9kZTo6bmFtZXNwYWNlVVJJKCkgY29uc3QKIHsKICAgICByZXR1cm4gbnVsbEF0b207CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCBhOGE2OWFiLi40YjVmNGNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yMTMsOSAr
MjEzLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBi
b29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBmaXJzdENoaWxkKCk7IH0KICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wgZGVlcCkgPSAwOwotICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbExvY2Fs
TmFtZSgpOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCB7
IHJldHVybiB2aXJ0dWFsTmFtZXNwYWNlVVJJKCk7IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxQcmVmaXgoKTsgfQorICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVmaXgo
Y29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgbm9ybWFsaXpl
KCk7CiAKQEAgLTgwMywxMCArODAzLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpOwogCiAgICAgdmlydHVhbCBSZW5kZXJTdHlsZSogbm9uUmVuZGVyZXJT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KLQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2aXJ0dWFsUHJlZml4KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHZpcnR1YWxMb2NhbE5hbWUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmlydHVhbE5hbWVzcGFjZVVSSSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyU3R5
bGUqIHZpcnR1YWxDb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pOwogCiAgICAgRWxl
bWVudCogYW5jZXN0b3JFbGVtZW50KCkgY29uc3Q7Cg==
</data>
<flag name="review"
          id="222847"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>