<?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>104066</bug_id>
          
          <creation_ts>2012-12-04 17:10:47 -0800</creation_ts>
          <short_desc>[V8] Use ScopedPersistent for IntegerCache::smallIntegers</short_desc>
          <delta_ts>2012-12-04 21:54:12 -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>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>783133</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 17:10:47 -0800</bug_when>
    <thetext>We can use ScopedPersistent for IntegerCache::smallIntegers instead of manual Persistent::New().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783137</commentid>
    <comment_count>1</comment_count>
      <attachid>177612</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 17:12:43 -0800</bug_when>
    <thetext>Created attachment 177612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783138</commentid>
    <comment_count>2</comment_count>
      <attachid>177612</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 17:14:12 -0800</bug_when>
    <thetext>Comment on attachment 177612
Patch

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

&gt; Source/WebCore/bindings/v8/V8ValueCache.h:91
&gt; -    v8::Persistent&lt;v8::Integer&gt; m_smallIntegers[numberOfCachedSmallIntegers];
&gt; +    ScopedPersistent&lt;v8::Integer&gt; m_smallIntegers[numberOfCachedSmallIntegers];

Does C++ actually call all these destructors?  I guess it must.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783140</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 17:16:20 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 177612 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177612&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8ValueCache.h:91
&gt; &gt; -    v8::Persistent&lt;v8::Integer&gt; m_smallIntegers[numberOfCachedSmallIntegers];
&gt; &gt; +    ScopedPersistent&lt;v8::Integer&gt; m_smallIntegers[numberOfCachedSmallIntegers];
&gt; 
&gt; Does C++ actually call all these destructors?  I guess it must.

I think it should. The following code worked in my environment:

class A {
public:
  A() { printf(&quot;constructor&quot;); }
  ~A() { printf(&quot;destructor&quot;); }
};

class B {
public:
  A array[100];
};

void f() {
  B b; // constructors and destructors are called.
}

