<?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>31362</bug_id>
          
          <creation_ts>2009-11-11 11:10:32 -0800</creation_ts>
          <short_desc>[V8] Optimize getDOMNodeMap()</short_desc>
          <delta_ts>2009-11-12 16:28:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31217</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jens Alfke">jens</reporter>
          <assigned_to name="Jens Alfke">jens</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>162571</commentid>
    <comment_count>0</comment_count>
      <attachid>42980</attachid>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-11 11:10:32 -0800</bug_when>
    <thetext>Created attachment 42980
patch

getDOMNodeMap() (in V8DOMMap.cpp) is a surprisingly hot function in Dromaeo DOM benchmarks, enough so that I decided to optimize it somewhat. What I&apos;ve done is inline together several of the calls that it makes — the function&apos;s not really doing much, so quite a lot of its time is just spent in function prolog/epilog boilerplate.

This took a bit more code-shuffling than it seems it ought to, because the code to be inlined wasn&apos;t all in the same source file; so I had to move some stuff from DOMData to MainThreadDOMData.

Result was that time spent in this function shrank by about half in my Shark profiles. Dromaeo scores improved &apos;a bit&apos;; the test results on my machine are pretty noisy, but I saw consistently 1-2% better numbers. Which isn&apos;t a lot, but these things add up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162574</commentid>
    <comment_count>1</comment_count>
      <attachid>42980</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-11 11:13:09 -0800</bug_when>
    <thetext>Comment on attachment 42980
patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162583</commentid>
    <comment_count>2</comment_count>
    <who name="Jens Alfke">jens</who>
    <bug_when>2009-11-11 11:20:34 -0800</bug_when>
    <thetext>Committed revision 50826.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42980</attachid>
            <date>2009-11-11 11:10:32 -0800</date>
            <delta_ts>2009-11-11 11:13:08 -0800</delta_ts>
            <desc>patch</desc>
            <filename>DOMData</filename>
            <type>text/plain</type>
            <size>5328</size>
            <attacher name="Jens Alfke">jens</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDgyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMDktMTEtMTEgIEplbnMgQWxma2UgIDxzbmVqQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcHRp
