<?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>94051</bug_id>
          
          <creation_ts>2012-08-14 17:27:43 -0700</creation_ts>
          <short_desc>JSC: fast/js/stack-trace.html fails due to erroneous line number for LLint frame</short_desc>
          <delta_ts>2012-08-20 16:48:19 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mark.lam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>695579</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-14 17:27:43 -0700</bug_when>
    <thetext>When the VM tries to get the stack trace, it will call getLineNumberForCallFrame() in interpreter.cpp.  If the the top frame is a LLint (interpreted) frame, then getLineNumberForCallFrame() will return a wrong line number.  This is because the LLint records the return PC after a call site and not the PC of the call instruction itself.  getLineNumberForCallFrame() needs to take this into account.

This issue causes a failure in webkit test fast/js/stack-trace.html when we disable both the baseline and DFG JITs.

Steps to reproduce:
1. In Options::initialize() (in runtime/Options.cpp), set:

    useJIT() = false;
    useDFGJIT() = false;

    Build JSC and webkit.

2. Run webkit test fast/js/stack-trace.html.  The test will fail.

    [7439/7504] fast/js/stack-trace.html failed unexpectedly (text diff)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696804</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-16 00:04:58 -0700</bug_when>
    <thetext>rdar://problem/12110968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699586</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-20 09:14:10 -0700</bug_when>
    <thetext>The issue is not due to getLineNumberForCallFrame() returning the wrong line number as original suspected.  getLineNumberForCallFrame() does not have enough context to safely reverse the line number PC.  Instead, the llint runtime glue code should adjust the bytecode PC if needed just before it throws an exception.  The PC should only be adjusted if we&apos;re throwing from a call site.  The PC should not be adjusted for exceptions thrown from non-call bytecodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699627</commentid>
    <comment_count>3</comment_count>
      <attachid>159464</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-20 10:09:57 -0700</bug_when>
    <thetext>Created attachment 159464
Fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699643</commentid>
    <comment_count>4</comment_count>
      <attachid>159468</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-20 10:28:33 -0700</bug_when>
    <thetext>Created attachment 159468
rev 1: Removed some unused code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699692</commentid>
    <comment_count>5</comment_count>
      <attachid>159468</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-20 11:05:42 -0700</bug_when>
    <thetext>Comment on attachment 159468
rev 1: Removed some unused code.

Attachment 159468 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13543407</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699712</commentid>
    <comment_count>6</comment_count>
      <attachid>159468</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-20 11:17:00 -0700</bug_when>
    <thetext>Comment on attachment 159468
rev 1: Removed some unused code.

Attachment 159468 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13533935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699731</commentid>
    <comment_count>7</comment_count>
      <attachid>159468</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-20 11:28:12 -0700</bug_when>
    <thetext>Comment on attachment 159468
rev 1: Removed some unused code.

Attachment 159468 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13550027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699857</commentid>
    <comment_count>8</comment_count>
      <attachid>159505</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2012-08-20 13:23:57 -0700</bug_when>
    <thetext>Created attachment 159505
rev 2: Made adjustPCIfAtCallSite() conditional under ENABLE(LLINT).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700026</commentid>
    <comment_count>9</comment_count>
      <attachid>159505</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-20 15:09:16 -0700</bug_when>
    <thetext>Comment on attachment 159505
