<?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>68750</bug_id>
          
          <creation_ts>2011-09-24 00:05:28 -0700</creation_ts>
          <short_desc>Value profiling in baseline JIT for JSVALUE32_64</short_desc>
          <delta_ts>2011-09-28 11:04:12 -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>JavaScriptCore</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>0</everconfirmed>
          <reporter name="Yuqiang Xian">yuqiang.xian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>472729</commentid>
    <comment_count>0</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-09-24 00:05:28 -0700</bug_when>
    <thetext>The work of enabling JSVALUE32_64 support in DFG JIT is ongoing. We need to add value profiling in baseline JIT for JSVALUE32_64 format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472730</commentid>
    <comment_count>1</comment_count>
      <attachid>108578</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-09-24 00:10:00 -0700</bug_when>
    <thetext>Created attachment 108578
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472731</commentid>
    <comment_count>2</comment_count>
      <attachid>108578</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-24 00:13:10 -0700</bug_when>
    <thetext>Comment on attachment 108578
proposed patch

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

&gt; Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:1072
&gt;      unsigned op2 = currentInstruction[3].u.operand;
&gt;      OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
&gt;  
&gt; +#if ENABLE(VALUE_PROFILER)
&gt; +    m_codeBlock-&gt;addSpecialFastCaseProfile(m_bytecodeOffset);
&gt; +#endif
&gt; +
&gt;      if (!supportsFloatingPoint()) {
&gt;          addSlowCase(jump());
&gt;          return;

Do you do the same thing for op_mul, to catch negative zero?

&gt; Source/JavaScriptCore/jit/JITStubCall.h:214
&gt; -        JIT::Call callWithValueProfiling(unsigned dst, JIT::ValueProfilingSiteKind)
&gt; +        JIT::Call callWithValueProfiling(unsigned dst, JIT::ValueProfilingSiteKind kind)
&gt;          {
&gt; -            return call(dst);
&gt; +            ASSERT(m_returnType == Value || m_returnType == Cell);
&gt; +            JIT::Call call = this-&gt;call();
&gt; +            m_jit-&gt;emitValueProfilingSite(kind);
&gt; +            if (m_returnType == Value)
&gt; +                m_jit-&gt;emitStore(dst, JIT::regT1, JIT::regT0);
&gt; +            else
&gt; +                m_jit-&gt;emitStoreCell(dst, JIT::returnValueRegister);
&gt; +            return call;
&gt;          }

Do you call this from anywhere in the 32_64 case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472733</commentid>
    <comment_count>3</comment_count>
      <attachid>108580</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-09-24 00:41:19 -0700</bug_when>
    <thetext>Created attachment 108580
updated patch

sorry... I was just focusing on passing certain cases and forgot some other pieces which were not covered yet. Now the patch is updated. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472735</commentid>
    <comment_count>4</comment_count>
      <attachid>108580</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-24 00:52:27 -0700</bug_when>
    <thetext>Comment on attachment 108580
updated patch

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

&gt; Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:998
&gt;      unsigned op2 = currentInstruction[3].u.operand;
&gt;      OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
&gt;  
&gt; +#if ENABLE(VALUE_PROFILER)
&gt; +    m_codeBlock-&gt;addSpecialFastCaseProfile(m_bytecodeOffset);
&gt; +#endif
&gt; +
&gt;      JumpList notInt32Op1;
&gt;      JumpList notInt32Op2;
&gt;  

The special fast case profile for op_mul should count the number of times that we went to the double slow path only because of negative zero.  You&apos;re counting this every time.  That&apos;ll throw the DFG off, since it&apos;ll think that every single execution of every multiply creates a negative zero result every time.

&gt; Source/JavaScriptCore/jit/JITArithmetic32_64.cpp:1076
&gt;      unsigned op2 = currentInstruction[3].u.operand;
&gt;      OperandTypes types = OperandTypes::fromInt(currentInstruction[4].u.operand);
&gt;  
&gt; +#if ENABLE(VALUE_PROFILER)
&gt; +    m_codeBlock-&gt;addSpecialFastCaseProfile(m_bytecodeOffset);
&gt; +#endif
&gt; +
&gt;      if (!supportsFloatingPoint()) {
&gt;          addSlowCase(jump());
&gt;          return;

The special fast case profile for op_div should count a specific case, not all cases.  In this case, it should be counting the number of times that the division created a result that was not an integer.  You&apos;re counting every execution.  This will cause the DFG to think that every execution of a division creates a double, which will cause performance problems in a number of benchmarks.

It would be good to get this right on the first go, because DFG mis-speculation bugs are truly not fun to debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472740</commentid>
    <comment_count>5</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-09-24 01:04:03 -0700</bug_when>
    <thetext>Thanks for the review, Filip. But I guess I&apos;m not counting the special case at all for now. I add a profile there (with counter always zero) just in order to make the DFG parser happy to find a profile without assertions, though the counter is always zero. Am I wrong? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472818</commentid>
    <comment_count>6</comment_count>
      <attachid>108580</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-24 15:05:28 -0700</bug_when>
    <thetext>Comment on attachment 108580
updated patch

Marking r- based on Phil&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474602</commentid>
    <comment_count>7</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-09-28 02:00:20 -0700</bug_when>
    <thetext>Hi Filip,

What do you think about my Comment #5? Basically we just want to add a profile there (for mul and div) because DFG JIT expects one, but currently we don&apos;t count the special case at all, which means there should be no mis-speculation. We&apos;ll add real special case counting later. 

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474815</commentid>
    <comment_count>8</comment_count>
      <attachid>109034</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-28 10:25:04 -0700</bug_when>
    <thetext>Created attachment 109034
Yuqiang&apos;s patch, + profiling for op_div/op_mul</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474828</commentid>
    <comment_count>9</comment_count>
      <attachid>109034</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-28 10:43:09 -0700</bug_when>
    <thetext>Comment on attachment 109034
Yuqiang&apos;s patch, + profiling for op_div/op_mul

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474844</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-28 11:04:12 -0700</bug_when>
    <thetext>Fixed in r96238</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108578</attachid>
            <date>2011-09-24 00:10:00 -0700</date>
            <delta_ts>2011-09-24 00:41:19 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>jit32-valueprofiling.patch</filename>
            <type>text/plain</type>
            <size>6897</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5MDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTEtMDktMjMgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAg
ICAgICAgVmFsdWUgcHJvZmlsaW5nIGluIGJhc2VsaW5lIEpJVCBmb3IgSlNWQUxVRTMyXzY0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc1MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kaXYpOgorICAg
ICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
Y2FsbF9wdXRfcmVzdWx0KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKToKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9t
ZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29w
X2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfc2NvcGVkX3Zhcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZ2xvYmFsX3Zhcik6CisgICAgICAgICog
aml0L0pJVFN0dWJDYWxsLmg6CisgICAgICAgIChKU0M6OkpJVFN0dWJDYWxsOjpjYWxsV2l0aFZh
bHVlUHJvZmlsaW5nKToKKwogMjAxMS0wOS0yMyAgWXVxaWFuZyBYaWFuICA8eXVxaWFuZy54aWFu
QGludGVsLmNvbT4KIAogICAgICAgICBBZGQgSlNWQUxVRTMyXzY0IHN1cHBvcnQgdG8gREZHIEpJ
VApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcAkocmV2aXNpb24gOTU5MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNjMsNiArMTA2MywxMCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgdW5zaWduZWQg
b3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMg
dHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCk7CiAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgbV9jb2RlQmxvY2stPmFk
ZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUobV9ieXRlY29kZU9mZnNldCk7CisjZW5kaWYKKwogICAg
IGlmICghc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKICAgICAgICAgYWRkU2xvd0Nhc2UoanVt
cCgpKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gOTU5MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENhbGwzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYQogdm9pZCBKSVQ6OmVtaXRf
b3BfY2FsbF9wdXRfcmVzdWx0KEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbikKIHsKICAgICBpbnQg
ZHN0ID0gaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDAp
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwCShyZXZpc2lvbiA5NTkwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk5LDYgKzY5OSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWMKICAgICBsb2FkMzIoQWRkcmVzcyhy
ZWdUMywgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZvLCBvZmZzZXQpKSwgcmVnVDMp
OwogICAgIGxvYWQzMihCYXNlSW5kZXgocmVnVDIsIHJlZ1QzLCBUaW1lc0VpZ2h0LCBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQK
ICAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7IC8vIHRhZworICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0U3RvcmUoZHN0
LCByZWdUMSwgcmVnVDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgKGR5bmFtaWMgPyBP
UENPREVfTEVOR1RIKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpIDogT1BDT0RFX0xFTkdUSChv
cF9yZXNvbHZlX2dsb2JhbCkpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJ
KHJldmlzaW9uIDk1OTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3IEBAIHZvaWQg
SklUOjplbWl0X29wX21ldGhvZF9jaGVjayhJbnN0cnVjdGkKICAgICBjb21waWxlR2V0QnlJZEhv
dFBhdGgoKTsKICAgICAKICAgICBtYXRjaC5saW5rKHRoaXMpOworICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwg
cmVnVDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9tZXRo
b2RfY2hlY2spLCBkc3QsIHJlZ1QxLCByZWdUMCk7CiAgICAgCkBAIC0yMTYsNiArMjE3LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIGxvYWQzMihCYXNl
SW5kZXgocmVnVDMsIHJlZ1QyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9y
YWdlLCBtX3ZlY3RvclswXSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5
bG9hZCkpLCByZWdUMCk7IC8vIHBheWxvYWQKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihFcXVh
bCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwogICAgIAor
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0
U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BD
T0RFX0xFTkdUSChvcF9nZXRfYnlfdmFsKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQpAQCAtMjQ3
LDYgKzI0OSw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfdmFsKEluc3RydWMKICAg
ICBzdHViQ2FsbC5hZGRBcmd1bWVudChiYXNlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChw
cm9wZXJ0eSk7CiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOworCisgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShTdWJzZXF1ZW50UHJvZmlsaW5nU2l0ZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTMxMSw2ICsz
MTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1p
dExvYWQoYmFzZSwgcmVnVDEsIHJlZ1QwKTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0Nl
bGwoYmFzZSwgcmVnVDEpOwogICAgIGNvbXBpbGVHZXRCeUlkSG90UGF0aCgpOworICAgIGVtaXRW
YWx1ZVByb2ZpbGluZ1NpdGUoRmlyc3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0U3RvcmUoZHN0
LCByZWdUMSwgcmVnVDApOwogICAgIG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdU
SChvcF9nZXRfYnlfaWQpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CiB9CkBAIC0zNTQsNiArMzU5LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdAogICAgIGludCBpZGVu
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgCiAgICAgY29tcGlsZUdl
dEJ5SWRTbG93Q2FzZShkc3QsIGJhc2UsICYobV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnQp
KSwgaXRlcik7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShTdWJzZXF1ZW50UHJvZmlsaW5n
U2l0ZSk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlR2V0QnlJZFNsb3dDYXNlKGludCBkc3QsIGlu
dCBiYXNlLCBJZGVudGlmaWVyKiBpZGVudCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlciwgYm9vbCBpc01ldGhvZENoZWNrKQpAQCAtMTAxOCw2ICsxMDI0LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZ2V0X3Njb3BlZF92YXIoSW5zdHJ1YwogICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMiwgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHJlZ1QyKTsKIAog
ICAgIGVtaXRMb2FkKGluZGV4LCByZWdUMSwgcmVnVDAsIHJlZ1QyKTsKKyAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVn
VDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3Bf
Z2V0X3Njb3BlZF92YXIpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CiB9CkBAIC0xMDU5LDYgKzEwNjYs
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfZ2xvYmFsX3ZhcihJbnN0cnVjCiAgICAgbG9hZFB0
cigmZ2xvYmFsT2JqZWN0LT5tX3JlZ2lzdGVycywgcmVnVDIpOwogCiAgICAgZW1pdExvYWQoaW5k
ZXgsIHJlZ1QxLCByZWdUMCwgcmVnVDIpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoRmly
c3RQcm9maWxpbmdTaXRlKTsKICAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOwogICAg
IG1hcChtX2J5dGVjb2RlT2Zmc2V0ICsgT1BDT0RFX0xFTkdUSChvcF9nZXRfZ2xvYmFsX3Zhciks
IGRzdCwgcmVnVDEsIHJlZ1QwKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YkNhbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJDYWxsLmgJKHJldmlzaW9uIDk1OTA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHViQ2FsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsOSArMjAxLDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIEpJVDo6Q2FsbCBjYWxsV2l0aFZhbHVlUHJvZmlsaW5nKHVuc2lnbmVkIGRzdCwg
SklUOjpWYWx1ZVByb2ZpbGluZ1NpdGVLaW5kKQorICAgICAgICBKSVQ6OkNhbGwgY2FsbFdpdGhW
YWx1ZVByb2ZpbGluZyh1bnNpZ25lZCBkc3QsIEpJVDo6VmFsdWVQcm9maWxpbmdTaXRlS2luZCBr
aW5kKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY2FsbChkc3QpOworICAgICAgICAg
ICAgQVNTRVJUKG1fcmV0dXJuVHlwZSA9PSBWYWx1ZSB8fCBtX3JldHVyblR5cGUgPT0gQ2VsbCk7
CisgICAgICAgICAgICBKSVQ6OkNhbGwgY2FsbCA9IHRoaXMtPmNhbGwoKTsKKyAgICAgICAgICAg
IG1faml0LT5lbWl0VmFsdWVQcm9maWxpbmdTaXRlKGtpbmQpOworICAgICAgICAgICAgaWYgKG1f
cmV0dXJuVHlwZSA9PSBWYWx1ZSkKKyAgICAgICAgICAgICAgICBtX2ppdC0+ZW1pdFN0b3JlKGRz
dCwgSklUOjpyZWdUMSwgSklUOjpyZWdUMCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgbV9qaXQtPmVtaXRTdG9yZUNlbGwoZHN0LCBKSVQ6OnJldHVyblZhbHVlUmVnaXN0ZXIp
OworICAgICAgICAgICAgcmV0dXJuIGNhbGw7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIEpJ
VDo6Q2FsbCBjYWxsKHVuc2lnbmVkIGRzdCkgLy8gZHN0IGlzIGEgdmlydHVhbCByZWdpc3Rlci4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108580</attachid>
            <date>2011-09-24 00:41:19 -0700</date>
            <delta_ts>2011-09-28 10:25:04 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>jit32-valueprofiling.patch</filename>
            <type>text/plain</type>
            <size>10381</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTU5MDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMjQgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAg
ICAgICAgVmFsdWUgcHJvZmlsaW5nIGluIGJhc2VsaW5lIEpJVCBmb3IgSlNWQUxVRTMyXzY0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc1MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGl2KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhbGxfcHV0X3Jlc3VsdCk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9yZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfYmFzZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3NraXApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3Jlc29sdmVfZ2xvYmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVf
d2l0aF9iYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfd2l0aF90aGlz
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfc2NvcGVkX3Zhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZ2xvYmFs
X3Zhcik6CisgICAgICAgICogaml0L0pJVFN0dWJDYWxsLmg6CisgICAgICAgIChKU0M6OkpJVFN0
dWJDYWxsOjpjYWxsV2l0aFZhbHVlUHJvZmlsaW5nKToKKwogMjAxMS0wOS0yMyAgWXVxaWFuZyBY
aWFuICA8eXVxaWFuZy54aWFuQGludGVsLmNvbT4KIAogICAgICAgICBBZGQgSlNWQUxVRTMyXzY0
IHN1cHBvcnQgdG8gREZHIEpJVApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkocmV2aXNpb24gOTU5MDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk4OSw2ICs5ODksMTAgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJy
ZQogICAgIHVuc2lnbmVkIG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAg
ICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0
cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAg
IG1fY29kZUJsb2NrLT5hZGRTcGVjaWFsRmFzdENhc2VQcm9maWxlKG1fYnl0ZWNvZGVPZmZzZXQp
OworI2VuZGlmCisKICAgICBKdW1wTGlzdCBub3RJbnQzMk9wMTsKICAgICBKdW1wTGlzdCBub3RJ
bnQzMk9wMjsKIApAQCAtMTA2Myw2ICsxMDY3LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX2RpdihJ
bnN0cnVjdGlvbiogY3VycmUKICAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJv
bUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAorI2lmIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKKyAgICBtX2NvZGVCbG9jay0+YWRkU3BlY2lhbEZhc3RDYXNlUHJvZmlsZSht
X2J5dGVjb2RlT2Zmc2V0KTsKKyNlbmRpZgorCiAgICAgaWYgKCFzdXBwb3J0c0Zsb2F0aW5nUG9p
bnQoKSkgewogICAgICAgICBhZGRTbG93Q2FzZShqdW1wKCkpOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lv
biA5NTkwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbElu
aXRpYWxpemVDYWxsRnJhCiB2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX3B1dF9yZXN1bHQoSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwog
ICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDk1OTA2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MTYsNyArNjE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZShJbnN0
cnVjdGlvbiogYwogewogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9yZXNv
bHZlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKCZtX2NvZGVCbG9j
ay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOwotICAgIHN0
dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgc3R1YkNh
bGwuY2FsbFdpdGhWYWx1ZVByb2ZpbGluZyhjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBGaXJzdFByb2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRp
dmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY1OCw3ICs2NTgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2Jhc2UoSW5zdHJ1Y3RpCiB7CiAgICAgSklUU3R1YkNh
bGwgc3R1YkNhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCA/IGN0aV9v
cF9yZXNvbHZlX2Jhc2Vfc3RyaWN0X3B1dCA6IGN0aV9vcF9yZXNvbHZlX2Jhc2UpOwogICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoJm1fY29kZUJsb2NrLT5pZGVudGlmaWVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBzdHViQ2FsbC5jYWxsV2l0aFZh
bHVlUHJvZmlsaW5nKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIEZpcnN0UHJvZmls
aW5nU2l0ZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY3NCw3ICs2NzQsNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3NraXAoSW5zdHJ1Y3RpCiAgICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywgY3RpX29wX3Jlc29sdmVfc2tpcCk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoVHJ1c3RlZEltbVB0cigmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBzdHViQ2FsbC5jYWxsV2l0aFZhbHVlUHJv
ZmlsaW5nKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIEZpcnN0UHJvZmlsaW5nU2l0
ZSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIGJvb2wgZHluYW1pYykKQEAgLTY5OSw2ICs2OTksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAgICAgbG9hZDMyKEFkZHJlc3Mo
cmVnVDMsIE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlZ1Qz
KTsKICAgICBsb2FkMzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNU
X09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDApOyAvLyBwYXlsb2Fk
CiAgICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMiwgcmVnVDMsIFRpbWVzRWlnaHQsIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVnVDEpOyAvLyB0YWcKKyAgICBlbWl0
VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRz
dCwgcmVnVDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIChkeW5hbWljID8g
T1BDT0RFX0xFTkdUSChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKSA6IE9QQ09ERV9MRU5HVEgo
b3BfcmVzb2x2ZV9nbG9iYWwpKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQpAQCAtNzE0LDcgKzcx
NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yZXNvbHZlX2dsb2JhbChJbnMKICAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoaWRlbnQpKTsKICAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChJbW0zMihjdXJyZW50SW5kZXgpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7Cisg
ICAgc3R1YkNhbGwuY2FsbFdpdGhWYWx1ZVByb2ZpbGluZyhkc3QsIFN1YnNlcXVlbnRQcm9maWxp
bmdTaXRlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCkBAIC0xMTEyLDcgKzExMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNv
bHZlX3dpdGhfYmFzZShJbnN0CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29w
X3Jlc29sdmVfd2l0aF9iYXNlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
UHRyKCZtX2NvZGVCbG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKSkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOworICAgIHN0dWJDYWxsLmNhbGxXaXRoVmFsdWVQcm9maWxpbmcoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgRmlyc3RQcm9maWxpbmdTaXRlKTsKIH0KIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKQEAgLTExMjAsNyArMTEyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVf
d2l0aF90aGlzKEluc3QKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVz
b2x2ZV93aXRoX3RoaXMpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIo
Jm1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCkpOwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7CisgICAgc3R1YkNhbGwuY2FsbFdpdGhWYWx1ZVByb2ZpbGluZyhjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCBGaXJzdFByb2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF90aHJvdyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCShyZXZpc2lvbiA5NTkwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3RpCiAgICAgY29tcGlsZUdl
dEJ5SWRIb3RQYXRoKCk7CiAgICAgCiAgICAgbWF0Y2gubGluayh0aGlzKTsKKyAgICBlbWl0VmFs
dWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRzdCwg
cmVnVDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgo
b3BfbWV0aG9kX2NoZWNrKSwgZHN0LCByZWdUMSwgcmVnVDApOwogICAgIApAQCAtMjE2LDYgKzIx
Nyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBsb2Fk
MzIoQmFzZUluZGV4KHJlZ1QzLCByZWdUMiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFy
cmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSwgcmVnVDApOyAvLyBwYXlsb2FkCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
MzIoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsK
ICAgICAKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAg
ICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNl
dCArIE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3ZhbCksIGRzdCwgcmVnVDEsIHJlZ1QwKTsKIH0K
QEAgLTI0Nyw2ICsyNDksOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0
cnVjCiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoYmFzZSk7CiAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocHJvcGVydHkpOwogICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKworICAgIGVtaXRWYWx1
ZVByb2ZpbGluZ1NpdGUoU3Vic2VxdWVudFByb2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0z
MTEsNiArMzE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgog
ICAgIGVtaXRMb2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKICAgICBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsKKyAg
ICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0
b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09E
RV9MRU5HVEgob3BfZ2V0X2J5X2lkKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQpAQCAtMzU0LDYg
KzM1OSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3QKICAgICBp
bnQgaWRlbnQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIAogICAgIGNv
bXBpbGVHZXRCeUlkU2xvd0Nhc2UoZHN0LCBiYXNlLCAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVy
KGlkZW50KSksIGl0ZXIpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoU3Vic2VxdWVudFBy
b2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQg
ZHN0LCBpbnQgYmFzZSwgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIsIGJvb2wgaXNNZXRob2RDaGVjaykKQEAgLTEwMTgsNiArMTAyNCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWMKICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDIsIEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdU
Mik7CiAKICAgICBlbWl0TG9hZChpbmRleCwgcmVnVDEsIHJlZ1QwLCByZWdUMik7CisgICAgZW1p
dFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRTdG9yZShk
c3QsIHJlZ1QxLCByZWdUMCk7CiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVO
R1RIKG9wX2dldF9zY29wZWRfdmFyKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQpAQCAtMTA1OSw2
ICsxMDY2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAg
IGxvYWRQdHIoJmdsb2JhbE9iamVjdC0+bV9yZWdpc3RlcnMsIHJlZ1QyKTsKIAogICAgIGVtaXRM
b2FkKGluZGV4LCByZWdUMSwgcmVnVDAsIHJlZ1QyKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfZ2V0X2dsb2Jh
bF92YXIpLCBkc3QsIHJlZ1QxLCByZWdUMCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHViQ2FsbC5oCShyZXZpc2lvbiA5NTkwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YkNhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDkgKzIwMSwxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBKSVQ6OkNhbGwgY2FsbFdpdGhWYWx1ZVByb2ZpbGluZyh1bnNpZ25l
ZCBkc3QsIEpJVDo6VmFsdWVQcm9maWxpbmdTaXRlS2luZCkKKyAgICAgICAgSklUOjpDYWxsIGNh
bGxXaXRoVmFsdWVQcm9maWxpbmcodW5zaWduZWQgZHN0LCBKSVQ6OlZhbHVlUHJvZmlsaW5nU2l0
ZUtpbmQga2luZCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNhbGwoZHN0KTsKKyAg
ICAgICAgICAgIEFTU0VSVChtX3JldHVyblR5cGUgPT0gVmFsdWUgfHwgbV9yZXR1cm5UeXBlID09
IENlbGwpOworICAgICAgICAgICAgSklUOjpDYWxsIGNhbGwgPSB0aGlzLT5jYWxsKCk7CisgICAg
ICAgICAgICBtX2ppdC0+ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShraW5kKTsKKyAgICAgICAgICAg
IGlmIChtX3JldHVyblR5cGUgPT0gVmFsdWUpCisgICAgICAgICAgICAgICAgbV9qaXQtPmVtaXRT
dG9yZShkc3QsIEpJVDo6cmVnVDEsIEpJVDo6cmVnVDApOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIG1faml0LT5lbWl0U3RvcmVDZWxsKGRzdCwgSklUOjpyZXR1cm5WYWx1ZVJl
Z2lzdGVyKTsKKyAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9CiAjZWxzZQogICAg
ICAgICBKSVQ6OkNhbGwgY2FsbCh1bnNpZ25lZCBkc3QpIC8vIGRzdCBpcyBhIHZpcnR1YWwgcmVn
aXN0ZXIuCg==
</data>
<flag name="review"
          id="105595"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109034</attachid>
            <date>2011-09-28 10:25:04 -0700</date>
            <delta_ts>2011-09-28 10:43:09 -0700</delta_ts>
            <desc>Yuqiang&apos;s patch, + profiling for op_div/op_mul</desc>
            <filename>68750.gb.patch</filename>
            <type>text/plain</type>
            <size>16126</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTYxNzgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTEtMDktMjcgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAg
ICAgICAgVmFsdWUgcHJvZmlsaW5nIGluIGJhc2VsaW5lIEpJVCBmb3IgSlNWQUxVRTMyXzY0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODc1MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9tdWwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGl2KToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhbGxfcHV0X3Jlc3VsdCk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9yZXNvbHZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfYmFzZSk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXNvbHZlX3NraXApOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9nbG9iYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93
X29wX3Jlc29sdmVfZ2xvYmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVf
d2l0aF9iYXNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfd2l0aF90aGlz
KToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9tZXRob2RfY2hlY2spOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3ZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9nZXRfc2NvcGVkX3Zhcik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfZ2xvYmFs
X3Zhcik6CisgICAgICAgICogaml0L0pJVFN0dWJDYWxsLmg6CisgICAgICAgIChKU0M6OkpJVFN0
dWJDYWxsOjpjYWxsV2l0aFZhbHVlUHJvZmlsaW5nKToKKwogMjAxMS0wOS0yNyAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgREZHIEpJVCAtIG1l
cmdlIGNoYW5nZXMgYmV0d2VlbiA5NTkwNSAtIDk2MTc1CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCShyZXZpc2lvbiA5NjE3OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODU4LDExICs4NTgsMzkgQEAgdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3Vi
bGVPcChPcGNvZGVJRCBvcAogICAgICAgICAgICAgICAgIHN1YkRvdWJsZShmcFJlZ1QwLCBmcFJl
Z1QxKTsKICAgICAgICAgICAgICAgICBlbWl0U3RvcmVEb3VibGUoZHN0LCBmcFJlZ1QxKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ugb3BfZGl2OgorICAgICAgICAg
ICAgY2FzZSBvcF9kaXY6IHsKICAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDEsIGZw
UmVnVDEpOwogICAgICAgICAgICAgICAgIGRpdkRvdWJsZShmcFJlZ1QwLCBmcFJlZ1QxKTsKKwor
I2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAgICAgICAgICAgICAvLyBJcyB0aGUgcmVz
dWx0IGFjdHVhbGx5IGFuIGludGVnZXI/IFRoZSBERkcgSklUIHdvdWxkIHJlYWxseSBsaWtlIHRv
IGtub3cuIElmIGl0J3MKKyAgICAgICAgICAgICAgICAvLyBub3QgYW4gaW50ZWdlciwgd2UgaW5j
cmVtZW50IGEgY291bnQuIElmIHRoaXMgdG9nZXRoZXIgd2l0aCB0aGUgc2xvdyBjYXNlIGNvdW50
ZXIKKyAgICAgICAgICAgICAgICAvLyBhcmUgYmVsb3cgdGhyZXNob2xkIHRoZW4gdGhlIERGRyBK
SVQgd2lsbCBjb21waWxlIHRoaXMgZGl2aXNpb24gd2l0aCBhIHNwZWN1YWx0aW9uCisgICAgICAg
ICAgICAgICAgLy8gdGhhdCB0aGUgcmVtYWluZGVyIGlzIHplcm8uCisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgLy8gQXMgd2VsbCwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIGEgZG91
YmxlIHJlc3VsdCBoZXJlIHdvdWxkIGNhdXNlIGFuIGltcG9ydGFudCBmaWVsZAorICAgICAgICAg
ICAgICAgIC8vIGluIHRoZSBoZWFwIHRvIHNvbWV0aW1lcyBoYXZlIGRvdWJsZXMgaW4gaXQsIHJl
c3VsdGluZyBpbiBkb3VibGUgcHJlZGljdGlvbnMgZ2V0dGluZworICAgICAgICAgICAgICAgIC8v
IHByb3BhZ2F0ZWQgdG8gYSB1c2Ugc2l0ZSB3aGVyZSBpdCBtaWdodCBjYXVzZSBkYW1hZ2UgKHN1
Y2ggYXMgdGhlIGluZGV4IHRvIGFuIGFycmF5CisgICAgICAgICAgICAgICAgLy8gYWNjZXNzKS4g
U28gaWYgd2UgYXJlIERGRyBjb21waWxpbmcgYW55dGhpbmcgaW4gdGhlIHByb2dyYW0sIHdlIHdh
bnQgdGhpcyBjb2RlIHRvCisgICAgICAgICAgICAgICAgLy8gZW5zdXJlIHRoYXQgaXQgcHJvZHVj
ZXMgaW50ZWdlcnMgd2hlbmV2ZXIgcG9zc2libGUuCisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBmYWlsIHRvIGNvbnZlcnQgdG8gaW50ZWdlciBp
ZiB0aGUgcmVzdWx0IGlzIHplcm8uIFdlIHNob3VsZAorICAgICAgICAgICAgICAgIC8vIGRpc3Rp
bmd1aXNoIGJldHdlZW4gcG9zaXRpdmUgemVybyBhbmQgbmVnYXRpdmUgemVybyBoZXJlLgorICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEp1bXBMaXN0IG5vdEludGVnZXI7CisgICAg
ICAgICAgICAgICAgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoZnBSZWdUMSwgcmVnVDIsIG5v
dEludGVnZXIsIGZwUmVnVDApOworICAgICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGdvdCBhbiBp
bnRlZ2VyLCB3ZSBtaWdodCBhcyB3ZWxsIG1ha2UgdGhhdCB0aGUgcmVzdWx0IG9mIHRoZSBkaXZp
c2lvbi4KKyAgICAgICAgICAgICAgICBlbWl0U3RvcmVJbnQzMihkc3QsIHJlZ1QyKTsKKyAgICAg
ICAgICAgICAgICBKdW1wIGlzSW50ZWdlciA9IGp1bXAoKTsKKyAgICAgICAgICAgICAgICBub3RJ
bnRlZ2VyLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgYWRkMzIoSW1tMzIoMSksIEFic29s
dXRlQWRkcmVzcygmbV9jb2RlQmxvY2stPnNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChtX2J5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyKSk7CisgICAgICAgICAgICAgICAg
ZW1pdFN0b3JlRG91YmxlKGRzdCwgZnBSZWdUMSk7CisgICAgICAgICAgICAgICAgaXNJbnRlZ2Vy
LmxpbmsodGhpcyk7CisjZWxzZQogICAgICAgICAgICAgICAgIGVtaXRTdG9yZURvdWJsZShkc3Qs
IGZwUmVnVDEpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIG9wX2psZXNzOgogICAgICAgICAgICAgICAgIGVtaXRMb2FkRG91
YmxlKG9wMSwgZnBSZWdUMik7CiAgICAgICAgICAgICAgICAgYWRkSnVtcChicmFuY2hEb3VibGUo
RG91YmxlTGVzc1RoYW4sIGZwUmVnVDIsIGZwUmVnVDApLCBkc3QpOwpAQCAtOTM1LDExICs5NjMs
MzggQEAgdm9pZCBKSVQ6OmVtaXRCaW5hcnlEb3VibGVPcChPcGNvZGVJRCBvcAogICAgICAgICAg
ICAgICAgIHN1YkRvdWJsZShmcFJlZ1QyLCBmcFJlZ1QwKTsKICAgICAgICAgICAgICAgICBlbWl0
U3RvcmVEb3VibGUoZHN0LCBmcFJlZ1QwKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2Ugb3BfZGl2OgorICAgICAgICAgICAgY2FzZSBvcF9kaXY6IHsKICAgICAgICAg
ICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDIpOwogICAgICAgICAgICAgICAgIGRp
dkRvdWJsZShmcFJlZ1QyLCBmcFJlZ1QwKTsKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisg
ICAgICAgICAgICAgICAgLy8gSXMgdGhlIHJlc3VsdCBhY3R1YWxseSBhbiBpbnRlZ2VyPyBUaGUg
REZHIEpJVCB3b3VsZCByZWFsbHkgbGlrZSB0byBrbm93LiBJZiBpdCdzCisgICAgICAgICAgICAg
ICAgLy8gbm90IGFuIGludGVnZXIsIHdlIGluY3JlbWVudCBhIGNvdW50LiBJZiB0aGlzIHRvZ2V0
aGVyIHdpdGggdGhlIHNsb3cgY2FzZSBjb3VudGVyCisgICAgICAgICAgICAgICAgLy8gYXJlIGJl
bG93IHRocmVzaG9sZCB0aGVuIHRoZSBERkcgSklUIHdpbGwgY29tcGlsZSB0aGlzIGRpdmlzaW9u
IHdpdGggYSBzcGVjdWFsdGlvbgorICAgICAgICAgICAgICAgIC8vIHRoYXQgdGhlIHJlbWFpbmRl
ciBpcyB6ZXJvLgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEFzIHdlbGws
IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSBhIGRvdWJsZSByZXN1bHQgaGVyZSB3b3VsZCBjYXVzZSBh
biBpbXBvcnRhbnQgZmllbGQKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGUgaGVhcCB0byBzb21l
dGltZXMgaGF2ZSBkb3VibGVzIGluIGl0LCByZXN1bHRpbmcgaW4gZG91YmxlIHByZWRpY3Rpb25z
IGdldHRpbmcKKyAgICAgICAgICAgICAgICAvLyBwcm9wYWdhdGVkIHRvIGEgdXNlIHNpdGUgd2hl
cmUgaXQgbWlnaHQgY2F1c2UgZGFtYWdlIChzdWNoIGFzIHRoZSBpbmRleCB0byBhbiBhcnJheQor
ICAgICAgICAgICAgICAgIC8vIGFjY2VzcykuIFNvIGlmIHdlIGFyZSBERkcgY29tcGlsaW5nIGFu
eXRoaW5nIGluIHRoZSBwcm9ncmFtLCB3ZSB3YW50IHRoaXMgY29kZSB0bworICAgICAgICAgICAg
ICAgIC8vIGVuc3VyZSB0aGF0IGl0IHByb2R1Y2VzIGludGVnZXJzIHdoZW5ldmVyIHBvc3NpYmxl
LgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwg
ZmFpbCB0byBjb252ZXJ0IHRvIGludGVnZXIgaWYgdGhlIHJlc3VsdCBpcyB6ZXJvLiBXZSBzaG91
bGQKKyAgICAgICAgICAgICAgICAvLyBkaXN0aW5ndWlzaCBiZXR3ZWVuIHBvc2l0aXZlIHplcm8g
YW5kIG5lZ2F0aXZlIHplcm8gaGVyZS4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBKdW1wTGlzdCBub3RJbnRlZ2VyOworICAgICAgICAgICAgICAgIGJyYW5jaENvbnZlcnREb3Vi
bGVUb0ludDMyKGZwUmVnVDAsIHJlZ1QyLCBub3RJbnRlZ2VyLCBmcFJlZ1QxKTsKKyAgICAgICAg
ICAgICAgICAvLyBJZiB3ZSd2ZSBnb3QgYW4gaW50ZWdlciwgd2UgbWlnaHQgYXMgd2VsbCBtYWtl
IHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgZGl2aXNpb24uCisgICAgICAgICAgICAgICAgZW1pdFN0
b3JlSW50MzIoZHN0LCByZWdUMik7CisgICAgICAgICAgICAgICAgSnVtcCBpc0ludGVnZXIgPSBq
dW1wKCk7CisgICAgICAgICAgICAgICAgbm90SW50ZWdlci5saW5rKHRoaXMpOworICAgICAgICAg
ICAgICAgIGFkZDMyKEltbTMyKDEpLCBBYnNvbHV0ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5zcGVj
aWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ieXRlY29kZU9mZnNldCktPm1f
Y291bnRlcikpOworICAgICAgICAgICAgICAgIGVtaXRTdG9yZURvdWJsZShkc3QsIGZwUmVnVDAp
OworICAgICAgICAgICAgICAgIGlzSW50ZWdlci5saW5rKHRoaXMpOworI2Vsc2UKICAgICAgICAg
ICAgICAgICBlbWl0U3RvcmVEb3VibGUoZHN0LCBmcFJlZ1QwKTsKKyNlbmRpZgogICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBvcF9qbGVzczoK
ICAgICAgICAgICAgICAgICBlbWl0TG9hZERvdWJsZShvcDIsIGZwUmVnVDEpOwogICAgICAgICAg
ICAgICAgIGFkZEp1bXAoYnJhbmNoRG91YmxlKERvdWJsZUxlc3NUaGFuLCBmcFJlZ1QwLCBmcFJl
Z1QxKSwgZHN0KTsKQEAgLTk4OSw2ICsxMDQ0LDEwIEBAIHZvaWQgSklUOjplbWl0X29wX211bChJ
bnN0cnVjdGlvbiogY3VycmUKICAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJv
bUludChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAorI2lmIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKKyAgICBtX2NvZGVCbG9jay0+YWRkU3BlY2lhbEZhc3RDYXNlUHJvZmlsZSht
X2J5dGVjb2RlT2Zmc2V0KTsKKyNlbmRpZgorCiAgICAgSnVtcExpc3Qgbm90SW50MzJPcDE7CiAg
ICAgSnVtcExpc3Qgbm90SW50MzJPcDI7CiAKQEAgLTEwMzAsNiArMTA4OSwxMiBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiBjCiAgICAgZW1pdEp1bXBTbG93VG9Ib3Qo
anVtcCgpLCBPUENPREVfTEVOR1RIKG9wX211bCkpOwogCiAgICAgbmVnWmVyby5saW5rKHRoaXMp
OworI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBXZSBvbmx5IGdldCBoZXJlIGlm
IHdlIGhhdmUgYSBnZW51aW5lIG5lZ2F0aXZlIHplcm8uIFJlY29yZCB0aGlzLAorICAgIC8vIHNv
IHRoYXQgdGhlIHNwZWN1bGF0aXZlIEpJVCBrbm93cyB0aGF0IHdlIGZhaWxlZCBzcGVjdWxhdGlv
bgorICAgIC8vIGJlY2F1c2Ugb2YgYSBuZWdhdGl2ZSB6ZXJvLgorICAgIGFkZDMyKEltbTMyKDEp
LCBBYnNvbHV0ZUFkZHJlc3MoJm1fY29kZUJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQobV9ieXRlY29kZU9mZnNldCktPm1fY291bnRlcikpOworI2VuZGlmCiAg
ICAgb3ZlcmZsb3cubGluayh0aGlzKTsKIAogICAgIGlmICghc3VwcG9ydHNGbG9hdGluZ1BvaW50
KCkpIHsKQEAgLTEwNjMsNiArMTEyOCwxMCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1
Y3Rpb24qIGN1cnJlCiAgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZyb21JbnQo
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKKyNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgbV9jb2RlQmxvY2stPmFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUobV9ieXRl
Y29kZU9mZnNldCk7CisjZW5kaWYKKwogICAgIGlmICghc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
IHsKICAgICAgICAgYWRkU2xvd0Nhc2UoanVtcCgpKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCShyZXZpc2lvbiA5
NjE3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwNDgsNyArMTA0OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RpdihJ
bnN0cnVjdGlvbiogY3VycmUKICAgICB9CiAgICAgZGl2RG91YmxlKGZwUmVnVDEsIGZwUmVnVDAp
OwogICAgIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
ICAgICAvLyBJcyB0aGUgcmVzdWx0IGFjdHVhbGx5IGFuIGludGVnZXI/IFRoZSBERkcgSklUIHdv
dWxkIHJlYWxseSBsaWtlIHRvIGtub3cuIElmIGl0J3MKICAgICAvLyBub3QgYW4gaW50ZWdlciwg
d2UgaW5jcmVtZW50IGEgY291bnQuIElmIHRoaXMgdG9nZXRoZXIgd2l0aCB0aGUgc2xvdyBjYXNl
IGNvdW50ZXIKICAgICAvLyBhcmUgYmVsb3cgdGhyZXNob2xkIHRoZW4gdGhlIERGRyBKSVQgd2ls
bCBjb21waWxlIHRoaXMgZGl2aXNpb24gd2l0aCBhIHNwZWN1YWx0aW9uCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCShyZXZpc2lvbiA5NjE3OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNiArNTgsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wQ2FsbEluaXRpYWxpemVDYWxs
RnJhCiB2b2lkIEpJVDo6ZW1pdF9vcF9jYWxsX3B1dF9yZXN1bHQoSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uKQogewogICAgIGludCBkc3QgPSBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAg
ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRTdG9y
ZShkc3QsIHJlZ1QxLCByZWdUMCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHJldmlzaW9uIDk2MTc4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MTYsNyArNjE2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZShJbnN0cnVjdGlvbiogYwog
ewogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9yZXNvbHZlKTsKICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKCZtX2NvZGVCbG9jay0+aWRlbnRpZmll
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpOwotICAgIHN0dWJDYWxsLmNhbGwo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgc3R1YkNhbGwuY2FsbFdpdGhW
YWx1ZVByb2ZpbGluZyhjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBGaXJzdFByb2Zp
bGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90b19wcmltaXRpdmUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY1OCw3ICs2NTgsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9yZXNvbHZlX2Jhc2UoSW5zdHJ1Y3RpCiB7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCA/IGN0aV9vcF9yZXNvbHZlX2Jh
c2Vfc3RyaWN0X3B1dCA6IGN0aV9vcF9yZXNvbHZlX2Jhc2UpOwogICAgIHN0dWJDYWxsLmFkZEFy
Z3VtZW50KFRydXN0ZWRJbW1QdHIoJm1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICBzdHViQ2FsbC5jYWxsV2l0aFZhbHVlUHJvZmlsaW5n
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiB9
CiAKIHZvaWQgSklUOjplbWl0X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKQEAgLTY3NCw3ICs2NzQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX3NraXAoSW5zdHJ1Y3RpCiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wX3Jlc29sdmVfc2tpcCk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZElt
bVB0cigmbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKSk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKKyAgICBzdHViQ2FsbC5jYWxsV2l0aFZhbHVlUHJvZmlsaW5nKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiB9CiAKIHZv
aWQgSklUOjplbWl0X29wX3Jlc29sdmVfZ2xvYmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24sIGJvb2wgZHluYW1pYykKQEAgLTY5OSw2ICs2OTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9yZXNvbHZlX2dsb2JhbChJbnN0cnVjCiAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDMsIE9CSkVD
VF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgb2Zmc2V0KSksIHJlZ1QzKTsKICAgICBsb2Fk
MzIoQmFzZUluZGV4KHJlZ1QyLCByZWdUMywgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEpT
VmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVnVDApOyAvLyBwYXlsb2FkCiAgICAgbG9hZDMy
KEJhc2VJbmRleChyZWdUMiwgcmVnVDMsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy50YWcpKSwgcmVnVDEpOyAvLyB0YWcKKyAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJl
Z1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIChkeW5hbWljID8gT1BDT0RFX0xFTkdU
SChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKSA6IE9QQ09ERV9MRU5HVEgob3BfcmVzb2x2ZV9n
bG9iYWwpKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQpAQCAtNzE0LDcgKzcxNSw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9yZXNvbHZlX2dsb2JhbChJbnMKICAgICBKSVRTdHViQ2FsbCBzdHVi
Q2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KFRydXN0ZWRJbW1QdHIoaWRlbnQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0z
MihjdXJyZW50SW5kZXgpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CisgICAgc3R1YkNhbGwu
Y2FsbFdpdGhWYWx1ZVByb2ZpbGluZyhkc3QsIFN1YnNlcXVlbnRQcm9maWxpbmdTaXRlKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CkBAIC0xMTEyLDcgKzExMTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3dpdGhfYmFz
ZShJbnN0CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3Jlc29sdmVfd2l0
aF9iYXNlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKCZtX2NvZGVC
bG9jay0+aWRlbnRpZmllcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSkpOwogICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKTsKLSAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
OworICAgIHN0dWJDYWxsLmNhbGxXaXRoVmFsdWVQcm9maWxpbmcoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCwgRmlyc3RQcm9maWxpbmdTaXRlKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfcmVzb2x2ZV93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKQEAg
LTExMjAsNyArMTEyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfd2l0aF90aGlzKElu
c3QKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV93aXRoX3Ro
aXMpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW1QdHIoJm1fY29kZUJsb2Nr
LT5pZGVudGlmaWVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CiAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkp
OwotICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Cisg
ICAgc3R1YkNhbGwuY2FsbFdpdGhWYWx1ZVByb2ZpbGluZyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kLCBGaXJzdFByb2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90
aHJvdyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZp
c2lvbiA5NjE3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3RpCiAgICAgY29tcGlsZUdldEJ5SWRIb3RQYXRo
KCk7CiAgICAgCiAgICAgbWF0Y2gubGluayh0aGlzKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdT
aXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1Qw
KTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2No
ZWNrKSwgZHN0LCByZWdUMSwgcmVnVDApOwogICAgIApAQCAtMjE2LDYgKzIxNyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBsb2FkMzIoQmFzZUluZGV4
KHJlZ1QzLCByZWdUMiwgVGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwg
bV92ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQp
KSwgcmVnVDApOyAvLyBwYXlsb2FkCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoRXF1YWwsIHJl
Z1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKICAgICAKKyAgICBl
bWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3Jl
KGRzdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9M
RU5HVEgob3BfZ2V0X2J5X3ZhbCksIGRzdCwgcmVnVDEsIHJlZ1QwKTsKIH0KQEAgLTI0Nyw2ICsy
NDksOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjCiAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoYmFzZSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocHJvcGVy
dHkpOwogICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKKworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1Np
dGUoU3Vic2VxdWVudFByb2ZpbGluZ1NpdGUpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRf
YnlfdmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkBAIC0zMTAsNiArMzE0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRMb2Fk
KGJhc2UsIHJlZ1QxLCByZWdUMCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJh
c2UsIHJlZ1QxKTsKICAgICBjb21waWxlR2V0QnlJZEhvdFBhdGgoKTsKKyAgICBlbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKEZpcnN0UHJvZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVn
VDEsIHJlZ1QwKTsKICAgICBtYXAobV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3Bf
Z2V0X2J5X2lkKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQpAQCAtMzUzLDYgKzM1OCw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1Y3QKICAgICBpbnQgaWRlbnQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgIAogICAgIGNvbXBpbGVHZXRCeUlk
U2xvd0Nhc2UoZHN0LCBiYXNlLCAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlkZW50KSksIGl0
ZXIpOworICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoU3Vic2VxdWVudFByb2ZpbGluZ1NpdGUp
OwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZUdldEJ5SWRTbG93Q2FzZShpbnQgZHN0LCBpbnQgYmFz
ZSwgSWRlbnRpZmllciogaWRlbnQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIsIGJvb2wgaXNNZXRob2RDaGVjaykKQEAgLTEwMTcsNiArMTAyMyw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2dldF9zY29wZWRfdmFyKEluc3RydWMKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIs
IEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mUmVnaXN0ZXJzKCkpLCByZWdUMik7CiAKICAgICBl
bWl0TG9hZChpbmRleCwgcmVnVDEsIHJlZ1QwLCByZWdUMik7CisgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShGaXJzdFByb2ZpbGluZ1NpdGUpOwogICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCBy
ZWdUMCk7CiAgICAgbWFwKG1fYnl0ZWNvZGVPZmZzZXQgKyBPUENPREVfTEVOR1RIKG9wX2dldF9z
Y29wZWRfdmFyKSwgZHN0LCByZWdUMSwgcmVnVDApOwogfQpAQCAtMTA1OCw2ICsxMDY1LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2dsb2JhbF92YXIoSW5zdHJ1YwogICAgIGxvYWRQdHIoJmds
b2JhbE9iamVjdC0+bV9yZWdpc3RlcnMsIHJlZ1QyKTsKIAogICAgIGVtaXRMb2FkKGluZGV4LCBy
ZWdUMSwgcmVnVDAsIHJlZ1QyKTsKKyAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJv
ZmlsaW5nU2l0ZSk7CiAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKICAgICBtYXAo
bV9ieXRlY29kZU9mZnNldCArIE9QQ09ERV9MRU5HVEgob3BfZ2V0X2dsb2JhbF92YXIpLCBkc3Qs
IHJlZ1QxLCByZWdUMCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJDYWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
Q2FsbC5oCShyZXZpc2lvbiA5NjE3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YkNhbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDkgKzIwMSwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBKSVQ6OkNhbGwgY2FsbFdpdGhWYWx1ZVByb2ZpbGluZyh1bnNpZ25lZCBkc3QsIEpJVDo6
VmFsdWVQcm9maWxpbmdTaXRlS2luZCkKKyAgICAgICAgSklUOjpDYWxsIGNhbGxXaXRoVmFsdWVQ
cm9maWxpbmcodW5zaWduZWQgZHN0LCBKSVQ6OlZhbHVlUHJvZmlsaW5nU2l0ZUtpbmQga2luZCkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNhbGwoZHN0KTsKKyAgICAgICAgICAgIEFT
U0VSVChtX3JldHVyblR5cGUgPT0gVmFsdWUgfHwgbV9yZXR1cm5UeXBlID09IENlbGwpOworICAg
ICAgICAgICAgSklUOjpDYWxsIGNhbGwgPSB0aGlzLT5jYWxsKCk7CisgICAgICAgICAgICBtX2pp
dC0+ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShraW5kKTsKKyAgICAgICAgICAgIGlmIChtX3JldHVy
blR5cGUgPT0gVmFsdWUpCisgICAgICAgICAgICAgICAgbV9qaXQtPmVtaXRTdG9yZShkc3QsIEpJ
VDo6cmVnVDEsIEpJVDo6cmVnVDApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG1faml0LT5lbWl0U3RvcmVDZWxsKGRzdCwgSklUOjpyZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBKSVQ6OkNh
bGwgY2FsbCh1bnNpZ25lZCBkc3QpIC8vIGRzdCBpcyBhIHZpcnR1YWwgcmVnaXN0ZXIuCg==
</data>
<flag name="review"
          id="106158"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>