bWl6ZSBWOCBnZXRET01Ob2RlTWFwKCksIGEgaG90IGZ1bmN0aW9uIGluIERyb21hZW8gRE9NIHRl
c3RzLCBieSBpbmNyZWFzaW5nIGlubGluaW5nLgorCisgICAgICAgICogYmluZGluZ3MvdjgvRE9N
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpnZXRDdXJyZW50KTogIE1vdmVk
IGdldEN1cnJlbnRNYWluVGhyZWFkIHRvIE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJyZW50Cisg
ICAgICAgICAgICBzbyBpdCBjYW4gYmUgaW5saW5lZCBieSBpdHMgY2FsbGVyLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L0RPTURhdGEuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9NYWluVGhyZWFk
RE9NRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3Vy
cmVudCk6ICBNb3ZlZCBoZXJlIGZyb20gRE9NRGF0YS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpN
YWluVGhyZWFkRE9NRGF0YTo6Z2V0TWFpblRocmVhZFN0b3JlKTogIEFkZGVkIFVOTElLRUxZIG1h
Y3JvIHRvIGltcHJvdmUgY29kZWdlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRET01E
YXRhOjpnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlKTogIENvbWJpbmF0aW9uIG9mIGdldEN1cnJl
bnRNYWluVGhyZWFkCisgICAgICAgICAgICBhbmQgZ2V0U3RvcmUsIHdoaWNoIGlubGluZSBib3Ro
IGNhbGxzIHRvZ2V0aGVyLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L01haW5UaHJlYWRET01EYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNYWluVGhyZWFkRE9NRGF0YTo6Z2V0U3RvcmUpOiAgQnJv
a2Ugb3V0IG5vbnZpcnR1YWwgZ2V0TWFpblRocmVhZFN0b3JlIGZvciBpbmxpbmVhYmlsaXR5Lgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdl
dERPTU5vZGVNYXApOiAgQ2FsbCBuZXcgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSwgd2hpY2gg
aXMgZmFzdGVyLgorCiAyMDA5LTExLTExICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAJKHJldmlzaW9uIDUwNzU2KQorKysg
V2ViQ29yZS9iaW5kaW5ncy92OC9NYWluVGhyZWFkRE9NRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDE0ICszOSwzMCBAQAogICAgIDogbV9kZWZhdWx0U3RvcmUodGhpcykKIHsKIH0KKyAg
ICAKK01haW5UaHJlYWRET01EYXRhKiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0Q3VycmVudCgpCit7
CisgICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoTWFpblRocmVhZERPTURhdGEsIG1haW5UaHJlYWRET01EYXRhLCAoKSk7CisgICAgcmV0dXJu
ICZtYWluVGhyZWFkRE9NRGF0YTsKK30KIAotRE9NRGF0YVN0b3JlJiBNYWluVGhyZWFkRE9NRGF0
YTo6Z2V0U3RvcmUoKQorRE9NRGF0YVN0b3JlJiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0TWFpblRo
cmVhZFN0b3JlKCkKIHsKKyAgICAvLyBUaGlzIGlzIGJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBu
b24tdmlydHVhbCBtZXRob2QgZnJvbSBnZXRTdG9yZSgpCisgICAgLy8gc28gdGhhdCBpdCBjYW4g
YmUgaW5saW5lZCBieSBnZXRDdXJyZW50TWFpblRocmVhZFN0b3JlLCB3aGljaCBpcworICAgIC8v
IGEgaG90IHNwb3QgaW4gRHJvbWFlbyBET00gdGVzdHMuCiAgICAgQVNTRVJUKFdURjo6aXNNYWlu
VGhyZWFkKCkpOwogICAgIFY4SXNvbGF0ZWRXb3JsZCogd29ybGQgPSBWOElzb2xhdGVkV29ybGQ6
OmdldEVudGVyZWQoKTsKLSAgICBpZiAod29ybGQpCisgICAgaWYgKFVOTElLRUxZKHdvcmxkICE9
IDApKQogICAgICAgICByZXR1cm4gKndvcmxkLT5nZXRET01EYXRhU3RvcmUoKTsKICAgICByZXR1
cm4gbV9kZWZhdWx0U3RvcmU7CiB9CiAKK0RPTURhdGFTdG9yZSYgTWFpblRocmVhZERPTURhdGE6
OmdldEN1cnJlbnRNYWluVGhyZWFkU3RvcmUoKQoreworICAgIHJldHVybiBnZXRDdXJyZW50KCkt
PmdldE1haW5UaHJlYWRTdG9yZSgpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YS5oCShyZXZpc2lvbiA1MDc1NikKKysrIFdlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw2IEBACiAgICAgICAg
IERPTURhdGEoKTsKIAogICAgICAgICBzdGF0aWMgRE9NRGF0YSogZ2V0Q3VycmVudCgpOwotICAg
ICAgICBzdGF0aWMgRE9NRGF0YSogZ2V0Q3VycmVudE1haW5UaHJlYWQoKTsgLy8gQ2FsbGVyIG11
c3QgYmUgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICB2aXJ0dWFsIERPTURhdGFTdG9yZSYg
Z2V0U3RvcmUoKSA9IDA7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01EYXRhLmNwcAkocmV2aXNpb24gNTA3NTYpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxOSArNDYsMTIgQEAKIERPTURh
dGEqIERPTURhdGE6OmdldEN1cnJlbnQoKQogewogICAgIGlmIChXVEY6OmlzTWFpblRocmVhZCgp
KQotICAgICAgICByZXR1cm4gZ2V0Q3VycmVudE1haW5UaHJlYWQoKTsKKyAgICAgICAgcmV0dXJu
IE1haW5UaHJlYWRET01EYXRhOjpnZXRDdXJyZW50KCk7CiAKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFdURjo6VGhyZWFkU3BlY2lmaWM8Q2hpbGRUaHJlYWRET01EYXRhPiwgY2hpbGRUaHJlYWRE
T01EYXRhLCAoKSk7CiAgICAgcmV0dXJuIGNoaWxkVGhyZWFkRE9NRGF0YTsKIH0KIAotRE9NRGF0
YSogRE9NRGF0YTo6Z2V0Q3VycmVudE1haW5UaHJlYWQoKQotewotICAgIEFTU0VSVChXVEY6Omlz
TWFpblRocmVhZCgpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1haW5UaHJlYWRET01EYXRh
LCBtYWluVGhyZWFkRE9NRGF0YSwgKCkpOwotICAgIHJldHVybiAmbWFpblRocmVhZERPTURhdGE7
Ci19Ci0KIHZvaWQgRE9NRGF0YTo6ZW5zdXJlRGVyZWYoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJU
eXBlIHR5cGUsIHZvaWQqIGRvbU9iamVjdCkKIHsKICAgICBpZiAobV9vd25pbmdUaHJlYWQgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpIHsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvTWFpblRo
cmVhZERPTURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L01haW5UaHJl
YWRET01EYXRhLmgJKHJldmlzaW9uIDUwNzU2KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9NYWlu
VGhyZWFkRE9NRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTYgQEAKIAogICAg
IGNsYXNzIE1haW5UaHJlYWRET01EYXRhIDogcHVibGljIERPTURhdGEgewogICAgIHB1YmxpYzoK
KyAgICAgICAgc3RhdGljIE1haW5UaHJlYWRET01EYXRhKiBnZXRDdXJyZW50KCk7IC8vIENhbGxl
ciBtdXN0IGJlIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgc3RhdGljIERPTURhdGFTdG9y
ZSYgZ2V0Q3VycmVudE1haW5UaHJlYWRTdG9yZSgpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICB2aXJ0dWFsIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUoKSB7IHJldHVybiBnZXRNYWluVGhyZWFk
U3RvcmUoKTsgfQorICAgICAgICAKKworICAgIHByaXZhdGU6CiAgICAgICAgIE1haW5UaHJlYWRE
T01EYXRhKCk7Ci0gICAgICAgIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUoKTsKKyAgICAgICAgRE9N
RGF0YVN0b3JlJiBnZXRNYWluVGhyZWFkU3RvcmUoKTsKIAotICAgIHByaXZhdGU6CiAgICAgICAg
IFN0YXRpY0RPTURhdGFTdG9yZSBtX2RlZmF1bHRTdG9yZTsKICAgICAgICAgLy8gTm90ZTogVGhl
IERPTURhdGFTdG9yZXMgZm9yIGlzb2xhdGVkIHdvcmxkIGFyZSBvd25lZCBieSB0aGUgd29ybGQg
b2JqZWN0LgogICAgIH07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkocmV2aXNpb24g
NTA3NTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRPTURhdGEuaCIKICNpbmNsdWRlICJET01E
YXRhU3RvcmUuaCIKICNpbmNsdWRlICJET01PYmplY3RzSW5jbHVkZS5oIgorI2luY2x1ZGUgIk1h
aW5UaHJlYWRET01EYXRhLmgiCiAjaW5jbHVkZSAiU2NvcGVkRE9NRGF0YVN0b3JlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDggKzUwLDcgQEAKIAogRE9NV3JhcHBlck1hcDxOb2Rl
PiYgZ2V0RE9NTm9kZU1hcCgpCiB7Ci0gICAgLy8gTm9kZXMgb25seSBleGlzdCBvbiB0aGUgbWFp
biB0aHJlYWQuCi0gICAgcmV0dXJuIERPTURhdGE6OmdldEN1cnJlbnRNYWluVGhyZWFkKCktPmdl
dFN0b3JlKCkuZG9tTm9kZU1hcCgpOworICAgIHJldHVybiBNYWluVGhyZWFkRE9NRGF0YTo6Z2V0
Q3VycmVudE1haW5UaHJlYWRTdG9yZSgpLmRvbU5vZGVNYXAoKTsKIH0KIAogRE9NV3JhcHBlck1h
cDx2b2lkPiYgZ2V0RE9NT2JqZWN0TWFwKCkK
</data>
<flag name="review"
          id="24625"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>