rev 2: Made adjustPCIfAtCallSite() conditional under ENABLE(LLINT).

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2618
&gt; +#if ENABLE(LLINT)
&gt; +Instruction* CodeBlock::adjustPCIfAtCallSite(Instruction* potentialReturnPC)
&gt; +{
&gt; +    ASSERT(potentialReturnPC);
&gt; +
&gt; +    unsigned returnPCOffset = potentialReturnPC - instructions().begin();
&gt; +    Instruction* adjustedPC;
&gt; +    unsigned opcodeLength;
&gt; +
&gt; +    // If we are at a callsite, the LLInt stores the PC after the call
&gt; +    // instruction rather than the PC of the call instruction. This requires
&gt; +    // some correcting. If so, we can rely on the fact that the preceding
&gt; +    // instruction must be one of the call instructions, so either it&apos;s a
&gt; +    // call_varargs or it&apos;s a call, construct, or eval.
&gt; +    //
&gt; +    // If we are not at a call site, then we need to guard against the
&gt; +    // possibility of peeking past the start of the bytecode range for this
&gt; +    // codeBlock. Hence, we do a bounds check before we peek at the
&gt; +    // potential &quot;preceding&quot; instruction.
&gt; +    //     The bounds check is done by comparing the offset of the potential
&gt; +    // returnPC with the length of the opcode. If there is room for a call
&gt; +    // instruction before the returnPC, then the offset of the returnPC must
&gt; +    // be greater than the size of the call opcode we&apos;re looking for.
&gt; +
&gt; +    // The determination of the call instruction present (if we are at a
&gt; +    // callsite) depends on the following assumptions. So, assert that
&gt; +    // they are still true:
&gt; +    ASSERT(OPCODE_LENGTH(op_call_varargs) &lt;= OPCODE_LENGTH(op_call));
&gt; +    ASSERT(OPCODE_LENGTH(op_call) == OPCODE_LENGTH(op_construct));
&gt; +    ASSERT(OPCODE_LENGTH(op_call) == OPCODE_LENGTH(op_call_eval));
&gt; +
&gt; +    // Check for the case of a preceeding op_call_varargs:
&gt; +    opcodeLength = OPCODE_LENGTH(op_call_varargs);
&gt; +    adjustedPC = potentialReturnPC - opcodeLength;
&gt; +    if ((returnPCOffset &gt;= opcodeLength)
&gt; +        &amp;&amp; (adjustedPC-&gt;u.pointer == bitwise_cast&lt;void*&gt;(llint_op_call_varargs))) {

Does this correctly handle the case where the call site was compiled in something other than llint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700062</commentid>
    <comment_count>10</comment_count>
      <attachid>159505</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-20 15:28:43 -0700</bug_when>
    <thetext>Comment on attachment 159505
rev 2: Made adjustPCIfAtCallSite() conditional under ENABLE(LLINT).

&gt; Source/JavaScriptCore/llint/LLIntExceptions.cpp:87
&gt; +    fixupPCforExceptionIfNeeded(exec);
&gt;      genericThrow(globalData, exec, globalData-&gt;exception, pc - exec-&gt;codeBlock()-&gt;instructions().begin());

It looks like you&apos;re fixing up exec-&gt;currentVPC(). But isn&apos;t the expression &quot;pc - exec-&gt;codeBlock()-&gt;instructions().begin()&quot; still using the wrong pc?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700174</commentid>
    <comment_count>11</comment_count>
      <attachid>159505</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 16:48:15 -0700</bug_when>
    <thetext>Comment on attachment 159505
rev 2: Made adjustPCIfAtCallSite() conditional under ENABLE(LLINT).

Clearing flags on attachment: 159505

Committed r126093: &lt;http://trac.webkit.org/changeset/126093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700175</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 16:48:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159464</attachid>
            <date>2012-08-20 10:09:57 -0700</date>
            <delta_ts>2012-08-20 10:28:33 -0700</delta_ts>
            <desc>Fix.</desc>
            <filename>bug-94051.patch</filename>
            <type>text/plain</type>
            <size>9064</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEyLTA4LTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXhlZCBlcnJvbmVvdXMgbGluZSBudW1iZXIgZm9yIExMaW50IGZyYW1lIHdoZW4gdGhyb3dpbmcg
ZXhjZXB0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk0MDUxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZvciBMTEludCBmcmFtZXMsIGJlZm9yZSB0aHJvd2luZyBhbiBleGNlcHRpb24sIGFkanVz
dCB0aGUgUEMgZnJvbSB0aGUKKyAgICAgICAgcmV0dXJuIFBDIGJhY2sgdG8gdGhlIGNhbGwgUEMg
aWYgd2UgYXJlIGluZGVlZCBhdCBhIGNhbGwgc2l0ZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRqdXN0UENJZkF0Q2FsbFNp
dGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxv
Y2spOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpmaXh1cFBDZm9yRXhjZXB0aW9uSWZOZWVkZWQpOgorICAgICAgICAoTExJbnQpOgor
ICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRv
VGhyb3cpOgorCiAyMDEyLTA4LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFic3RyYWN0IHZhbHVlcyBhbmQgc3Ry
dWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludHMgc2hvdWxkIGJlIHJhdGlvbmFsaXplZApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDEyNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgwLDYgKzI1ODAsNjQgQEAgdm9pZCBDb2RlQmxvY2s6
OnVubGlua0luY29taW5nQ2FsbHMoKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+
dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQogCitJbnN0cnVjdGlvbiog
Q29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxsU2l0ZSh1bnNpZ25lZCBwb3RlbnRpYWxSZXR1cm5Q
Q0J5dGVjb2RlT2Zmc2V0KQoreworICAgIEluc3RydWN0aW9uKiBwb3RlbnRpYWxSZXR1cm5QQyA9
IGluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBwb3RlbnRpYWxSZXR1cm5QQ0J5dGVjb2RlT2Zmc2V0
OworICAgIHJldHVybiBhZGp1c3RQQ0lmQXRDYWxsU2l0ZShwb3RlbnRpYWxSZXR1cm5QQyk7Cit9
CisKK0luc3RydWN0aW9uKiBDb2RlQmxvY2s6OmFkanVzdFBDSWZBdENhbGxTaXRlKEluc3RydWN0
aW9uKiBwb3RlbnRpYWxSZXR1cm5QQykKK3sKKyAgICBBU1NFUlQocG90ZW50aWFsUmV0dXJuUEMp
OworCisgICAgdW5zaWduZWQgcmV0dXJuUENPZmZzZXQgPSBwb3RlbnRpYWxSZXR1cm5QQyAtIGlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgSW5zdHJ1Y3Rpb24qIGFkanVzdGVkUEM7CisgICAg
dW5zaWduZWQgb3Bjb2RlTGVuZ3RoOworCisgICAgLy8gSWYgd2UgYXJlIGF0IGEgY2FsbHNpdGUs
IHRoZSBMTEludCBzdG9yZXMgdGhlIFBDIGFmdGVyIHRoZSBjYWxsCisgICAgLy8gaW5zdHJ1Y3Rp
b24gcmF0aGVyIHRoYW4gdGhlIFBDIG9mIHRoZSBjYWxsIGluc3RydWN0aW9uLiBUaGlzIHJlcXVp
cmVzCisgICAgLy8gc29tZSBjb3JyZWN0aW5nLiBJZiBzbywgd2UgY2FuIHJlbHkgb24gdGhlIGZh
Y3QgdGhhdCB0aGUgcHJlY2VkaW5nCisgICAgLy8gaW5zdHJ1Y3Rpb24gbXVzdCBiZSBvbmUgb2Yg
dGhlIGNhbGwgaW5zdHJ1Y3Rpb25zLCBzbyBlaXRoZXIgaXQncyBhCisgICAgLy8gY2FsbF92YXJh
cmdzIG9yIGl0J3MgYSBjYWxsLCBjb25zdHJ1Y3QsIG9yIGV2YWwuCisgICAgLy8KKyAgICAvLyBJ
ZiB3ZSBhcmUgbm90IGF0IGEgY2FsbCBzaXRlLCB0aGVuIHdlIG5lZWQgdG8gZ3VhcmQgYWdhaW5z
dCB0aGUKKyAgICAvLyBwb3NzaWJpbGl0eSBvZiBwZWVraW5nIHBhc3QgdGhlIHN0YXJ0IG9mIHRo
ZSBieXRlY29kZSByYW5nZSBmb3IgdGhpcworICAgIC8vIGNvZGVCbG9jay4gSGVuY2UsIHdlIGRv
IGEgYm91bmRzIGNoZWNrIGJlZm9yZSB3ZSBwZWVrIGF0IHRoZQorICAgIC8vIHBvdGVudGlhbCAi
cHJlY2VkaW5nIiBpbnN0cnVjdGlvbi4KKyAgICAvLyAgICAgVGhlIGJvdW5kcyBjaGVjayBpcyBk
b25lIGJ5IGNvbXBhcmluZyB0aGUgb2Zmc2V0IG9mIHRoZSBwb3RlbnRpYWwKKyAgICAvLyByZXR1
cm5QQyB3aXRoIHRoZSBsZW5ndGggb2YgdGhlIG9wY29kZS4gSWYgdGhlcmUgaXMgcm9vbSBmb3Ig
YSBjYWxsCisgICAgLy8gaW5zdHJ1Y3Rpb24gYmVmb3JlIHRoZSByZXR1cm5QQywgdGhlbiB0aGUg
b2Zmc2V0IG9mIHRoZSByZXR1cm5QQyBtdXN0CisgICAgLy8gYmUgZ3JlYXRlciB0aGFuIHRoZSBz
aXplIG9mIHRoZSBjYWxsIG9wY29kZSB3ZSdyZSBsb29raW5nIGZvci4KKworICAgIC8vIFRoZSBk
ZXRlcm1pbmF0aW9uIG9mIHRoZSBjYWxsIGluc3RydWN0aW9uIHByZXNlbnQgKGlmIHdlIGFyZSBh
dCBhCisgICAgLy8gY2FsbHNpdGUpIGRlcGVuZHMgb24gdGhlIGZvbGxvd2luZyBhc3N1bXB0aW9u
cy4gU28sIGFzc2VydCB0aGF0CisgICAgLy8gdGhleSBhcmUgc3RpbGwgdHJ1ZToKKyAgICBBU1NF
UlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpIDw9IE9QQ09ERV9MRU5HVEgob3BfY2Fs
bCkpOworICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgo
b3BfY29uc3RydWN0KSk7CisgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BD
T0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKworICAgIC8vIENoZWNrIGZvciB0aGUgY2FzZSBv
ZiBhIHByZWNlZWRpbmcgb3BfY2FsbF92YXJhcmdzOgorICAgIG9wY29kZUxlbmd0aCA9IE9QQ09E
RV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKTsKKyAgICBhZGp1c3RlZFBDID0gcG90ZW50aWFsUmV0
dXJuUEMgLSBvcGNvZGVMZW5ndGg7CisgICAgaWYgKChyZXR1cm5QQ09mZnNldCA+PSBvcGNvZGVM
ZW5ndGgpCisgICAgICAgICYmIChhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0
PHZvaWQqPihsbGludF9vcF9jYWxsX3ZhcmFyZ3MpKSkgeworICAgICAgICByZXR1cm4gYWRqdXN0
ZWRQQzsKKyAgICB9CisKKyAgICAvLyBDaGVjayBmb3IgdGhlIGNhc2Ugb2YgdGhlIG90aGVyIDMg
Y2FsbCBpbnN0cnVjdGlvbnM6CisgICAgb3Bjb2RlTGVuZ3RoID0gT1BDT0RFX0xFTkdUSChvcF9j
YWxsKTsKKyAgICBhZGp1c3RlZFBDID0gcG90ZW50aWFsUmV0dXJuUEMgLSBvcGNvZGVMZW5ndGg7
CisgICAgaWYgKChyZXR1cm5QQ09mZnNldCA+PSBvcGNvZGVMZW5ndGgpCisgICAgICAgICYmIChh
ZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxs
KQorICAgICAgICAgICAgfHwgYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2
b2lkKj4obGxpbnRfb3BfY29uc3RydWN0KQorICAgICAgICAgICAgfHwgYWRqdXN0ZWRQQy0+dS5w
b2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFsKSkpIHsKKyAg
ICAgICAgcmV0dXJuIGFkanVzdGVkUEM7CisgICAgfQorCisgICAgLy8gTm90IGEgY2FsbCBzaXRl
LiBObyBuZWVkIHRvIGFkanVzdCBQQy4gSnVzdCByZXR1cm4gdGhlIG9yaWdpbmFsLgorICAgIHJl
dHVybiBwb3RlbnRpYWxSZXR1cm5QQzsKK30KKwogdW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29k
ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
IHsKICNpZiBFTkFCTEUoTExJTlQpCkBAIC0yNTkwLDI4ICsyNjQ4LDggQEAgdW5zaWduZWQgQ29k
ZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjUwogICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNC
YXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKICAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uKTsK
LSAgICAgICAgCi0gICAgICAgIC8vIFRoZSBMTEludCBzdG9yZXMgdGhlIFBDIGFmdGVyIHRoZSBj
YWxsIGluc3RydWN0aW9uIHJhdGhlciB0aGFuIHRoZSBQQyBvZgotICAgICAgICAvLyB0aGUgY2Fs
bCBpbnN0cnVjdGlvbi4gVGhpcyByZXF1aXJlcyBzb21lIGNvcnJlY3RpbmcuIFdlIHJlbHkgb24g
dGhlIGZhY3QKLSAgICAgICAgLy8gdGhhdCB0aGUgcHJlY2VkaW5nIGluc3RydWN0aW9uIG11c3Qg
YmUgb25lIG9mIHRoZSBjYWxsIGluc3RydWN0aW9ucywgc28KLSAgICAgICAgLy8gZWl0aGVyIGl0
J3MgYSBjYWxsX3ZhcmFyZ3Mgb3IgaXQncyBhIGNhbGwsIGNvbnN0cnVjdCwgb3IgZXZhbC4KLSAg
ICAgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSA8PSBPUENPREVfTEVO
R1RIKG9wX2NhbGwpKTsKLSAgICAgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0g
T1BDT0RFX0xFTkdUSChvcF9jb25zdHJ1Y3QpKTsKLSAgICAgICAgQVNTRVJUKE9QQ09ERV9MRU5H
VEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKLSAgICAgICAgaWYg
KGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyldLnUucG9pbnRlciA9
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfdmFyYXJncykpIHsKLSAgICAgICAg
ICAgIC8vIFdlIGtub3cgdGhhdCB0aGUgcHJlY2VkaW5nIGluc3RydWN0aW9uIG11c3QgYmUgb3Bf
Y2FsbF92YXJhcmdzIGJlY2F1c2UgdGhlcmUgaXMgbm8gd2F5IHRoYXQKLSAgICAgICAgICAgIC8v
IHRoZSBwb2ludGVyIHRvIHRoZSBjYWxsX3ZhcmFyZ3MgY291bGQgYmUgYW4gb3BlcmFuZCB0byB0
aGUgY2FsbC4KLSAgICAgICAgICAgIGluc3RydWN0aW9uIC09IE9QQ09ERV9MRU5HVEgob3BfY2Fs
bF92YXJhcmdzKTsKLSAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdU
SChvcF9jYWxsKV0udS5wb2ludGVyICE9IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2Fs
bCkKLSAgICAgICAgICAgICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9j
YWxsKV0udS5wb2ludGVyICE9IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY29uc3RydWN0
KQotICAgICAgICAgICAgICAgICAgICYmIGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2Nh
bGwpXS51LnBvaW50ZXIgIT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX2V2YWwp
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE11c3QgYmUgdGhhdCB0aGUgbGFz
dCBpbnN0cnVjdGlvbiB3YXMgc29tZSBvcF9jYWxsLgotICAgICAgICAgICAgQVNTRVJUKGluc3Ry
dWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0
PHZvaWQqPihsbGludF9vcF9jYWxsKQotICAgICAgICAgICAgICAgICAgIHx8IGluc3RydWN0aW9u
Wy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQq
PihsbGludF9vcF9jb25zdHJ1Y3QpCi0gICAgICAgICAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25b
LU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGxsaW50X29wX2NhbGxfZXZhbCkpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gLT0gT1BDT0RF
X0xFTkdUSChvcF9jYWxsKTsKLSAgICAgICAgfQorCisgICAgICAgIGluc3RydWN0aW9uID0gYWRq
dXN0UENJZkF0Q2FsbFNpdGUoaW5zdHJ1Y3Rpb24pOwogICAgICAgICAKICAgICAgICAgcmV0dXJu
IGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjYwMzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzMCw2ICsyMzAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihi
aW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExp
bmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogYWRqdXN0UENJZkF0Q2FsbFNp
dGUodW5zaWduZWQpOworICAgICAgICBJbnN0cnVjdGlvbiogYWRqdXN0UENJZkF0Q2FsbFNpdGUo
SW5zdHJ1Y3Rpb24qKTsKKyNlbmRpZgogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChF
eGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEyNjAz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIExMSW50IHsKIAorc3RhdGljIHZvaWQgZml4dXBQQ2ZvckV4Y2VwdGlvbklmTmVlZGVkKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIEFTU0VSVCghIWNvZGVCbG9jayk7CisgICAgSW5zdHJ1Y3Rpb24qIHBjID0g
ZXhlYy0+Y3VycmVudFZQQygpOworICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMoY29kZUJsb2NrLT5h
ZGp1c3RQQ0lmQXRDYWxsU2l0ZShwYykpOworfQorCiB2b2lkIGludGVycHJldGVyVGhyb3dJbkNh
bGxlcihFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcGMpCiB7CiAgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKQEAgLTQ0LDYgKzUyLDcg
QEAgdm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKgogI2lmIExMSU5UX1NM
T1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwogI2VuZGlmCisgICAgZml4dXBQ
Q2ZvckV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMpOwogICAgIGdlbmVyaWNUaHJvdygKICAgICAgICAg
Z2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLAogICAgICAgICBleGVjLT5j
b2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgcGMpKTsKQEAgLTYxLDYgKzcwLDcgQEAg
SW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleAogI2lmIExMSU5UX1NMT1df
UEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5U
b1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKICNlbmRp
ZgorICAgIGZpeHVwUENmb3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsKICAgICBnZW5lcmljVGhy
b3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAKICAgICByZXR1cm4gZ2xv
YmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwpAQCAtNzMsNiArODMs
NyBAQCB2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RyCiAjaWYgTExJTlRf
U0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNh
bGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKICNl
bmRpZgorICAgIGZpeHVwUENmb3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsKICAgICBnZW5lcmlj
VGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMt
PmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAKICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159468</attachid>
            <date>2012-08-20 10:28:33 -0700</date>
            <delta_ts>2012-08-20 13:23:57 -0700</delta_ts>
            <desc>rev 1: Removed some unused code.</desc>
            <filename>bug-94051-rev1.patch</filename>
            <type>text/plain</type>
            <size>8764</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEyLTA4LTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXhlZCBlcnJvbmVvdXMgbGluZSBudW1iZXIgZm9yIExMaW50IGZyYW1lIHdoZW4gdGhyb3dpbmcg
ZXhjZXB0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk0MDUxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZvciBMTEludCBmcmFtZXMsIGJlZm9yZSB0aHJvd2luZyBhbiBleGNlcHRpb24sIGFkanVz
dCB0aGUgUEMgZnJvbSB0aGUKKyAgICAgICAgcmV0dXJuIFBDIGJhY2sgdG8gdGhlIGNhbGwgUEMg
aWYgd2UgYXJlIGluZGVlZCBhdCBhIGNhbGwgc2l0ZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRqdXN0UENJZkF0Q2FsbFNp
dGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxv
Y2spOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpmaXh1cFBDZm9yRXhjZXB0aW9uSWZOZWVkZWQpOgorICAgICAgICAoTExJbnQpOgor
ICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRv
VGhyb3cpOgorCiAyMDEyLTA4LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFic3RyYWN0IHZhbHVlcyBhbmQgc3Ry
dWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludHMgc2hvdWxkIGJlIHJhdGlvbmFsaXplZApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDEyNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgwLDYgKzI1ODAsNTggQEAgdm9pZCBDb2RlQmxvY2s6
OnVubGlua0luY29taW5nQ2FsbHMoKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+
dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQogCitJbnN0cnVjdGlvbiog
Q29kZUJsb2NrOjphZGp1c3RQQ0lmQXRDYWxsU2l0ZShJbnN0cnVjdGlvbiogcG90ZW50aWFsUmV0
dXJuUEMpCit7CisgICAgQVNTRVJUKHBvdGVudGlhbFJldHVyblBDKTsKKworICAgIHVuc2lnbmVk
IHJldHVyblBDT2Zmc2V0ID0gcG90ZW50aWFsUmV0dXJuUEMgLSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpOworICAgIEluc3RydWN0aW9uKiBhZGp1c3RlZFBDOworICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aDsKKworICAgIC8vIElmIHdlIGFyZSBhdCBhIGNhbGxzaXRlLCB0aGUgTExJbnQgc3RvcmVz
IHRoZSBQQyBhZnRlciB0aGUgY2FsbAorICAgIC8vIGluc3RydWN0aW9uIHJhdGhlciB0aGFuIHRo
ZSBQQyBvZiB0aGUgY2FsbCBpbnN0cnVjdGlvbi4gVGhpcyByZXF1aXJlcworICAgIC8vIHNvbWUg
Y29ycmVjdGluZy4gSWYgc28sIHdlIGNhbiByZWx5IG9uIHRoZSBmYWN0IHRoYXQgdGhlIHByZWNl
ZGluZworICAgIC8vIGluc3RydWN0aW9uIG11c3QgYmUgb25lIG9mIHRoZSBjYWxsIGluc3RydWN0
aW9ucywgc28gZWl0aGVyIGl0J3MgYQorICAgIC8vIGNhbGxfdmFyYXJncyBvciBpdCdzIGEgY2Fs
bCwgY29uc3RydWN0LCBvciBldmFsLgorICAgIC8vCisgICAgLy8gSWYgd2UgYXJlIG5vdCBhdCBh
IGNhbGwgc2l0ZSwgdGhlbiB3ZSBuZWVkIHRvIGd1YXJkIGFnYWluc3QgdGhlCisgICAgLy8gcG9z
c2liaWxpdHkgb2YgcGVla2luZyBwYXN0IHRoZSBzdGFydCBvZiB0aGUgYnl0ZWNvZGUgcmFuZ2Ug
Zm9yIHRoaXMKKyAgICAvLyBjb2RlQmxvY2suIEhlbmNlLCB3ZSBkbyBhIGJvdW5kcyBjaGVjayBi
ZWZvcmUgd2UgcGVlayBhdCB0aGUKKyAgICAvLyBwb3RlbnRpYWwgInByZWNlZGluZyIgaW5zdHJ1
Y3Rpb24uCisgICAgLy8gICAgIFRoZSBib3VuZHMgY2hlY2sgaXMgZG9uZSBieSBjb21wYXJpbmcg
dGhlIG9mZnNldCBvZiB0aGUgcG90ZW50aWFsCisgICAgLy8gcmV0dXJuUEMgd2l0aCB0aGUgbGVu
Z3RoIG9mIHRoZSBvcGNvZGUuIElmIHRoZXJlIGlzIHJvb20gZm9yIGEgY2FsbAorICAgIC8vIGlu
c3RydWN0aW9uIGJlZm9yZSB0aGUgcmV0dXJuUEMsIHRoZW4gdGhlIG9mZnNldCBvZiB0aGUgcmV0
dXJuUEMgbXVzdAorICAgIC8vIGJlIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgY2FsbCBv
cGNvZGUgd2UncmUgbG9va2luZyBmb3IuCisKKyAgICAvLyBUaGUgZGV0ZXJtaW5hdGlvbiBvZiB0
aGUgY2FsbCBpbnN0cnVjdGlvbiBwcmVzZW50IChpZiB3ZSBhcmUgYXQgYQorICAgIC8vIGNhbGxz
aXRlKSBkZXBlbmRzIG9uIHRoZSBmb2xsb3dpbmcgYXNzdW1wdGlvbnMuIFNvLCBhc3NlcnQgdGhh
dAorICAgIC8vIHRoZXkgYXJlIHN0aWxsIHRydWU6CisgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgo
b3BfY2FsbF92YXJhcmdzKSA8PSBPUENPREVfTEVOR1RIKG9wX2NhbGwpKTsKKyAgICBBU1NFUlQo
T1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBPUENPREVfTEVOR1RIKG9wX2NvbnN0cnVjdCkpOwor
ICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY2Fs
bF9ldmFsKSk7CisKKyAgICAvLyBDaGVjayBmb3IgdGhlIGNhc2Ugb2YgYSBwcmVjZWVkaW5nIG9w
X2NhbGxfdmFyYXJnczoKKyAgICBvcGNvZGVMZW5ndGggPSBPUENPREVfTEVOR1RIKG9wX2NhbGxf
dmFyYXJncyk7CisgICAgYWRqdXN0ZWRQQyA9IHBvdGVudGlhbFJldHVyblBDIC0gb3Bjb2RlTGVu
Z3RoOworICAgIGlmICgocmV0dXJuUENPZmZzZXQgPj0gb3Bjb2RlTGVuZ3RoKQorICAgICAgICAm
JiAoYWRqdXN0ZWRQQy0+dS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3Bf
Y2FsbF92YXJhcmdzKSkpIHsKKyAgICAgICAgcmV0dXJuIGFkanVzdGVkUEM7CisgICAgfQorCisg
ICAgLy8gQ2hlY2sgZm9yIHRoZSBjYXNlIG9mIHRoZSBvdGhlciAzIGNhbGwgaW5zdHJ1Y3Rpb25z
OgorICAgIG9wY29kZUxlbmd0aCA9IE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7CisgICAgYWRqdXN0
ZWRQQyA9IHBvdGVudGlhbFJldHVyblBDIC0gb3Bjb2RlTGVuZ3RoOworICAgIGlmICgocmV0dXJu
UENPZmZzZXQgPj0gb3Bjb2RlTGVuZ3RoKQorICAgICAgICAmJiAoYWRqdXN0ZWRQQy0+dS5wb2lu
dGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbCkKKyAgICAgICAgICAgIHx8
IGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2Nv
bnN0cnVjdCkKKyAgICAgICAgICAgIHx8IGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfZXZhbCkpKSB7CisgICAgICAgIHJldHVybiBhZGp1
c3RlZFBDOworICAgIH0KKworICAgIC8vIE5vdCBhIGNhbGwgc2l0ZS4gTm8gbmVlZCB0byBhZGp1
c3QgUEMuIEp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbC4KKyAgICByZXR1cm4gcG90ZW50aWFsUmV0
dXJuUEM7Cit9CisKIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRl
KiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiB7CiAjaWYgRU5BQkxFKExM
SU5UKQpAQCAtMjU5MCwyOCArMjY0Miw4IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVP
ZmZzZXQoRXhlY1MKICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJ
VFR5cGUoKSkpOwogICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJy
ZW50VlBDKCk7CiAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7Ci0gICAgICAgIAotICAgICAg
ICAvLyBUaGUgTExJbnQgc3RvcmVzIHRoZSBQQyBhZnRlciB0aGUgY2FsbCBpbnN0cnVjdGlvbiBy
YXRoZXIgdGhhbiB0aGUgUEMgb2YKLSAgICAgICAgLy8gdGhlIGNhbGwgaW5zdHJ1Y3Rpb24uIFRo
aXMgcmVxdWlyZXMgc29tZSBjb3JyZWN0aW5nLiBXZSByZWx5IG9uIHRoZSBmYWN0Ci0gICAgICAg
IC8vIHRoYXQgdGhlIHByZWNlZGluZyBpbnN0cnVjdGlvbiBtdXN0IGJlIG9uZSBvZiB0aGUgY2Fs
bCBpbnN0cnVjdGlvbnMsIHNvCi0gICAgICAgIC8vIGVpdGhlciBpdCdzIGEgY2FsbF92YXJhcmdz
IG9yIGl0J3MgYSBjYWxsLCBjb25zdHJ1Y3QsIG9yIGV2YWwuCi0gICAgICAgIEFTU0VSVChPUENP
REVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPD0gT1BDT0RFX0xFTkdUSChvcF9jYWxsKSk7Ci0g
ICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3Bf
Y29uc3RydWN0KSk7Ci0gICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9Q
Q09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7Ci0gICAgICAgIGlmIChpbnN0cnVjdGlvblstT1BD
T0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZv
aWQqPihsbGludF9vcF9jYWxsX3ZhcmFyZ3MpKSB7Ci0gICAgICAgICAgICAvLyBXZSBrbm93IHRo
YXQgdGhlIHByZWNlZGluZyBpbnN0cnVjdGlvbiBtdXN0IGJlIG9wX2NhbGxfdmFyYXJncyBiZWNh
dXNlIHRoZXJlIGlzIG5vIHdheSB0aGF0Ci0gICAgICAgICAgICAvLyB0aGUgcG9pbnRlciB0byB0
aGUgY2FsbF92YXJhcmdzIGNvdWxkIGJlIGFuIG9wZXJhbmQgdG8gdGhlIGNhbGwuCi0gICAgICAg
ICAgICBpbnN0cnVjdGlvbiAtPSBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyk7Ci0gICAg
ICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9p
bnRlciAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGwpCi0gICAgICAgICAgICAg
ICAgICAgJiYgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAh
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NvbnN0cnVjdCkKLSAgICAgICAgICAgICAg
ICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9
IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFsKSk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBNdXN0IGJlIHRoYXQgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gd2Fz
IHNvbWUgb3BfY2FsbC4KLSAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xF
TkdUSChvcF9jYWxsKV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3Bf
Y2FsbCkKLSAgICAgICAgICAgICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChv
cF9jYWxsKV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY29uc3Ry
dWN0KQotICAgICAgICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9w
X2NhbGwpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX2V2
YWwpKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uIC09IE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7
Ci0gICAgICAgIH0KKworICAgICAgICBpbnN0cnVjdGlvbiA9IGFkanVzdFBDSWZBdENhbGxTaXRl
KGluc3RydWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChp
bnN0cnVjdGlvbik7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTI2MDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNiArMjMwLDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9k
Q2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRl
eD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5z
aXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCisjaWYgRU5BQkxFKExMSU5UKQor
ICAgICAgICBJbnN0cnVjdGlvbiogYWRqdXN0UENJZkF0Q2FsbFNpdGUoSW5zdHJ1Y3Rpb24qKTsK
KyNlbmRpZgogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1
cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxB
dEluZGV4KHVuc2lnbmVkIGluZGV4KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEyNjAzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNywxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAor
c3RhdGljIHZvaWQgZml4dXBQQ2ZvckV4Y2VwdGlvbklmTmVlZGVkKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFT
U0VSVCghIWNvZGVCbG9jayk7CisgICAgSW5zdHJ1Y3Rpb24qIHBjID0gZXhlYy0+Y3VycmVudFZQ
QygpOworICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMoY29kZUJsb2NrLT5hZGp1c3RQQ0lmQXRDYWxs
U2l0ZShwYykpOworfQorCiB2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUq
IGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcGMpCiB7CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKQEAgLTQ0LDYgKzUyLDcgQEAgdm9pZCBpbnRlcnBy
ZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKgogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5H
CiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwogI2VuZGlmCisgICAgZml4dXBQQ2ZvckV4Y2VwdGlvbklm
TmVlZGVkKGV4ZWMpOwogICAgIGdlbmVyaWNUaHJvdygKICAgICAgICAgZ2xvYmFsRGF0YSwgZXhl
YywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLAogICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+Ynl0
ZWNvZGVPZmZzZXQoZXhlYywgcGMpKTsKQEAgLTYxLDYgKzcwLDcgQEAgSW5zdHJ1Y3Rpb24qIHJl
dHVyblRvVGhyb3coRXhlY1N0YXRlKiBleAogI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAg
ICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKICNlbmRpZgorICAgIGZpeHVwUENm
b3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwg
ZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAKICAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnRE
YXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwpAQCAtNzMsNiArODMsNyBAQCB2b2lkKiBjYWxs
VG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RyCiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJ
TkcKICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIs
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKICNlbmRpZgorICAgIGZpeHVw
UENmb3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsKICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0
YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cg==
</data>
<flag name="commit-queue"
          id="169784"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159505</attachid>
            <date>2012-08-20 13:23:57 -0700</date>
            <delta_ts>2012-08-20 16:48:15 -0700</delta_ts>
            <desc>rev 2: Made adjustPCIfAtCallSite() conditional under ENABLE(LLINT).</desc>
            <filename>bug-94051-rev2.patch</filename>
            <type>text/plain</type>
            <size>8791</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2MDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEyLTA4LTIwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXhlZCBlcnJvbmVvdXMgbGluZSBudW1iZXIgZm9yIExMaW50IGZyYW1lIHdoZW4gdGhyb3dpbmcg
ZXhjZXB0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk0MDUxLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZvciBMTEludCBmcmFtZXMsIGJlZm9yZSB0aHJvd2luZyBhbiBleGNlcHRpb24sIGFkanVz
dCB0aGUgUEMgZnJvbSB0aGUKKyAgICAgICAgcmV0dXJuIFBDIGJhY2sgdG8gdGhlIGNhbGwgUEMg
aWYgd2UgYXJlIGluZGVlZCBhdCBhIGNhbGwgc2l0ZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRqdXN0UENJZkF0Q2FsbFNp
dGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChDb2RlQmxv
Y2spOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpmaXh1cFBDZm9yRXhjZXB0aW9uSWZOZWVkZWQpOgorICAgICAgICAoTExJbnQpOgor
ICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRv
VGhyb3cpOgorCiAyMDEyLTA4LTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGFic3RyYWN0IHZhbHVlcyBhbmQgc3Ry
dWN0dXJlIHRyYW5zaXRpb24gd2F0Y2hwb2ludHMgc2hvdWxkIGJlIHJhdGlvbmFsaXplZApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDEyNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTgwLDYgKzI1ODAsNjAgQEAgdm9pZCBDb2RlQmxvY2s6
OnVubGlua0luY29taW5nQ2FsbHMoKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+
dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQogCisjaWYgRU5BQkxFKExM
SU5UKQorSW5zdHJ1Y3Rpb24qIENvZGVCbG9jazo6YWRqdXN0UENJZkF0Q2FsbFNpdGUoSW5zdHJ1
Y3Rpb24qIHBvdGVudGlhbFJldHVyblBDKQoreworICAgIEFTU0VSVChwb3RlbnRpYWxSZXR1cm5Q
Qyk7CisKKyAgICB1bnNpZ25lZCByZXR1cm5QQ09mZnNldCA9IHBvdGVudGlhbFJldHVyblBDIC0g
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBJbnN0cnVjdGlvbiogYWRqdXN0ZWRQQzsKKyAg
ICB1bnNpZ25lZCBvcGNvZGVMZW5ndGg7CisKKyAgICAvLyBJZiB3ZSBhcmUgYXQgYSBjYWxsc2l0
ZSwgdGhlIExMSW50IHN0b3JlcyB0aGUgUEMgYWZ0ZXIgdGhlIGNhbGwKKyAgICAvLyBpbnN0cnVj
dGlvbiByYXRoZXIgdGhhbiB0aGUgUEMgb2YgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24uIFRoaXMgcmVx
dWlyZXMKKyAgICAvLyBzb21lIGNvcnJlY3RpbmcuIElmIHNvLCB3ZSBjYW4gcmVseSBvbiB0aGUg
ZmFjdCB0aGF0IHRoZSBwcmVjZWRpbmcKKyAgICAvLyBpbnN0cnVjdGlvbiBtdXN0IGJlIG9uZSBv
ZiB0aGUgY2FsbCBpbnN0cnVjdGlvbnMsIHNvIGVpdGhlciBpdCdzIGEKKyAgICAvLyBjYWxsX3Zh
cmFyZ3Mgb3IgaXQncyBhIGNhbGwsIGNvbnN0cnVjdCwgb3IgZXZhbC4KKyAgICAvLworICAgIC8v
IElmIHdlIGFyZSBub3QgYXQgYSBjYWxsIHNpdGUsIHRoZW4gd2UgbmVlZCB0byBndWFyZCBhZ2Fp
bnN0IHRoZQorICAgIC8vIHBvc3NpYmlsaXR5IG9mIHBlZWtpbmcgcGFzdCB0aGUgc3RhcnQgb2Yg
dGhlIGJ5dGVjb2RlIHJhbmdlIGZvciB0aGlzCisgICAgLy8gY29kZUJsb2NrLiBIZW5jZSwgd2Ug
ZG8gYSBib3VuZHMgY2hlY2sgYmVmb3JlIHdlIHBlZWsgYXQgdGhlCisgICAgLy8gcG90ZW50aWFs
ICJwcmVjZWRpbmciIGluc3RydWN0aW9uLgorICAgIC8vICAgICBUaGUgYm91bmRzIGNoZWNrIGlz
IGRvbmUgYnkgY29tcGFyaW5nIHRoZSBvZmZzZXQgb2YgdGhlIHBvdGVudGlhbAorICAgIC8vIHJl
dHVyblBDIHdpdGggdGhlIGxlbmd0aCBvZiB0aGUgb3Bjb2RlLiBJZiB0aGVyZSBpcyByb29tIGZv
ciBhIGNhbGwKKyAgICAvLyBpbnN0cnVjdGlvbiBiZWZvcmUgdGhlIHJldHVyblBDLCB0aGVuIHRo
ZSBvZmZzZXQgb2YgdGhlIHJldHVyblBDIG11c3QKKyAgICAvLyBiZSBncmVhdGVyIHRoYW4gdGhl
IHNpemUgb2YgdGhlIGNhbGwgb3Bjb2RlIHdlJ3JlIGxvb2tpbmcgZm9yLgorCisgICAgLy8gVGhl
IGRldGVybWluYXRpb24gb2YgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24gcHJlc2VudCAoaWYgd2UgYXJl
IGF0IGEKKyAgICAvLyBjYWxsc2l0ZSkgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5nIGFzc3VtcHRp
b25zLiBTbywgYXNzZXJ0IHRoYXQKKyAgICAvLyB0aGV5IGFyZSBzdGlsbCB0cnVlOgorICAgIEFT
U0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPD0gT1BDT0RFX0xFTkdUSChvcF9j
YWxsKSk7CisgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdU
SChvcF9jb25zdHJ1Y3QpKTsKKyAgICBBU1NFUlQoT1BDT0RFX0xFTkdUSChvcF9jYWxsKSA9PSBP
UENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworCisgICAgLy8gQ2hlY2sgZm9yIHRoZSBjYXNl
IG9mIGEgcHJlY2VlZGluZyBvcF9jYWxsX3ZhcmFyZ3M6CisgICAgb3Bjb2RlTGVuZ3RoID0gT1BD
T0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpOworICAgIGFkanVzdGVkUEMgPSBwb3RlbnRpYWxS
ZXR1cm5QQyAtIG9wY29kZUxlbmd0aDsKKyAgICBpZiAoKHJldHVyblBDT2Zmc2V0ID49IG9wY29k
ZUxlbmd0aCkKKyAgICAgICAgJiYgKGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KGxsaW50X29wX2NhbGxfdmFyYXJncykpKSB7CisgICAgICAgIHJldHVybiBhZGp1
c3RlZFBDOworICAgIH0KKworICAgIC8vIENoZWNrIGZvciB0aGUgY2FzZSBvZiB0aGUgb3RoZXIg
MyBjYWxsIGluc3RydWN0aW9uczoKKyAgICBvcGNvZGVMZW5ndGggPSBPUENPREVfTEVOR1RIKG9w
X2NhbGwpOworICAgIGFkanVzdGVkUEMgPSBwb3RlbnRpYWxSZXR1cm5QQyAtIG9wY29kZUxlbmd0
aDsKKyAgICBpZiAoKHJldHVyblBDT2Zmc2V0ID49IG9wY29kZUxlbmd0aCkKKyAgICAgICAgJiYg
KGFkanVzdGVkUEMtPnUucG9pbnRlciA9PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2Nh
bGwpCisgICAgICAgICAgICB8fCBhZGp1c3RlZFBDLT51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0
PHZvaWQqPihsbGludF9vcF9jb25zdHJ1Y3QpCisgICAgICAgICAgICB8fCBhZGp1c3RlZFBDLT51
LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX2V2YWwpKSkgewor
ICAgICAgICByZXR1cm4gYWRqdXN0ZWRQQzsKKyAgICB9CisKKyAgICAvLyBOb3QgYSBjYWxsIHNp
dGUuIE5vIG5lZWQgdG8gYWRqdXN0IFBDLiBKdXN0IHJldHVybiB0aGUgb3JpZ2luYWwuCisgICAg
cmV0dXJuIHBvdGVudGlhbFJldHVyblBDOworfQorI2VuZGlmCisKIHVuc2lnbmVkIENvZGVCbG9j
azo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpCiB7CiAjaWYgRU5BQkxFKExMSU5UKQpAQCAtMjU5MCwyOCArMjY0NCw4IEBAIHVu
c2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1MKICAgICAgICAgQVNTRVJUKEpJ
VENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7CiAgICAgICAgIEFTU0VSVChpbnN0
cnVjdGlvbik7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGUgTExJbnQgc3RvcmVzIHRoZSBQQyBh
ZnRlciB0aGUgY2FsbCBpbnN0cnVjdGlvbiByYXRoZXIgdGhhbiB0aGUgUEMgb2YKLSAgICAgICAg
Ly8gdGhlIGNhbGwgaW5zdHJ1Y3Rpb24uIFRoaXMgcmVxdWlyZXMgc29tZSBjb3JyZWN0aW5nLiBX
ZSByZWx5IG9uIHRoZSBmYWN0Ci0gICAgICAgIC8vIHRoYXQgdGhlIHByZWNlZGluZyBpbnN0cnVj
dGlvbiBtdXN0IGJlIG9uZSBvZiB0aGUgY2FsbCBpbnN0cnVjdGlvbnMsIHNvCi0gICAgICAgIC8v
IGVpdGhlciBpdCdzIGEgY2FsbF92YXJhcmdzIG9yIGl0J3MgYSBjYWxsLCBjb25zdHJ1Y3QsIG9y
IGV2YWwuCi0gICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykgPD0g
T1BDT0RFX0xFTkdUSChvcF9jYWxsKSk7Ci0gICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9w
X2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY29uc3RydWN0KSk7Ci0gICAgICAgIEFTU0VSVChP
UENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7Ci0g
ICAgICAgIGlmIChpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpXS51
LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX3ZhcmFyZ3MpKSB7
Ci0gICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhlIHByZWNlZGluZyBpbnN0cnVjdGlvbiBt
dXN0IGJlIG9wX2NhbGxfdmFyYXJncyBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0aGF0Ci0gICAg
ICAgICAgICAvLyB0aGUgcG9pbnRlciB0byB0aGUgY2FsbF92YXJhcmdzIGNvdWxkIGJlIGFuIG9w
ZXJhbmQgdG8gdGhlIGNhbGwuCi0gICAgICAgICAgICBpbnN0cnVjdGlvbiAtPSBPUENPREVfTEVO
R1RIKG9wX2NhbGxfdmFyYXJncyk7Ci0gICAgICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bLU9Q
Q09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxs
aW50X29wX2NhbGwpCi0gICAgICAgICAgICAgICAgICAgJiYgaW5zdHJ1Y3Rpb25bLU9QQ09ERV9M
RU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29w
X2NvbnN0cnVjdCkKLSAgICAgICAgICAgICAgICAgICAmJiBpbnN0cnVjdGlvblstT1BDT0RFX0xF
TkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3Bf
Y2FsbF9ldmFsKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBNdXN0IGJlIHRo
YXQgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gd2FzIHNvbWUgb3BfY2FsbC4KLSAgICAgICAgICAgIEFT
U0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyID09IGJp
dHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbCkKLSAgICAgICAgICAgICAgICAgICB8fCBp
bnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyID09IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4obGxpbnRfb3BfY29uc3RydWN0KQotICAgICAgICAgICAgICAgICAgIHx8IGlu
c3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9j
YXN0PHZvaWQqPihsbGludF9vcF9jYWxsX2V2YWwpKTsKLSAgICAgICAgICAgIGluc3RydWN0aW9u
IC09IE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7Ci0gICAgICAgIH0KKworICAgICAgICBpbnN0cnVj
dGlvbiA9IGFkanVzdFBDSWZBdENhbGxTaXRlKGluc3RydWN0aW9uKTsKICAgICAgICAgCiAgICAg
ICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTI2MDMx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzAsNiArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0
aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2lu
KCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAg
ICAgfQogCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogYWRqdXN0UENJ
ZkF0Q2FsbFNpdGUoSW5zdHJ1Y3Rpb24qKTsKKyNlbmRpZgogICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDEyNjAzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxNCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAorc3RhdGljIHZvaWQgZml4dXBQQ2ZvckV4Y2VwdGlv
bklmTmVlZGVkKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVCghIWNvZGVCbG9jayk7CisgICAgSW5zdHJ1
Y3Rpb24qIHBjID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMo
Y29kZUJsb2NrLT5hZGp1c3RQQ0lmQXRDYWxsU2l0ZShwYykpOworfQorCiB2b2lkIGludGVycHJl
dGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcGMpCiB7
CiAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKQEAg
LTQ0LDYgKzUyLDcgQEAgdm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKgog
I2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0
aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwogI2VuZGlm
CisgICAgZml4dXBQQ2ZvckV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMpOwogICAgIGdlbmVyaWNUaHJv
dygKICAgICAgICAgZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLAogICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgcGMpKTsKQEAgLTYx
LDYgKzcwLDcgQEAgSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleAogI2lm
IExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCiAgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9u
ICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlv
bigpKTsKICNlbmRpZgorICAgIGZpeHVwUENmb3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsKICAg
ICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBw
YyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAKICAg
ICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwpA
QCAtNzMsNiArODMsNyBAQCB2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3Ry
CiAjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKICAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNl
cHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlw
dGlvbigpKTsKICNlbmRpZgorICAgIGZpeHVwUENmb3JFeGNlcHRpb25JZk5lZWRlZChleGVjKTsK
ICAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9u
LCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKICAgICAK
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxf
dHJhbXBvbGluZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>