<?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>86732</bug_id>
          
          <creation_ts>2012-05-17 07:47:38 -0700</creation_ts>
          <short_desc>Web Inspector: speed-up markQueriableHeapObjects function.</short_desc>
          <delta_ts>2012-05-22 00:01:58 -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>Web Inspector (Deprecated)</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>
          
          <blocked>87089</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>626572</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-17 07:47:38 -0700</bug_when>
    <thetext>inline getters

RESULT heap-snapshot: _markQueriableHeapObjects= 879 ms
vs
RESULT heap-snapshot: _markQueriableHeapObjects= 42 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626575</commentid>
    <comment_count>1</comment_count>
      <attachid>142474</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-17 07:49:16 -0700</bug_when>
    <thetext>Created attachment 142474
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626578</commentid>
    <comment_count>2</comment_count>
      <attachid>142474</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-05-17 07:57:29 -0700</bug_when>
    <thetext>Comment on attachment 142474
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=142474&amp;action=review

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:-1180
&gt; -                list.push(iter.edge.node.nodeIndex);

Please revert this part.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1197
&gt; +                         ? nodes[nodeIndex + firstEdgeIndexOffset + nodeFieldCount]

Please realign these two lines.

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1213
&gt; +        this._flags = new Uint32Array(this.nodeCount);

Does it make any difference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627351</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-17 22:43:57 -0700</bug_when>
    <thetext>Committed r117545: &lt;http://trac.webkit.org/changeset/117545&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627365</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-05-17 22:58:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 142474 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=142474&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:-1180
&gt; &gt; -                list.push(iter.edge.node.nodeIndex);
&gt; 
&gt; Please revert this part.

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1197
&gt; &gt; +                         ? nodes[nodeIndex + firstEdgeIndexOffset + nodeFieldCount]
&gt; 
&gt; Please realign these two lines.

done

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:1213
&gt; &gt; +        this._flags = new Uint32Array(this.nodeCount);
&gt; 
&gt; Does it make any difference?

This line is the root for the sake of which all the patch has been made.
Before the patch the array was sparse. Actually it was a hash map.
Now we have no memory overhead and we can make it external.
It gives us an additional speed boost and reduces js heap footprint.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142474</attachid>
            <date>2012-05-17 07:49:16 -0700</date>
            <delta_ts>2012-05-17 07:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86732-20120517184914.patch</filename>
            <type>text/plain</type>
            <size>4840</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUxNzkzM2Q0NWNmNjdi
