<?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>26561</bug_id>
          
          <creation_ts>2009-06-19 16:40:01 -0700</creation_ts>
          <short_desc>Remove memcpy from ScriptSourceCode::source()</short_desc>
          <delta_ts>2009-06-20 02:21:40 -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>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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>127064</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-19 16:40:01 -0700</bug_when>
    <thetext>Darin worries that this memcpy might be slow.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127066</commentid>
    <comment_count>1</comment_count>
      <attachid>31574</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-19 16:44:10 -0700</bug_when>
    <thetext>Created attachment 31574
patch

Notice that the string is kept alive anyway because the
ScriptSourceCode holds a JSC::SourceCode which holds a RefPtr&lt;SourceProvider&gt;
which holds String m_source (via StringSourceProvider : public
JSC::SourceProvider).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127069</commentid>
    <comment_count>2</comment_count>
      <attachid>31576</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-19 16:46:17 -0700</bug_when>
    <thetext>Created attachment 31576
patch

Oops.  Forgot the const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127089</commentid>
    <comment_count>3</comment_count>
      <attachid>31574</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-19 18:12:13 -0700</bug_when>
    <thetext>Comment on attachment 31574
patch

&gt; +    // This same string is actually buried in m_code, but there isn&apos;t a clean
&gt; +    // want to write an accessor for it, so we cache a refernce to it.
&gt; +    String m_source;

&quot;clean want&quot;? How about &quot;clean way&quot;?

But I do think there is a clean way to get at it. Just add a source() member to StringSourceProvider, then call static_cast&lt;StringSourceProvider*&gt;(m_code-&gt;provider())-&gt;source().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127090</commentid>
    <comment_count>4</comment_count>
      <attachid>31576</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-06-19 18:12:47 -0700</bug_when>
    <thetext>Comment on attachment 31576
patch

It&apos;s not really buried all that deeply. I seriously think you could just do static_cast&lt;StringSourceProvider*&gt;(m_code-&gt;provider())-&gt;source(). r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127117</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-20 01:14:24 -0700</bug_when>
    <thetext>&gt; It&apos;s not really buried all that deeply. I seriously think you could just do
&gt; static_cast&lt;StringSourceProvider*&gt;(m_code-&gt;provider())-&gt;source(). r=me

Ah.  I hadn&apos;t considered using a static_cast.  That should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127124</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-20 02:21:40 -0700</bug_when>
    <thetext>Sending        WebCore/ChangeLog
Sending        WebCore/bindings/js/ScriptSourceCode.h
Sending        WebCore/bindings/js/StringSourceProvider.h
Transmitting file data ...
Committed revision 44894.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31574</attachid>
            <date>2009-06-19 16:44:10 -0700</date>
            <delta_ts>2009-06-19 16:46:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>memcpy.patch</filename>
            <type>text/plain</type>
            <size>1788</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDg4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NjEKKworICAgICAgICBSZW1v
dmUgbWVtY3B5IGJ5IGNhY2hpbmcgYSBjb3B5IG9mIHRoZSBzb3VyY2UgY29kZSBTdHJpbmcuICBU
aGlzCisgICAgICAgIGRvZXNuJ3QgYWRkIG1lbW9yeSBvdmVyaGVhZCBiZWNhdXNlIHRoZSBzdHJp
bmcgaXMgYWxyZWFkeSBzdG9yZWQgaW4KKyAgICAgICAgdGhpcyBvYmplY3QsIGp1c3QgaW4gYSB3
YXkgdGhhdCdzIG5vdCBhY2Nlc3NpYmxlIGNsZWFubHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRTb3VyY2VDb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2Rl
OjpTY3JpcHRTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6
OnNvdXJjZSk6CisKIDIwMDktMDYtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkocmV2aXNpb24gNDQ4NzUpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsNyBAQCBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRTb3Vy
Y2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwgPSBLVVJMKCksIGlu
dCBzdGFydExpbmUgPSAxKQogICAgICAgICA6IG1fY29kZShtYWtlU291cmNlKHNvdXJjZSwgdXJs
LmlzTnVsbCgpID8gU3RyaW5nKCkgOiB1cmwuc3RyaW5nKCksIHN0YXJ0TGluZSkpCisgICAgICAg
ICwgbV9zb3VyY2Uoc291cmNlKQogICAgIHsKICAgICB9CiAKQEAgLTUzLDExICs1NCwxNCBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpzU291cmNlQ29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZTsgfQogCi0gICAgLy8gTm90ZSB0aGUgbWVtY3B5IQotICAgIFN0cmlu
ZyBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBTdHJpbmcobV9jb2RlLmRhdGEoKSwgbV9jb2RlLmxl
bmd0aCgpKTsgfQorICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgeyByZXR1cm4gbV9zb3VyY2U7
IH0KIAogcHJpdmF0ZToKICAgICBKU0M6OlNvdXJjZUNvZGUgbV9jb2RlOworCisgICAgLy8gVGhp
cyBzYW1lIHN0cmluZyBpcyBhY3R1YWxseSBidXJpZWQgaW4gbV9jb2RlLCBidXQgdGhlcmUgaXNu
J3QgYSBjbGVhbgorICAgIC8vIHdhbnQgdG8gd3JpdGUgYW4gYWNjZXNzb3IgZm9yIGl0LCBzbyB3
ZSBjYWNoZSBhIHJlZmVybmNlIHRvIGl0LgorICAgIFN0cmluZyBtX3NvdXJjZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31576</attachid>
            <date>2009-06-19 16:46:17 -0700</date>
            <delta_ts>2009-06-19 18:12:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>memcpy.patch</filename>
            <type>text/plain</type>
            <size>1794</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDg4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDktMDYtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NjEKKworICAgICAgICBSZW1v
