<?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>113446</bug_id>
          
          <creation_ts>2013-03-27 14:52:37 -0700</creation_ts>
          <short_desc>cache parsed interfaces in CodeGenerator.pm</short_desc>
          <delta_ts>2013-03-27 17:37:41 -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>WebCore JavaScript</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="arno.">a.renevier</reporter>
          <assigned_to name="arno.">a.renevier</assigned_to>
          <cc>abarth</cc>
    
    <cc>ggaren</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>864880</commentid>
    <comment_count>0</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-27 14:52:37 -0700</bug_when>
    <thetext>Hi,
when generating a javascript binding for an interface, it is sometimes necessary to parse some another interfaces, namely its parents interfaces.
Informations about the parents bindings may be needed multiple times. So we end end parsing several times the same interface. But caching the parsing result, we could speedup binding generations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864885</commentid>
    <comment_count>1</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-27 14:55:45 -0700</bug_when>
    <thetext>Sounds reasonable.

Did you observe any performance issue caused by the redundant parsing? (I&apos;m just curious about it because parent chains wouldn&apos;t be long in most cases.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864917</commentid>
    <comment_count>2</comment_count>
      <attachid>195414</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-27 15:31:49 -0700</bug_when>
    <thetext>Created attachment 195414
script used to benchmark binding generations

(In reply to comment #1)
&gt; Sounds reasonable.
&gt; 
&gt; Did you observe any performance issue caused by the redundant parsing? (I&apos;m just curious about it because parent chains wouldn&apos;t be long in most cases.)


I definitively see an improvement by caching the results.
I used the attached script, launched from WebKitBuild/Release/ to benchmark generate-bindings.pl

When running it on all the WebCore idls, it take me 
3&apos;40&quot; for JavascriptCore and about 13&apos; for V8
With caching, it takes me about 2&apos;10&quot; for both.

(I ran the tests several times to avoid cold cache bias)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864918</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-27 15:32:33 -0700</bug_when>
    <thetext>Great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864922</commentid>
    <comment_count>4</comment_count>
      <attachid>195416</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-27 15:35:57 -0700</bug_when>
    <thetext>Created attachment 195416
patch proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864938</commentid>
    <comment_count>5</comment_count>
      <attachid>195416</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-27 15:53:32 -0700</bug_when>
    <thetext>Comment on attachment 195416
patch proposal

Looks good. Feel free to set r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>864940</commentid>
    <comment_count>6</comment_count>
      <attachid>195416</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-27 15:55:31 -0700</bug_when>
    <thetext>Comment on attachment 195416
patch proposal

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865049</commentid>
    <comment_count>7</comment_count>
      <attachid>195416</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-27 17:37:38 -0700</bug_when>
    <thetext>Comment on attachment 195416
patch proposal

Clearing flags on attachment: 195416

Committed r147037: &lt;http://trac.webkit.org/changeset/147037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>865050</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-27 17:37:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>195414</attachid>
            <date>2013-03-27 15:31:49 -0700</date>
            <delta_ts>2013-03-27 15:31:49 -0700</delta_ts>
            <desc>script used to benchmark binding generations</desc>
            <filename>script.sh</filename>
            <type>application/x-shellscript</type>
            <size>1695</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">IyEvYmluL3NoCgpPVVRQVVQ9YG1rdGVtcCAtZGAKdHJhcCAicm0gLXJmICRPVVRQVVQ7IGV4aXQg
MTMwIiBJTlQgVEVSTQpmb3IgZmlsZSBpbiAkKGZpbmQgLi4vLi4vU291cmNlL1dlYkNvcmUgLW5h
bWUgJyouaWRsJyk7IGRvIAogICAgL3Vzci9iaW4vcGVybCAtSS4uLy4uL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMgLi4vLi4vU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy5wbCAtLWluY2x1ZGUgIi4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmlsZXN5c3RlbSIgLS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQiIC0taW5jbHVkZSAiLi4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
biIgLS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYiIgLS1p
bmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlIiAtLWluY2x1
ZGUgIi4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0iIC0taW5jbHVkZSAi
Li4vLi4vU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zIiAtLWluY2x1ZGUgIi4u
Ly4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHJveGltaXR5IiAtLWluY2x1ZGUgIi4uLy4uL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEiIC0taW5jbHVkZSAiLi4vLi4vU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpbyIgLS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlIiAtLWluY2x1ZGUgIi4uLy4uL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cyIgLS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS9jc3MiIC0taW5jbHVk
ZSAiLi4vLi4vU291cmNlL1dlYkNvcmUvZG9tIiAtLWluY2x1ZGUgIi4uLy4uL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkiIC0taW5jbHVkZSAiLi4vLi4vU291cmNlL1dlYkNvcmUvaHRtbCIgLS1pbmNs
dWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcyIgLS1pbmNsdWRlICIuLi8uLi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdyIgLS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrIiAtLWluY2x1ZGUgIi4uLy4uL1NvdXJjZS9XZWJDb3JlL2luc3BlY3RvciIg
LS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUiIC0taW5jbHVk
ZSAiLi4vLi4vU291cmNlL1dlYkNvcmUvcGFnZSIgLS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zIiAtLWluY2x1ZGUgIi4uLy4uL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UiIC0t
aW5jbHVkZSAiLi4vLi4vU291cmNlL1dlYkNvcmUvc3ZnIiAtLWluY2x1ZGUgIi4uLy4uL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmciIC0taW5jbHVkZSAiLi4vLi4vU291cmNlL1dlYkNvcmUvd29ya2Vy
cyIgLS1pbmNsdWRlICIuLi8uLi9Tb3VyY2UvV2ViQ29yZS94bWwiIC0tb3V0cHV0RGlyICIkT1VU
UFVUIiAtLWRlZmluZXMgIkxBTkdVQUdFX0pBVkFTQ1JJUFQ9MSIgLS1nZW5lcmF0b3IgSlMgLS1p
ZGxBdHRyaWJ1dGVzRmlsZSAuLi8uLi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMudHh0ICRmaWxlCmRvbmUKcm0gLXJmICRPVVRQVVQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195416</attachid>
            <date>2013-03-27 15:35:57 -0700</date>
            <delta_ts>2013-03-27 17:37:37 -0700</delta_ts>
            <desc>patch proposal</desc>
            <filename>bug-113446-20130327153556.patch</filename>
            <type>text/plain</type>
            <size>2561</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjJkNjkzZGQ4ZTQzM2Q3
MTUwYTdiZDkyMWU4ZjUyNjk3MTk1NzcyYy4uZTgxMDFhNmI3Yjc2Y2MzMWRjMDA4MGYwYjVlNTQ4
N2Y2YzJlNjZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEzLTAzLTI3ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CiAKKyAgICAgICAgY2Fj
aGUgcGFyc2VkIGludGVyZmFjZXMgaW4gQ29kZUdlbmVyYXRvci5wbQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzNDQ2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBnZW5lcmF0aW5nIGJpbmRpbmcg
Zm9yIGFuIGludGVyZmFjZSwgaW5mb3JtYXRpb25zIGFib3V0IHBhcmVudAorICAgICAgICBpbnRl
cmZhY2VzIGFyZSBzb21ldGltZXMgbmVlZGVkIHNldmVyYWwgdGltZXMuIFRoaXMgcGF0Y2ggY2Fj
aGVzCisgICAgICAgIHRob3NlIHRoZSBwYXJzZWQgaW50ZXJmYWNlLiBXaGVuIGdlbmVyYXRpbmcg
YWxsIFdlYkNvcmUgYmluZGluZ3MsIHRoaXMKKyAgICAgICAgcmVzdWx0cyBpbiBhIHNwZWVkdXAg
b2YgYWJvdXQgNDAlIGZvciBKYXZhU2NyaXB0Q29yZSBhbmQgYWJvdXQgODAlIGZvcgorICAgICAg
ICBWOC4KKworICAgICAgICBObyBuZXcgdGVzdHM6IG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIChQ
YXJzZUludGVyZmFjZSk6CisKKzIwMTMtMDMtMjcgIEFybmF1ZCBSZW5ldmllciAgPGEucmVuZXZp
ZXJAc2lzYS5zYW1zdW5nLmNvbT4KKwogICAgICAgICBqYXZhc2NyaXB0Y29yZSBiaW5kaW5ncyBk
byBub3QgY2hlY2sgZXhjZXB0aW9uIGFmdGVyIGNhbGxpbmcgdmFsdWVUb1N0cmluZ1dpdGhOdWxs
Q2hlY2sKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MzIxOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0KaW5kZXggZDQ3NDNhNjFlYmMwMTBhNmY1ZmVhMmRiNTA5NTc4MGQyYWE0NDI5Ni4uYWI0
OTAyYjg4YmQ3ZGQ0OGQwMjhhZDE1OWJiNjYwYmNmOTg1YmM5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtOTUsNiArOTUsNyBA
QCBteSAlc3ZnVHlwZVdpdGhXcml0YWJsZVByb3BlcnRpZXNOZWVkaW5nVGVhck9mZiA9ICgKIAog
IyBDYWNoZSBvZiBJREwgZmlsZSBwYXRobmFtZXMuCiBteSAkaWRsRmlsZXM7CitteSAkY2FjaGVk
SW50ZXJmYWNlcyA9IHt9OwogCiAjIERlZmF1bHQgY29uc3RydWN0b3IKIHN1YiBuZXcKQEAgLTI5
Myw2ICsyOTQsMTAgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAKICAgICByZXR1cm4gdW5kZWYgaWYg
JGludGVyZmFjZU5hbWUgZXEgJ09iamVjdCc7CiAKKyAgICBpZiAoZXhpc3RzICRjYWNoZWRJbnRl
cmZhY2VzLT57JGludGVyZmFjZU5hbWV9KSB7CisgICAgICAgIHJldHVybiAkY2FjaGVkSW50ZXJm
YWNlcy0+eyRpbnRlcmZhY2VOYW1lfTsKKyAgICB9CisKICAgICAjIFN0ZXAgIzE6IEZpbmQgdGhl
IElETCBmaWxlIGFzc29jaWF0ZWQgd2l0aCAnaW50ZXJmYWNlJwogICAgIG15ICRmaWxlbmFtZSA9
ICRvYmplY3QtPklETEZpbGVGb3JJbnRlcmZhY2UoJGludGVyZmFjZU5hbWUpCiAgICAgICAgIG9y
IGRpZSgiQ291bGQgTk9UIGZpbmQgSURMIGZpbGUgZm9yIGludGVyZmFjZSBcIiRpbnRlcmZhY2VO
YW1lXCIhXG4iKTsKQEAgLTMwNCw3ICszMDksMTAgQEAgc3ViIFBhcnNlSW50ZXJmYWNlCiAgICAg
bXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGZpbGVuYW1lLCAkZGVmaW5lcywgJHByZXBy
b2Nlc3NvciwgJHBhcmVudHNPbmx5KTsKIAogICAgIGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHsk
ZG9jdW1lbnQtPmludGVyZmFjZXN9KSB7Ci0gICAgICAgIHJldHVybiAkaW50ZXJmYWNlIGlmICRp
bnRlcmZhY2UtPm5hbWUgZXEgJGludGVyZmFjZU5hbWU7CisgICAgICAgIGlmICgkaW50ZXJmYWNl
LT5uYW1lIGVxICRpbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICAkY2FjaGVkSW50ZXJmYWNl
cy0+eyRpbnRlcmZhY2VOYW1lfSA9ICRpbnRlcmZhY2U7CisgICAgICAgICAgICByZXR1cm4gJGlu
dGVyZmFjZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGRpZSgiQ291bGQgTk9UIGZpbmQgaW50
ZXJmYWNlIGRlZmluaXRpb24gZm9yICRpbnRlcmZhY2VOYW1lIGluICRmaWxlbmFtZSIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>