OWY2ZjhhNWNkZWQwYmMwMTNiNTM2ODcwNy4uMTE0MGYzNWZkN2MyNzQ3MWY5Zjk3OWFmNjczYzk3
NmQ1NWViZTc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDEyLTA1LTE3ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzcGVlZC11cCBtYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMgZnVuY3Rpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjczMgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZS5fZmxhZ3NPZk5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX21hcmtEZXRhY2hlZERPTVRyZWVOb2Rlcyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fbWFya1F1ZXJpYWJsZUhlYXBPYmplY3Rz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9jYWxjdWxh
dGVGbGFncyk6CisKKzIwMTItMDUtMTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21p
dW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhlYXBTbmFwc2hvdDogc3BlZWQtdXAg
Y2FsY3VsYXRlT2JqZWN0VG9XaW5kb3dEaXN0YW5jZQogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3MTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwppbmRleCBhMGQ2NTQ5ZDEwNTljY2Yw
MTdkYmY2ZjNhZGYzMDgyYTA2YTZiMmRmLi42M2YwYTMwNzQ3ZDJiZTc2ZGZhZDA5MzAxNzM4NzQ4
ODllZDk4ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0hlYXBTbmFwc2hvdC5qcwpAQCAtODI1LDcgKzgyNSw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3QucHJvdG90eXBlID0gewogCiAgICAgX2ZsYWdzT2ZOb2RlOiBmdW5jdGlvbihub2RlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZsYWdzW25vZGUubm9kZUluZGV4XTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2ZsYWdzW25vZGUubm9kZUluZGV4IC8gdGhpcy5fbm9kZUZpZWxkQ291
bnRdOwogICAgIH0sCiAKICAgICAvKioKQEAgLTExNTUsNyArMTE1NSw3IEBAIFdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIG5vZGUgPSBpdGVy
LmVkZ2Uubm9kZTsKICAgICAgICAgICAgIGlmIChub2RlLmlzRGV0YWNoZWRET01UcmVlKSB7CiAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgZWRnZXNJdGVyID0gbm9kZS5lZGdlczsgZWRnZXNJdGVy
Lmhhc05leHQoKTsgZWRnZXNJdGVyLm5leHQoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5f
ZmxhZ3NbZWRnZXNJdGVyLmVkZ2Uubm9kZS5ub2RlSW5kZXhdIHw9IGZsYWc7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2ZsYWdzW2VkZ2VzSXRlci5lZGdlLm5vZGUubm9kZUluZGV4IC8gdGhp
cy5fbm9kZUZpZWxkQ291bnRdIHw9IGZsYWc7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9LApAQCAtMTE3MiwzOSArMTE3Miw0NSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9O
b2RlT2Zmc2V0OwogICAgICAgICB2YXIgZWRnZVR5cGVPZmZzZXQgPSB0aGlzLl9lZGdlVHlwZU9m
ZnNldDsKICAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3Vu
dDsKKyAgICAgICAgdmFyIGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2Vz
OworICAgICAgICB2YXIgbm9kZXMgPSB0aGlzLl9ub2RlczsKKyAgICAgICAgdmFyIG5vZGVDb3Vu
dCA9IHRoaXMubm9kZUNvdW50OworICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9u
b2RlRmllbGRDb3VudDsKKyAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4T2Zmc2V0ID0gdGhpcy5f
Zmlyc3RFZGdlSW5kZXhPZmZzZXQ7CiAKICAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5fZmxhZ3M7
CiAgICAgICAgIHZhciBsaXN0ID0gW107CisgICAgICAgIHZhciBsaXN0TGVuZ3RoID0gMDsKICAg
ICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5vZGUuZWRnZXM7IGl0ZXIuaGFzTmV4dCgp
OyBpdGVyLm5leHQoKSkgewogICAgICAgICAgICAgaWYgKGl0ZXIuZWRnZS5ub2RlLmlzV2luZG93
KQotICAgICAgICAgICAgICAgIGxpc3QucHVzaChpdGVyLmVkZ2Uubm9kZS5ub2RlSW5kZXgpOwor
ICAgICAgICAgICAgICAgIGxpc3RbbGlzdExlbmd0aCsrXSA9IGl0ZXIuZWRnZS5ub2RlLm5vZGVJ
bmRleDsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlKHRoaXMpOwotICAgICAgICB3aGlsZSAobGlzdC5sZW5ndGgpIHsKLSAg
ICAgICAgICAgIHZhciBub2RlSW5kZXggPSBsaXN0LnBvcCgpOwotICAgICAgICAgICAgaWYgKGZs
YWdzW25vZGVJbmRleF0gJiBmbGFnKQorICAgICAgICB3aGlsZSAobGlzdExlbmd0aCkgeworICAg
ICAgICAgICAgdmFyIG5vZGVJbmRleCA9IGxpc3RbLS1saXN0TGVuZ3RoXTsKKyAgICAgICAgICAg
IHZhciBub2RlT3JkaW5hbCA9IG5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAg
ICAgaWYgKGZsYWdzW25vZGVPcmRpbmFsXSAmIGZsYWcpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9IG5vZGVJbmRleDsKLSAgICAgICAgICAg
IGZsYWdzW25vZGVJbmRleF0gfD0gZmxhZzsKLSAgICAgICAgICAgIHZhciBlZGdlc0NvdW50ID0g
bm9kZS5lZGdlc0NvdW50OwotICAgICAgICAgICAgdmFyIGVkZ2VzID0gbm9kZS5yYXdFZGdlczsK
LSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZWRnZXNDb3VudDsgKytqKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGVkZ2VJbmRleCA9IGogKiBlZGdlRmllbGRzQ291bnQ7Ci0gICAgICAg
ICAgICAgICAgbm9kZUluZGV4ID0gZWRnZXMuaXRlbShlZGdlSW5kZXggKyBlZGdlVG9Ob2RlT2Zm
c2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoZmxhZ3Nbbm9kZUluZGV4XSAmIGZsYWcpCisgICAg
ICAgICAgICBmbGFnc1tub2RlT3JkaW5hbF0gfD0gZmxhZzsKKyAgICAgICAgICAgIHZhciBiZWdp
bkVkZ2VJbmRleCA9IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUluZGV4T2Zmc2V0XTsKKyAg
ICAgICAgICAgIHZhciBlbmRFZGdlSW5kZXggPSBub2RlT3JkaW5hbCA8IG5vZGVDb3VudCAtIDEK
KyAgICAgICAgICAgICAgICAgICAgICAgICA/IG5vZGVzW25vZGVJbmRleCArIGZpcnN0RWRnZUlu
ZGV4T2Zmc2V0ICsgbm9kZUZpZWxkQ291bnRdCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBj
b250YWlubWVudEVkZ2VzLmxlbmd0aDsKKyAgICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9
IGJlZ2luRWRnZUluZGV4OyBlZGdlSW5kZXggPCBlbmRFZGdlSW5kZXg7IGVkZ2VJbmRleCArPSBl
ZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlSW5kZXggPSBj
b250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOworICAgICAgICAg
ICAgICAgIGlmIChmbGFnc1tjaGlsZE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50XSAmIGZsYWcp
CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHZhciB0eXBl
ID0gZWRnZXMuaXRlbShlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldCk7CisgICAgICAgICAgICAg
ICAgdmFyIHR5cGUgPSBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUeXBlT2Zmc2V0
XTsKICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gaGlkZGVuRWRnZVR5cGUgfHwgdHlwZSA9
PT0gaW52aXNpYmxlRWRnZVR5cGUgfHwgdHlwZSA9PT0gaW50ZXJuYWxFZGdlVHlwZSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgbGlzdC5wdXNoKG5vZGVJ
bmRleCk7CisgICAgICAgICAgICAgICAgbGlzdFtsaXN0TGVuZ3RoKytdID0gY2hpbGROb2RlSW5k
ZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCiAgICAgX2NhbGN1bGF0ZUZs
YWdzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9mbGFncyA9IG5ldyBBcnJheSh0
aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHRoaXMuX2ZsYWdzID0gbmV3IFVpbnQzMkFycmF5KHRo
aXMubm9kZUNvdW50KTsKICAgICAgICAgdGhpcy5fbWFya0RldGFjaGVkRE9NVHJlZU5vZGVzKCk7
CiAgICAgICAgIHRoaXMuX21hcmtRdWVyaWFibGVIZWFwT2JqZWN0cygpOwogICAgIH0sCg==
</data>
<flag name="review"
          id="148821"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>