int main(void) {
  f();
  return 0;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783209</commentid>
    <comment_count>4</comment_count>
      <attachid>177612</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 18:13:41 -0800</bug_when>
    <thetext>Comment on attachment 177612
Patch

Attachment 177612 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15133624

New failing tests:
fast/filesystem/workers/file-writer-sync-write-overlapped.html
http/tests/filesystem/workers/resolve-url.html
http/tests/security/cross-origin-worker-websql-allowed.html
fast/filesystem/workers/file-writer-gc-blob.html
http/tests/security/contentSecurityPolicy/worker-eval-blocked.html
http/tests/filesystem/workers/resolve-url-sync.html
fast/filesystem/workers/file-from-file-entry-sync.html
fast/files/workers/worker-read-file-sync.html
fast/filesystem/workers/file-writer-empty-blob.html
fast/files/workers/worker-read-blob-async.html
fast/canvas/webgl/worker-data-view-test.html
fast/filesystem/workers/detached-frame-crash.html
http/tests/eventsource/workers/eventsource-simple.html
http/tests/security/contentSecurityPolicy/worker-connect-src-blocked.html
fast/files/workers/worker-read-blob-sync.html
fast/files/workers/worker-read-file-async.html
fast/filesystem/workers/file-writer-events.html
http/tests/security/contentSecurityPolicy/worker-connect-src-allowed.html
fast/filesystem/workers/file-writer-sync-truncate-extend.html
fast/filesystem/workers/file-writer-truncate-extend.html
fast/filesystem/workers/file-writer-write-overlapped.html
fast/filesystem/workers/file-entry-to-uri-sync.html
http/tests/security/cross-origin-worker-websql.html
http/tests/security/contentSecurityPolicy/worker-set-timeout-blocked.html
http/tests/media/video-throttled-load-metadata.html
fast/files/workers/worker-apply-blob-url-to-xhr.html
fast/files/workers/inline-worker-via-blob-url.html
fast/filesystem/workers/file-from-file-entry.html
fast/filesystem/workers/simple-persistent-sync.html
http/tests/security/contentSecurityPolicy/worker-function-function-blocked.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783336</commentid>
    <comment_count>5</comment_count>
      <attachid>177659</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 20:51:59 -0800</bug_when>
    <thetext>Created attachment 177659
fixed crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783343</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 21:02:44 -0800</bug_when>
    <thetext>No isolate for us, huh?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783348</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 21:05:40 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; No isolate for us, huh?

It looks like more work is needed to use Isolate in IntegerCache()&apos;s constructor. If we use v8::Integer::New(value, isolate), the code crashes in workers. Maybe we need to change the initialization order around the isolate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783353</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 21:08:42 -0800</bug_when>
    <thetext>I doubt its a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783375</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 21:31:43 -0800</bug_when>
    <thetext>BTW, v8Integer() is still much slower than jsNumber(). This affects performance of e.g. nodeType, which is one of the most frequently used DOM attributes in our real-world profiling.

What jsNumber(value) does:

  u.asBits.tag = Int32Tag;  // Just set a tag onto a JSValue
  u.asBits.payload = value;  // ...and set a value.

What v8Integer(value) does:

  Isolate* isolate = info.GetIsolate();  // Read a void* pointer located at some offset from the info.
  if (isolate) {
    V8PerIsolateData* data = isolate-&gt;GetData();  // Read a void* pointer located at some offset from the isolate.
    IntegerCache* cache = data-&gt;integerCache();
    if (0 &lt;= value &amp;&amp; value &lt; 64) {
      ScopedPersistent&lt;Integer&gt; v8Value = cache-&gt;smallIntegers[value];
      return v8Value.get();
    }
  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783377</commentid>
    <comment_count>10</comment_count>
      <attachid>177659</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 21:37:00 -0800</bug_when>
    <thetext>Comment on attachment 177659
fixed crashes

Clearing flags on attachment: 177659

Committed r136638: &lt;http://trac.webkit.org/changeset/136638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783378</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 21:37:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783382</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-04 21:47:34 -0800</bug_when>
    <thetext>&gt; BTW, v8Integer() is still much slower than jsNumber(). This affects performance of e.g. nodeType, which is one of the most frequently used DOM attributes in our real-world profiling.

V8 should give us an API for making a SMI directly.  I think it just amounts to ((value &lt;&lt; 1) | 1) and a reinterpret cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783387</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-04 21:54:12 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; BTW, v8Integer() is still much slower than jsNumber(). This affects performance of e.g. nodeType, which is one of the most frequently used DOM attributes in our real-world profiling.
&gt; 
&gt; V8 should give us an API for making a SMI directly.  I think it just amounts to ((value &lt;&lt; 1) | 1) and a reinterpret cast.

Yes, that sounds like a right way to fix the problem.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177612</attachid>
            <date>2012-12-04 17:12:43 -0800</date>
            <delta_ts>2012-12-04 20:51:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104066-20121205101008.patch</filename>
            <type>text/plain</type>
            <size>4440</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2UyYjg4NWYwZDA4NDYw
ZDZjYjRhNzRlMmQ3NzU1YTZhNzBiMTA5ZC4uNzEyNTIxMTAwMTM0ZTYyMDdiNzBiMDUwNGFkZjhj
OWQ1ODc2NzdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI4IEBACiAyMDEyLTEyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIFVzZSBTY29w
ZWRQZXJzaXN0ZW50IGZvciBJbnRlZ2VyQ2FjaGU6OnNtYWxsSW50ZWdlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiB1c2UgU2NvcGVkUGVy
c2lzdGVudCBmb3IgSW50ZWdlckNhY2hlOjpzbWFsbEludGVnZXJzCisgICAgICAgIGluc3RlYWQg
b2YgbWFudWFsIFBlcnNpc3RlbnQ6Ok5ldygpLgorCisgICAgICAgIEkgY29uZmlybWVkIG5vIHBl
cmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4gQmluZGluZ3Mvc2Nyb2xsLXRvcC5odG1sCisKKyAgICAg
ICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRl
RGF0YTo6VjhQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhWYWx1ZUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVnZXJDYWNoZTo6SW50ZWdlckNhY2hlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaDoKKyAgICAgICAgKEludGVnZXJD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlZ2VyQ2FjaGU6OnY4SW50ZWdlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlZ2VyQ2FjaGU6OnY4VW5zaWduZWRJbnRlZ2VyKToKKworMjAxMi0x
Mi0wNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW1Y4
XSBSZW1vdmUgSW50ZWdlckNhY2hlOjptX2luaXRpYWxpemVkCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM5NzgKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRleCA0NTFiNjJiZTU0NzBlMmZh
ODczOGE3N2I2MTFlYWIyMDAyZGZiN2E4Li5mYzQyYjBiYWZmMzhiNjIzYjE4NDQ2OWZmNjA4OTRh
NTgxMDNkMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklz
b2xhdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xh
dGVEYXRhLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFY4UGVy
SXNvbGF0ZURhdGE6OlY4UGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAg
OiBtX3N0cmluZ0NhY2hlKGFkb3B0UHRyKG5ldyBTdHJpbmdDYWNoZSgpKSkKLSAgICAsIG1faW50
ZWdlckNhY2hlKGFkb3B0UHRyKG5ldyBJbnRlZ2VyQ2FjaGUoKSkpCisgICAgLCBtX2ludGVnZXJD
YWNoZShhZG9wdFB0cihuZXcgSW50ZWdlckNhY2hlKGlzb2xhdGUpKSkKICAgICAsIG1fZG9tRGF0
YVN0b3JlKDApCiAgICAgLCBtX2hpZGRlblByb3BlcnR5TmFtZShhZG9wdFB0cihuZXcgVjhIaWRk
ZW5Qcm9wZXJ0eU5hbWUoKSkpCiAgICAgLCBtX2NvbnN0cnVjdG9yTW9kZShDb25zdHJ1Y3Rvck1v
ZGU6OkNyZWF0ZU5ld09iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VmFsdWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVl
Q2FjaGUuY3BwCmluZGV4IGNkNzcxMTNkZjQzNzdlYWMxN2U5ZGY1NzU3MDRjYjM4OTk0NDRkODgu
LjAxYWFiZjFlMmU0ODEzZWFiOTQ2OWE1MGVkZTUzNzk5NmIzZWFjNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcApAQCAtMTAwLDE5ICsxMDAsMTEgQEAg
djg6OkxvY2FsPHY4OjpTdHJpbmc+IFN0cmluZ0NhY2hlOjp2OEV4dGVybmFsU3RyaW5nU2xvdyhT
dHJpbmdJbXBsKiBzdHJpbmdJbXBsLAogICAgIHJldHVybiBuZXdTdHJpbmc7CiB9CiAKLUludGVn
ZXJDYWNoZTo6SW50ZWdlckNhY2hlKCkKK0ludGVnZXJDYWNoZTo6SW50ZWdlckNhY2hlKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAg
ICBmb3IgKGludCB2YWx1ZSA9IDA7IHZhbHVlIDwgbnVtYmVyT2ZDYWNoZWRTbWFsbEludGVnZXJz
OyB2YWx1ZSsrKQotICAgICAgICBtX3NtYWxsSW50ZWdlcnNbdmFsdWVdID0gdjg6OlBlcnNpc3Rl
bnQ8djg6OkludGVnZXI+OjpOZXcodjg6OkludGVnZXI6Ok5ldyh2YWx1ZSkpOwotfQotCi1JbnRl
Z2VyQ2FjaGU6On5JbnRlZ2VyQ2FjaGUoKQotewotICAgIGZvciAoaW50IHZhbHVlID0gMDsgdmFs
dWUgPCBudW1iZXJPZkNhY2hlZFNtYWxsSW50ZWdlcnM7IHZhbHVlKyspIHsKLSAgICAgICAgbV9z
bWFsbEludGVnZXJzW3ZhbHVlXS5EaXNwb3NlKCk7Ci0gICAgICAgIG1fc21hbGxJbnRlZ2Vyc1t2
YWx1ZV0uQ2xlYXIoKTsKLSAgICB9CisgICAgICAgIG1fc21hbGxJbnRlZ2Vyc1t2YWx1ZV0uc2V0
KHY4OjpJbnRlZ2VyOjpOZXcodmFsdWUsIGlzb2xhdGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaAppbmRleCBm
MzA4MjAwYzY3NTBjYWQ0OWVmNGFlNDhhZTM0NjgwYTJmNDExMTgyLi4zMmE5YjdhZjQzNDE5MThh
ZmU2YzhhNGJkOGUzY2Q5NmRlZTE0N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFZhbHVlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFZhbHVlQ2FjaGUuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBWOFZhbHVlQ2FjaGVfaAog
I2RlZmluZSBWOFZhbHVlQ2FjaGVfaAogCisjaW5jbHVkZSAiU2NvcGVkUGVyc2lzdGVudC5oIgog
I2luY2x1ZGUgPHY4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC03MCwyNSArNzEsMjQgQEAgY29uc3QgaW50IG51bWJlck9mQ2FjaGVkU21h
bGxJbnRlZ2VycyA9IDY0OwogCiBjbGFzcyBJbnRlZ2VyQ2FjaGUgewogcHVibGljOgotICAgIElu
dGVnZXJDYWNoZSgpOwotICAgIH5JbnRlZ2VyQ2FjaGUoKTsKKyAgICBleHBsaWNpdCBJbnRlZ2Vy
Q2FjaGUodjg6Oklzb2xhdGUqKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OkludGVnZXI+IHY4SW50
ZWdlcihpbnQgdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKICAgICAgICAgaWYg
KDAgPD0gdmFsdWUgJiYgdmFsdWUgPCBudW1iZXJPZkNhY2hlZFNtYWxsSW50ZWdlcnMpCi0gICAg
ICAgICAgICByZXR1cm4gbV9zbWFsbEludGVnZXJzW3ZhbHVlXTsKKyAgICAgICAgICAgIHJldHVy
biBtX3NtYWxsSW50ZWdlcnNbdmFsdWVdLmdldCgpOwogICAgICAgICByZXR1cm4gdjg6OkludGVn
ZXI6Ok5ldyh2YWx1ZSwgaXNvbGF0ZSk7CiAgICAgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6SW50
ZWdlcj4gdjhVbnNpZ25lZEludGVnZXIodW5zaWduZWQgdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51
bWJlck9mQ2FjaGVkU21hbGxJbnRlZ2VycykpCi0gICAgICAgICAgICByZXR1cm4gbV9zbWFsbElu
dGVnZXJzW3ZhbHVlXTsKKyAgICAgICAgICAgIHJldHVybiBtX3NtYWxsSW50ZWdlcnNbdmFsdWVd
LmdldCgpOwogICAgICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25lZCh2YWx1
ZSwgaXNvbGF0ZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpJ
bnRlZ2VyPiBtX3NtYWxsSW50ZWdlcnNbbnVtYmVyT2ZDYWNoZWRTbWFsbEludGVnZXJzXTsKKyAg
ICBTY29wZWRQZXJzaXN0ZW50PHY4OjpJbnRlZ2VyPiBtX3NtYWxsSW50ZWdlcnNbbnVtYmVyT2ZD
YWNoZWRTbWFsbEludGVnZXJzXTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177659</attachid>
            <date>2012-12-04 20:51:59 -0800</date>
            <delta_ts>2012-12-04 21:37:00 -0800</delta_ts>
            <desc>fixed crashes</desc>
            <filename>bug-104066-20121205134924.patch</filename>
            <type>text/plain</type>
            <size>3435</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ1YzIwMTI0NzQ4ZTIx
ZTlhMmIwZmZmNjJlYzU1Y2E4YjRiZmZlOS4uZjFlMDIwODY1M2UxZWJjM2Y3OTFhN2ZkODc0MmY0
M2U0NjFkZGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFVzZSBTY29w
ZWRQZXJzaXN0ZW50IGZvciBJbnRlZ2VyQ2FjaGU6OnNtYWxsSW50ZWdlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDA2NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiB1c2UgU2NvcGVkUGVy
c2lzdGVudCBmb3IgSW50ZWdlckNhY2hlOjpzbWFsbEludGVnZXJzCisgICAgICAgIGluc3RlYWQg
b2YgbWFudWFsIFBlcnNpc3RlbnQ6Ok5ldygpLgorCisgICAgICAgIEkgY29uZmlybWVkIG5vIHBl
cmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4gQmluZGluZ3Mvc2Nyb2xsLXRvcC5odG1sCisKKyAgICAg
ICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRl
RGF0YTo6VjhQZXJJc29sYXRlRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhWYWx1ZUNh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVnZXJDYWNoZTo6SW50ZWdlckNhY2hlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFZhbHVlQ2FjaGUuaDoKKyAgICAgICAgKEludGVnZXJD
YWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlZ2VyQ2FjaGU6OnY4SW50ZWdlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlZ2VyQ2FjaGU6OnY4VW5zaWduZWRJbnRlZ2VyKToKKwogMjAxMi0x
Mi0wNCAgQW50aG9ueSBTY2lhbiAgPGFzY2lhbkByaW0uY29tPgogCiAgICAgICAgIFN0YXRpYyBj
b2RlIGFuYWx5c2lzIHdhcm5pbmcgZml4ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFZhbHVlQ2FjaGUuY3BwCmluZGV4IGNkNzcxMTNkZjQzNzdlYWMxN2U5ZGY1NzU3MDRjYjM4OTk0
NDRkODguLjRmODFiMzk4YTQ5Y2Y2ZDUzOTk3ZjNlMTA5ZTk2YjY5NGFiYmJiYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhWYWx1ZUNhY2hlLmNwcApAQCAtMTA0LDE1ICsxMDQs
NyBAQCBJbnRlZ2VyQ2FjaGU6OkludGVnZXJDYWNoZSgpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwogICAgIGZvciAoaW50IHZhbHVlID0gMDsgdmFsdWUgPCBudW1iZXJPZkNh
Y2hlZFNtYWxsSW50ZWdlcnM7IHZhbHVlKyspCi0gICAgICAgIG1fc21hbGxJbnRlZ2Vyc1t2YWx1
ZV0gPSB2ODo6UGVyc2lzdGVudDx2ODo6SW50ZWdlcj46Ok5ldyh2ODo6SW50ZWdlcjo6TmV3KHZh
bHVlKSk7Ci19Ci0KLUludGVnZXJDYWNoZTo6fkludGVnZXJDYWNoZSgpCi17Ci0gICAgZm9yIChp
bnQgdmFsdWUgPSAwOyB2YWx1ZSA8IG51bWJlck9mQ2FjaGVkU21hbGxJbnRlZ2VyczsgdmFsdWUr
KykgewotICAgICAgICBtX3NtYWxsSW50ZWdlcnNbdmFsdWVdLkRpc3Bvc2UoKTsKLSAgICAgICAg
bV9zbWFsbEludGVnZXJzW3ZhbHVlXS5DbGVhcigpOwotICAgIH0KKyAgICAgICAgbV9zbWFsbElu
dGVnZXJzW3ZhbHVlXS5zZXQodjg6OkludGVnZXI6Ok5ldyh2YWx1ZSkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFZhbHVlQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5o
CmluZGV4IGYzMDgyMDBjNjc1MGNhZDQ5ZWY0YWU0OGFlMzQ2ODBhMmY0MTExODIuLjMwNTc3YzM5
YzVmNzY4MmY1NTIzMzI4YmI4Mzk5ZDEyNWExMmQwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4VmFsdWVDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4VmFsdWVDYWNoZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFY4VmFsdWVD
YWNoZV9oCiAjZGVmaW5lIFY4VmFsdWVDYWNoZV9oCiAKKyNpbmNsdWRlICJTY29wZWRQZXJzaXN0
ZW50LmgiCiAjaW5jbHVkZSA8djguaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTcxLDI0ICs3MiwyMyBAQCBjb25zdCBpbnQgbnVtYmVyT2ZD
YWNoZWRTbWFsbEludGVnZXJzID0gNjQ7CiBjbGFzcyBJbnRlZ2VyQ2FjaGUgewogcHVibGljOgog
ICAgIEludGVnZXJDYWNoZSgpOwotICAgIH5JbnRlZ2VyQ2FjaGUoKTsKIAogICAgIHY4OjpIYW5k
bGU8djg6OkludGVnZXI+IHY4SW50ZWdlcihpbnQgdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogICAgIHsKICAgICAgICAgaWYgKDAgPD0gdmFsdWUgJiYgdmFsdWUgPCBudW1iZXJPZkNhY2hl
ZFNtYWxsSW50ZWdlcnMpCi0gICAgICAgICAgICByZXR1cm4gbV9zbWFsbEludGVnZXJzW3ZhbHVl
XTsKKyAgICAgICAgICAgIHJldHVybiBtX3NtYWxsSW50ZWdlcnNbdmFsdWVdLmdldCgpOwogICAg
ICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyh2YWx1ZSwgaXNvbGF0ZSk7CiAgICAgfQogCiAg
ICAgdjg6OkhhbmRsZTx2ODo6SW50ZWdlcj4gdjhVbnNpZ25lZEludGVnZXIodW5zaWduZWQgdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlIDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG51bWJlck9mQ2FjaGVkU21hbGxJbnRlZ2VycykpCi0gICAgICAg
ICAgICByZXR1cm4gbV9zbWFsbEludGVnZXJzW3ZhbHVlXTsKKyAgICAgICAgICAgIHJldHVybiBt
X3NtYWxsSW50ZWdlcnNbdmFsdWVdLmdldCgpOwogICAgICAgICByZXR1cm4gdjg6OkludGVnZXI6
Ok5ld0Zyb21VbnNpZ25lZCh2YWx1ZSwgaXNvbGF0ZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpJbnRlZ2VyPiBtX3NtYWxsSW50ZWdlcnNbbnVtYmVyT2ZDYWNo
ZWRTbWFsbEludGVnZXJzXTsKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpJbnRlZ2VyPiBtX3Nt
YWxsSW50ZWdlcnNbbnVtYmVyT2ZDYWNoZWRTbWFsbEludGVnZXJzXTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>