<?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>17504</bug_id>
          
          <creation_ts>2008-02-23 17:20:36 -0800</creation_ts>
          <short_desc>Speed up DOM lists array subscription syntax by using the fast getOwnPropertySlot and set paths</short_desc>
          <delta_ts>2008-02-23 17:37:05 -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 JavaScript</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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>71654</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-23 17:20:36 -0800</bug_when>
    <thetext>We are needlessly converting from unsigned -&gt; Identifier -&gt; unsigned when doing indexGetting and setting for DOM lists like the NodeList or the new CanvasPixelArray.  We can speed it up by using the fast getOwnPropertySlot and put methods that take an unsigned.  This technique is already employed by ArrayInstance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71655</commentid>
    <comment_count>1</comment_count>
      <attachid>19308</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-23 17:32:20 -0800</bug_when>
    <thetext>Created attachment 19308
patch

This speeds Oliver&apos;s CanvasPixelArray test up by 6x.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71656</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-02-23 17:37:05 -0800</bug_when>
    <thetext>Landed in r30529.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19308</attachid>
            <date>2008-02-23 17:32:20 -0800</date>
            <delta_ts>2008-02-23 17:33:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>listSpeedUp.diff</filename>
            <type>text/plain</type>
            <size>5810</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMDUyNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDgtMDItMjMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9y
IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTA0CisgICAgICAgIFNw
ZWVkIHVwIERPTSBsaXN0cyBhcnJheSBzdWJzY3JpcHRpb24gc3ludGF4IGJ5IHVzaW5nIHRoZSBm
YXN0IAorICAgICAgICBnZXRPd25Qcm9wZXJ0eVNsb3QgYW5kIHNldCBwYXRocworCisgICAgICAg
IC0gNnggc3BlZWQgaW1wcm92ZW1lbnQgb24gT2xpdmVyJ3MgSW1hZ2VEYXRhIHB1dCB0ZXN0Lgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06IEFkZCBmYXN0
IHBhdGggZm9yIGdldE93blByb3BlcnR5U2xvdAorICAgICAgICBhbmQgcHV0IHdoZW4gYW4gaW5k
ZXhHZXR0ZXIgb3IgaW5kZXhTZXR0ZXIgaXMgdXNlZC4gIFdlIGNhbiBub3QgdXNlIHRoZSBmYXN0
CisgICAgICAgIHBhdGggaWYgYW4gb3ZlcnJpZGluZ05hbWVHZXR0ZXIgaXMgdXNlZCBhcyB0aGVy
ZSB3b3VsZCBiZSBubyB3YXkgdG8gb3ZlcnJpZGUuCisKIDIwMDgtMDItMjMgIEFsZXhleSBQcm9z
a3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAgICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IC0g
bW92ZSBUaHJlYWRDb25kaXRpb24gaW1wbGVtZW50YXRpb24gZnJvbSBXZWJDb3JlIHRvIFdURi4K
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2
aXNpb24gMzA1MjcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsNyArMzQ0LDggQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAKICAgICAjIEdldHRlcnMKICAgICBpZiAoJGhhc0dldHRlcikgewotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoS0pTOjpF
eGVjU3RhdGUqLCBjb25zdCBLSlM6OklkZW50aWZpZXImLCBLSlM6OlByb3BlcnR5U2xvdCYpO1xu
Iik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdldE93
blByb3BlcnR5U2xvdChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBLSlM6OlByb3BlcnR5U2xvdCYpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChLSlM6OkV4ZWNT
dGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgS0pTOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlm
ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNJbmRleEdldHRlciJ9IHx8ICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUluZGV4R2V0dGVyIn0pICYm
ICEkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJIYXNPdmVycmlkaW5nTmFtZUdldHRl
ciJ9OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEtKUzo6SlNWYWx1ZSogZ2V0
VmFsdWVQcm9wZXJ0eShLSlM6OkV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7XG4iKSBpZiAk
bnVtQXR0cmlidXRlcyA+IDAgfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2Vu
ZXJhdGVDb25zdHJ1Y3RvciJ9OwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJv
b2wgY3VzdG9tR2V0T3duUHJvcGVydHlTbG90KEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJ
ZGVudGlmaWVyJiwgS0pTOjpQcm9wZXJ0eVNsb3QmKTtcbiIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9OwogICAgIH0KQEAgLTM2
Myw3ICszNjQsOCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICMgR2V0dGVycwogICAgIGlm
ICgkaGFzU2V0dGVyKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVh
bCB2b2lkIHB1dChLSlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIEtKUzo6
SlNWYWx1ZSosIGludCBhdHRyID0gS0pTOjpOb25lKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBwdXQoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBL
SlM6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgS0pTOjpKU1ZhbHVlKiwgaW50IGF0dHIgPSBL
SlM6Ok5vbmUpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVh
bCB2b2lkIHB1dChLSlM6OkV4ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgS0pTOjpK
U1ZhbHVlKiwgaW50IGF0dHIgPSBLSlM6Ok5vbmUpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSGFzQ3VzdG9tSW5kZXhTZXR0ZXIifTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoS0pTOjpFeGVjU3RhdGUqLCBp
bnQsIEtKUzo6SlNWYWx1ZSosIGludCBhdHRyKTtcbiIpIGlmICRoYXNSZWFkV3JpdGVQcm9wZXJ0
aWVzOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgY3VzdG9tUHV0KEtK
Uzo6RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgS0pTOjpKU1ZhbHVlKiwgaW50
IGF0dHIpO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0
RnVuY3Rpb24ifTsKICAgICB9CkBAIC0zNzYsNyArMzc4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgbWFyaygpO1xuXG4i
KSBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21NYXJrRnVuY3Rpb24i
fTsKIAogICAgICMgQ3VzdG9tIHB1c2hFdmVudEhhbmRsZXJTY29wZSBmdW5jdGlvbgotICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRsZXJTY29w
ZShLSlM6OkV4ZWNTdGF0ZSosIEtKUzo6U2NvcGVDaGFpbiYpIGNvbnN0O1xuXG4iKSAgaWYgJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHVzaEV2ZW50SGFuZGxlclNjb3Bl
In07CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsIHZvaWQgcHVzaEV2ZW50
SGFuZGxlclNjb3BlKEtKUzo6RXhlY1N0YXRlKiwgS0pTOjpTY29wZUNoYWluJikgY29uc3Q7XG5c
biIpIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1c2hFdmVudEhh
bmRsZXJTY29wZSJ9OwogCiAgICAgIyBDdXN0b20gY2FsbCBmdW5jdGlvbnMKICAgICBpZiAoJGRh
dGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ2FsbCJ9KSB7CkBAIC05MDgsNiAr
OTEwLDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCisgICAgICAgIGlmICgoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzSW5kZXhHZXR0ZXIifSB8fCAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJIYXNDdXN0b21JbmRleEdldHRlciJ9KSAKKyAgICAgICAgICAgICAg
ICAmJiAhJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzT3ZlcnJpZGluZ05hbWVH
ZXR0ZXIifSkgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NO
YW1lfTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
cHJvcGVydHlOYW1lIDwgc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihpbXBsKCkpLT5sZW5n
dGgoKSkge1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2xv
dC5zZXRDdXN0b21JbmRleCh0aGlzLCBwcm9wZXJ0eU5hbWUsIGluZGV4R2V0dGVyKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywg
SWRlbnRpZmllcjo6ZnJvbShwcm9wZXJ0eU5hbWUpLCBzbG90KTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAgICAgICB9CisKICAgICAgICAgaWYgKCRu
dW1BdHRyaWJ1dGVzID4gMCkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1Zh
bHVlKiAke2NsYXNzTmFtZX06OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQg
dG9rZW4pIGNvbnN0XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7
CkBAIC0xMDI1LDkgKzEwMzksMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
QmFzZTo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIpO1xuIik7CiAgICAgICAg
ICAgICB9Ci0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAorICAg
ICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ikhhc0N1c3RvbUlu
ZGV4U2V0dGVyIn0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQg
JHtjbGFzc05hbWV9OjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUqIHZhbHVlLCBpbnQgYXR0cilcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaW5kZXhTZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cik7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm47XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CisgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGlmICgkaGFzUmVhZFdyaXRlUHJvcGVydGllcykgewogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dFZhbHVlUHJvcGVy
dHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUqIHZhbHVlLCBpbnQgLyphdHRy
Ki8pXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwo=
</data>
<flag name="review"
          id="8438"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>