<?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>61544</bug_id>
          
          <creation_ts>2011-05-26 11:00:04 -0700</creation_ts>
          <short_desc>Overload resolution in generated JSC bindings could be more efficient.</short_desc>
          <delta_ts>2011-05-26 12:25:21 -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="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>410596</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-26 11:00:04 -0700</bug_when>
    <thetext>The overload resolution code generated by CodeGeneratorJS.pm currently looks like this:

EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionBufferSubData(ExecState* exec)
{
    if ((exec-&gt;argumentCount() == 3 &amp;&amp; (exec-&gt;argument(2).isNull() || (exec-&gt;argument(2).isObject() &amp;&amp; asObject(exec-&gt;argument(2))-&gt;inherits(&amp;JSArrayBuffer::s_info)))))
        return jsWebGLRenderingContextPrototypeFunctionBufferSubData1(exec);
    if ((exec-&gt;argumentCount() == 3 &amp;&amp; (exec-&gt;argument(2).isNull() || (exec-&gt;argument(2).isObject() &amp;&amp; asObject(exec-&gt;argument(2))-&gt;inherits(&amp;JSArrayBufferView::s_info)))))
        return jsWebGLRenderingContextPrototypeFunctionBufferSubData2(exec);
    return throwVMTypeError(exec);
}

This could be a lot more efficient (no need for all those calls to argumentCount() and argument().)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410601</commentid>
    <comment_count>1</comment_count>
      <attachid>95006</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-26 11:04:22 -0700</bug_when>
    <thetext>Created attachment 95006
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410602</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-26 11:05:29 -0700</bug_when>
    <thetext>For reference, same function after this patch:

EncodedJSValue JSC_HOST_CALL jsWebGLRenderingContextPrototypeFunctionBufferSubData(ExecState* exec)
{
    size_t argsCount = exec-&gt;argumentCount();
    JSValue arg2(exec-&gt;argument(2));
    if ((argsCount == 3 &amp;&amp; (arg2.isNull() || (arg2.isObject() &amp;&amp; asObject(arg2)-&gt;inherits(&amp;JSArrayBuffer::s_info)))))
        return jsWebGLRenderingContextPrototypeFunctionBufferSubData1(exec);
    if ((argsCount == 3 &amp;&amp; (arg2.isNull() || (arg2.isObject() &amp;&amp; asObject(arg2)-&gt;inherits(&amp;JSArrayBufferView::s_info)))))
        return jsWebGLRenderingContextPrototypeFunctionBufferSubData2(exec);
    return throwVMTypeError(exec);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410607</commentid>
    <comment_count>3</comment_count>
      <attachid>95006</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-26 11:08:48 -0700</bug_when>
    <thetext>Comment on attachment 95006
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410728</commentid>
    <comment_count>4</comment_count>
      <attachid>95006</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-26 12:25:13 -0700</bug_when>
    <thetext>Comment on attachment 95006
Proposed patch

Clearing flags on attachment: 95006

Committed r87412: &lt;http://trac.webkit.org/changeset/87412&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410729</commentid>
    <comment_count>5</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-05-26 12:25:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95006</attachid>
            <date>2011-05-26 11:04:22 -0700</date>
            <delta_ts>2011-05-26 12:25:13 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-61544.diff</filename>
            <type>text/plain</type>
            <size>7270</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YjVmMGQ0Li45N2ZmOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkg
QEAKIDIwMTEtMDUtMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE92ZXJsb2FkIHJlc29s
dXRpb24gaW4gZ2VuZXJhdGVkIEpTQyBiaW5kaW5ncyBjb3VsZCBiZSBtb3JlIGVmZmljaWVudC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTQ0CisK
KyAgICAgICAgT25seSBmZXRjaCB0aGUgYXJndW1lbnRzIG9uY2UsIGFuZCBub3QgdW50aWwgdGhl
eSBhcmUgbmVlZGVkIChsZXNzIHdvcmsKKyAgICAgICAgaW4gdGhlIGNhc2Ugb2YgYW4gZWFybHkg
cmV0dXJuLikKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOiBSZWJh
c2VsaW5lZC4KKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZCk6CisKKzIwMTEtMDUtMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCiAKICAgICAg
ICAgSlNDIERPTSBiaW5kaW5nczogRXhlY1N0YXRlOjphcmd1bWVudENvdW50KCkgaXMgc2l6ZV90
LCBub3QgaW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCBhZTM4ZjIxLi45OGIwMjY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTEzOSwxMSAr
MTEzOSwxMiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiAgICAgbXkg
JGZ1bmN0aW9uID0gc2hpZnQ7CiAKICAgICBteSBAYW5kRXhwcmVzc2lvbiA9ICgpOwotICAgIHB1
c2goQGFuZEV4cHJlc3Npb24sICJleGVjLT5hcmd1bWVudENvdW50KCkgPT0gJG51bVBhcmFtZXRl
cnMiKTsKKyAgICBwdXNoKEBhbmRFeHByZXNzaW9uLCAiYXJnc0NvdW50ID09ICRudW1QYXJhbWV0
ZXJzIik7CiAgICAgbXkgJHBhcmFtZXRlckluZGV4ID0gMDsKKyAgICBteSAldXNlZEFyZ3VtZW50
cyA9ICgpOwogICAgIGZvcmVhY2ggJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7CiAgICAgICAgIGxhc3QgaWYgJHBhcmFtZXRlckluZGV4ID49ICRudW1QYXJhbWV0ZXJzOwot
ICAgICAgICBteSAkdmFsdWUgPSAiZXhlYy0+YXJndW1lbnQoJHBhcmFtZXRlckluZGV4KSI7Cisg
ICAgICAgIG15ICR2YWx1ZSA9ICJhcmckcGFyYW1ldGVySW5kZXgiOwogICAgICAgICBteSAkdHlw
ZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgkcGFyYW1ldGVyLT50eXBlKTsKIAogICAg
ICAgICAjIE9ubHkgRE9NU3RyaW5nIG9yIHdyYXBwZXIgdHlwZXMgYXJlIGNoZWNrZWQuCkBAIC0x
MTUyLDE3ICsxMTUzLDIwIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24K
ICAgICAgICAgIyBiZSBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdmlhIC50b1N0cmluZykuCiAgICAg
ICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICAg
ICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8
ICR7dmFsdWV9LmlzU3RyaW5nKCkgfHwgJHt2YWx1ZX0uaXNPYmplY3QoKSkiKTsKKyAgICAgICAg
ICAgICR1c2VkQXJndW1lbnRzeyRwYXJhbWV0ZXJJbmRleH0gPSAxOwogICAgICAgICB9IGVsc2lm
ICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbGJhY2sifSkgewogICAgICAg
ICAgICAgIyBGb3IgQ2FsbGJhY2tzIG9ubHkgY2hlY2tzIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9y
IG9iamVjdC4KICAgICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0uaXNO
dWxsKCkgfHwgJHt2YWx1ZX0uaXNPYmplY3QoKSkiKTsKKyAgICAgICAgICAgICR1c2VkQXJndW1l
bnRzeyRwYXJhbWV0ZXJJbmRleH0gPSAxOwogICAgICAgICB9IGVsc2lmICghSXNOYXRpdmVUeXBl
KCR0eXBlKSkgewogICAgICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigke3ZhbHVlfS5p
c051bGwoKSB8fCAoJHt2YWx1ZX0uaXNPYmplY3QoKSAmJiBhc09iamVjdCgke3ZhbHVlfSktPmlu
aGVyaXRzKCZKUyR7dHlwZX06OnNfaW5mbykpKSIpOworICAgICAgICAgICAgJHVzZWRBcmd1bWVu
dHN7JHBhcmFtZXRlckluZGV4fSA9IDE7CiAgICAgICAgIH0KICAgICAgICAgJHBhcmFtZXRlcklu
ZGV4Kys7CiAgICAgfQogICAgIG15ICRyZXMgPSBqb2luKCIgJiYgIiwgQGFuZEV4cHJlc3Npb24p
OwogICAgICRyZXMgPSAiKCRyZXMpIiBpZiBAYW5kRXhwcmVzc2lvbiA+IDE7Ci0gICAgcmV0dXJu
ICRyZXM7CisgICAgcmV0dXJuICgkcmVzLCBrZXlzICV1c2VkQXJndW1lbnRzKTsKIH0KIAogc3Vi
IEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2sKQEAgLTExNzEsMTQgKzExNzUsMjAgQEAg
c3ViIEdlbmVyYXRlRnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2sKIAogICAgIG15IEBvckV4cHJlc3Np
b24gPSAoKTsKICAgICBteSAkbnVtUGFyYW1ldGVycyA9IDA7CisgICAgbXkgQG5lZWRlZEFyZ3Vt
ZW50cyA9ICgpOworCiAgICAgZm9yZWFjaCAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1l
dGVyc30pIHsKICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJP
cHRpb25hbCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEBvckV4cHJlc3Npb24sIEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrRXhwcmVzc2lvbigkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uKSk7CisgICAg
ICAgICAgICBteSAoJGV4cHJlc3Npb24sIEB1c2VkQXJndW1lbnRzKSA9IEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrRXhwcmVzc2lvbigkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uKTsKKyAgICAgICAg
ICAgIHB1c2goQG9yRXhwcmVzc2lvbiwgJGV4cHJlc3Npb24pOworICAgICAgICAgICAgcHVzaChA
bmVlZGVkQXJndW1lbnRzLCBAdXNlZEFyZ3VtZW50cyk7CiAgICAgICAgIH0KICAgICAgICAgJG51
bVBhcmFtZXRlcnMrKzsKICAgICB9Ci0gICAgcHVzaChAb3JFeHByZXNzaW9uLCBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51bVBhcmFtZXRlcnMsICRmdW5jdGlvbikpOwotICAg
IHJldHVybiBqb2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbik7CisgICAgbXkgKCRleHByZXNzaW9u
LCBAdXNlZEFyZ3VtZW50cykgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Npb24oJG51
bVBhcmFtZXRlcnMsICRmdW5jdGlvbik7CisgICAgcHVzaChAb3JFeHByZXNzaW9uLCAkZXhwcmVz
c2lvbik7CisgICAgcHVzaChAbmVlZGVkQXJndW1lbnRzLCBAdXNlZEFyZ3VtZW50cyk7CisgICAg
cmV0dXJuIChqb2luKCIgfHwgIiwgQG9yRXhwcmVzc2lvbiksIEBuZWVkZWRBcmd1bWVudHMpOwog
fQogCiBzdWIgR2VuZXJhdGVPdmVybG9hZGVkUHJvdG90eXBlRnVuY3Rpb24KQEAgLTExOTgsOSAr
MTIwOCwyMCBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkUHJvdG90eXBlRnVuY3Rpb24KICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlv
bk5hbWV9KEV4ZWNTdGF0ZSogZXhlYylcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVO
RCk7CiB7CisgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKIEVO
RAorCisgICAgbXkgJWZldGNoZWRBcmd1bWVudHMgPSAoKTsKKwogICAgIGZvcmVhY2ggbXkgJG92
ZXJsb2FkIChAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319KSB7Ci0gICAgICAgIG15ICRwYXJhbWV0
ZXJzQ2hlY2sgPSBHZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKCRvdmVybG9hZCk7Cisg
ICAgICAgIG15ICgkcGFyYW1ldGVyc0NoZWNrLCBAbmVlZGVkQXJndW1lbnRzKSA9IEdlbmVyYXRl
RnVuY3Rpb25QYXJhbWV0ZXJzQ2hlY2soJG92ZXJsb2FkKTsKKworICAgICAgICBmb3JlYWNoIG15
ICRwYXJhbWV0ZXJJbmRleCAoQG5lZWRlZEFyZ3VtZW50cykgeworICAgICAgICAgICAgbmV4dCBp
ZiBleGlzdHMgJGZldGNoZWRBcmd1bWVudHN7JHBhcmFtZXRlckluZGV4fTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgYXJnJHBhcmFtZXRlckluZGV4KGV4ZWMt
PmFyZ3VtZW50KCRwYXJhbWV0ZXJJbmRleCkpO1xuIik7CisgICAgICAgICAgICAkZmV0Y2hlZEFy
Z3VtZW50c3skcGFyYW1ldGVySW5kZXh9ID0gMTsKKyAgICAgICAgfQorCiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICgkcGFyYW1ldGVyc0NoZWNrKVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gJHtmdW5jdGlvbk5hbWV9JG92ZXJsb2Fk
LT57b3ZlcmxvYWRJbmRleH0oZXhlYyk7XG4iKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDM0Zjc0
NzEuLmRkYWYxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNjE5LDE1ICsxNjE5LDE4IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDUoCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICBpZiAoKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyICYmIChleGVjLT5hcmd1bWVudCgwKS5p
c051bGwoKSB8fCAoZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSAmJiBhc09iamVjdChleGVj
LT5hcmd1bWVudCgwKSktPmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpKSAmJiAoZXhlYy0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWRPck51bGwoKSB8fCBleGVjLT5hcmd1bWVudCgxKS5pc1N0
cmluZygpIHx8IGV4ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpKSkKKyAgICBzaXplX3QgYXJn
c0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIEpTVmFsdWUgYXJnMShleGVjLT5h
cmd1bWVudCgxKSk7CisgICAgSlNWYWx1ZSBhcmcwKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBp
ZiAoKGFyZ3NDb3VudCA9PSAyICYmIChhcmcwLmlzTnVsbCgpIHx8IChhcmcwLmlzT2JqZWN0KCkg
JiYgYXNPYmplY3QoYXJnMCktPmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpKSAmJiAoYXJn
MS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IGFyZzEuaXNTdHJpbmcoKSB8fCBhcmcxLmlzT2JqZWN0
KCkpKSkKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDEoZXhlYyk7Ci0gICAgaWYgKChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSAmJiAo
ZXhlYy0+YXJndW1lbnQoMCkuaXNOdWxsKCkgfHwgKGV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpLT5pbmhlcml0cygmSlNUZXN0T2JqOjpz
X2luZm8pKSkpIHx8IChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMiAmJiAoZXhlYy0+YXJndW1l
bnQoMCkuaXNOdWxsKCkgfHwgKGV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkgJiYgYXNPYmpl
Y3QoZXhlYy0+YXJndW1lbnQoMCkpLT5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKSkpKQor
ICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAuaXNOdWxsKCkgfHwgKGFyZzAuaXNPYmpl
Y3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkpKSB8
fCAoYXJnc0NvdW50ID09IDIgJiYgKGFyZzAuaXNOdWxsKCkgfHwgKGFyZzAuaXNPYmplY3QoKSAm
JiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkpKSkKICAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoZXhl
Yyk7Ci0gICAgaWYgKChleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSAmJiAoZXhlYy0+YXJndW1l
bnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSB8fCBleGVjLT5hcmd1bWVudCgwKS5pc1N0cmluZygp
IHx8IGV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpKSkKKyAgICBpZiAoKGFyZ3NDb3VudCA9
PSAxICYmIChhcmcwLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgYXJnMC5pc1N0cmluZygpIHx8IGFy
ZzAuaXNPYmplY3QoKSkpKQogICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMyhleGVjKTsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
ID09IDEpCisgICAgaWYgKGFyZ3NDb3VudCA9PSAxKQogICAgICAgICByZXR1cm4ganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNChleGVjKTsKLSAgICBpZiAoKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA9PSAxICYmIChleGVjLT5hcmd1bWVudCgwKS5pc051bGwoKSB8fCBl
eGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKSkpCisgICAgaWYgKChhcmdzQ291bnQgPT0gMSAm
JiAoYXJnMC5pc051bGwoKSB8fCBhcmcwLmlzT2JqZWN0KCkpKSkKICAgICAgICAgcmV0dXJuIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoZXhlYyk7CiAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>