dmUgbWVtY3B5IGJ5IGNhY2hpbmcgYSBjb3B5IG9mIHRoZSBzb3VyY2UgY29kZSBTdHJpbmcuICBU
aGlzCisgICAgICAgIGRvZXNuJ3QgYWRkIG1lbW9yeSBvdmVyaGVhZCBiZWNhdXNlIHRoZSBzdHJp
bmcgaXMgYWxyZWFkeSBzdG9yZWQgaW4KKyAgICAgICAgdGhpcyBvYmplY3QsIGp1c3QgaW4gYSB3
YXkgdGhhdCdzIG5vdCBhY2Nlc3NpYmxlIGNsZWFubHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRTb3VyY2VDb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2Rl
OjpTY3JpcHRTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6
OnNvdXJjZSk6CisKIDIwMDktMDYtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkocmV2aXNpb24gNDQ4NzUpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiAr
NDEsNyBAQCBjbGFzcyBTY3JpcHRTb3VyY2VDb2RlIHsKIHB1YmxpYzoKICAgICBTY3JpcHRTb3Vy
Y2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBLVVJMJiB1cmwgPSBLVVJMKCksIGlu
dCBzdGFydExpbmUgPSAxKQogICAgICAgICA6IG1fY29kZShtYWtlU291cmNlKHNvdXJjZSwgdXJs
LmlzTnVsbCgpID8gU3RyaW5nKCkgOiB1cmwuc3RyaW5nKCksIHN0YXJ0TGluZSkpCisgICAgICAg
ICwgbV9zb3VyY2Uoc291cmNlKQogICAgIHsKICAgICB9CiAKQEAgLTUzLDExICs1NCwxNCBAQCBw
dWJsaWM6CiAKICAgICBjb25zdCBKU0M6OlNvdXJjZUNvZGUmIGpzU291cmNlQ29kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZTsgfQogCi0gICAgLy8gTm90ZSB0aGUgbWVtY3B5IQotICAgIFN0cmlu
ZyBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBTdHJpbmcobV9jb2RlLmRhdGEoKSwgbV9jb2RlLmxl
bmd0aCgpKTsgfQorICAgIGNvbnN0IFN0cmluZyYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2U7IH0KIAogcHJpdmF0ZToKICAgICBKU0M6OlNvdXJjZUNvZGUgbV9jb2RlOworCisgICAg
Ly8gVGhpcyBzYW1lIHN0cmluZyBpcyBhY3R1YWxseSBidXJpZWQgaW4gbV9jb2RlLCBidXQgdGhl
cmUgaXNuJ3QgYSBjbGVhbgorICAgIC8vIHdhbnQgdG8gd3JpdGUgYW4gYWNjZXNzb3IgZm9yIGl0
LCBzbyB3ZSBjYWNoZSBhIHJlZmVybmNlIHRvIGl0LgorICAgIFN0cmluZyBtX3NvdXJjZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="16209"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>