<?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>104206</bug_id>
          
          <creation_ts>2012-12-05 21:17:27 -0800</creation_ts>
          <short_desc>[V8] Optimize v8StringOrNull() and v8StringOrUndefined()</short_desc>
          <delta_ts>2012-12-05 21:48:49 -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>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="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784550</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-05 21:17:27 -0800</bug_when>
    <thetext>Currently v8StringOrNull() and v8StringOrUndefined() are checking a null string twice. It is redundant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784554</commentid>
    <comment_count>1</comment_count>
      <attachid>177921</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-05 21:18:54 -0800</bug_when>
    <thetext>Created attachment 177921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784555</commentid>
    <comment_count>2</comment_count>
      <attachid>177921</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-05 21:26:26 -0800</bug_when>
    <thetext>Comment on attachment 177921
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.h:161
&gt; +        if (UNLIKELY(!isolate))
&gt; +            isolate = v8::Isolate::GetCurrent();

Some day we&apos;ll make isolate mandatory and remove all these branches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784557</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-05 21:28:28 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 177921 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177921&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:161
&gt; &gt; +        if (UNLIKELY(!isolate))
&gt; &gt; +            isolate = v8::Isolate::GetCurrent();
&gt; 
&gt; Some day we&apos;ll make isolate mandatory and remove all these branches.

I&apos;m doing it today:)

Actually all call sites of v8StringOrNull() and v8StringOrUndefined() have an isolate. Almost all call sites of v8String() have an isolate. (I&apos;ll add v8StringWithCheck(), which has an isolate check, and will use it for call sites that don&apos;t have an isolate.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784567</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-05 21:32:17 -0800</bug_when>
    <thetext>Also I&apos;ve implemented an isolate-version V8 APIs for Local&lt;T&gt;::New() and IsWeak(), which will land this week or next week. It will speed up v8String() and others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784585</commentid>
    <comment_count>5</comment_count>
      <attachid>177921</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 21:48:46 -0800</bug_when>
    <thetext>Comment on attachment 177921
Patch

Clearing flags on attachment: 177921

Committed r136797: &lt;http://trac.webkit.org/changeset/136797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784586</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 21:48:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177921</attachid>
            <date>2012-12-05 21:18:54 -0800</date>
            <delta_ts>2012-12-05 21:48:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104206-20121206141618.patch</filename>
            <type>text/plain</type>
            <size>2728</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzYmFmMzY5MjY0ZTVi
YTUxYWJiMjIxNGVlN2YzMDBkMzAzOTRhMS4uZDE4MzVkMzZlNTRlNjY0OGMwNWExYmYyMzRhNTFj
ZmI4ODIzOTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTEyLTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIE9wdGltaXpl
IHY4U3RyaW5nT3JOdWxsKCkgYW5kIHY4U3RyaW5nT3JVbmRlZmluZWQoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MjA2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHY4U3RyaW5nT3JO
dWxsKCkgYW5kIHY4U3RyaW5nT3JVbmRlZmluZWQoKSBhcmUgY2hlY2tpbmcKKyAgICAgICAgYSBu
dWxsIHN0cmluZyB0d2ljZS4gSXQgaXMgcmVkdW5kYW50LgorCisgICAgICAgIFtkaXYubG9jYWxO
YW1lXQorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaDogMjAuMDMgbnMKKyAgICAgICAgQWZ0ZXIg
dGhpcyBwYXRjaDogIDE5LjM0IG5zCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcu
aDoKKyAgICAgICAgKFdlYkNvcmU6OnY4U3RyaW5nT3JOdWxsKToKKyAgICAgICAgKFdlYkNvcmU6
OnY4U3RyaW5nT3JVbmRlZmluZWQpOgorCisyMDEyLTEyLTA1ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2
NDgxLgogICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMzY0ODEKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzg2OApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA3NWUyYWQ3ZGJjNTQzODgyZWFk
NmQxY2U3OTM0YmU4MmQ3MWZiNzFiLi5mMWU4OTQyOTg0MDM2NTQ3NzE2ODAxMjA5ZDI1MTczNDBh
OWNlZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMTU1LDE0
ICsxNTUsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+c3RyaW5nQ2FjaGUoKS0+djhFeHRlcm5hbFN0cmluZyhz
dHJpbmdJbXBsLCBpc29sYXRlKTsKICAgICB9CiAKLSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHY4U3RyaW5nT3JOdWxsKGNvbnN0IFN0cmluZyYgc3RyLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IDApCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFN0cmluZ09yTnVs
bChjb25zdCBTdHJpbmcmIHN0cmluZywgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ci5pc051bGwoKSA/IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51
bGxXaXRoQ2hlY2soaXNvbGF0ZSkpIDogdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4U3RyaW5nKHN0
ciwgaXNvbGF0ZSkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWlzb2xhdGUpKQorICAgICAgICAg
ICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CisgICAgICAgIGlmIChzdHJp
bmcuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gdjhOdWxsKGlzb2xhdGUpOworICAgICAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+c3RyaW5nQ2FjaGUoKS0+
djhFeHRlcm5hbFN0cmluZyhzdHJpbmcuaW1wbCgpLCBpc29sYXRlKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JVbmRlZmluZWQoY29uc3QgU3Ry
aW5nJiBzdHIsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKKyAgICBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHY4U3RyaW5nT3JVbmRlZmluZWQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdHIuaXNOdWxs
KCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6OlVuZGVmaW5lZCgpKSA6IHY4OjpIYW5kbGU8
djg6OlZhbHVlPih2OFN0cmluZyhzdHIsIGlzb2xhdGUpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZ
KCFpc29sYXRlKSkKKyAgICAgICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVu
dCgpOworICAgICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoaXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5zdHJpbmdDYWNoZSgpLT52OEV4dGVybmFsU3RyaW5nKHN0cmluZy5pbXBs
KCksIGlzb2xhdGUpOwogICAgIH0KIAogICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpJbnRlZ2Vy
PiB2OEludGVnZXIoaW50IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>