<?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>150186</bug_id>
          
          <creation_ts>2015-10-15 13:58:20 -0700</creation_ts>
          <short_desc>Add MacroAssembler::callProbe() for supporting lambda JIT probes.</short_desc>
          <delta_ts>2015-10-16 13:38:17 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1133592</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-10-15 13:58:20 -0700</bug_when>
    <thetext>With callProbe(), we can now make probes that are lambdas.  For example, we can now conveniently add probes like so: 

    // When you know exactly which register you want to inspect:
    jit.callProbe([] (MacroAssembler::ProbeContext* context) {
        intptr_t value = reinterpret_cast&lt;intptr_t&gt;(context-&gt;cpu.eax);
        dataLogF(&quot;eax %p\n&quot;, context-&gt;cpu.eax); // Inspect the register.
        ASSERT(value &gt; 10); // Add test code for debugging.
    });

    // When you want to inspect whichever register the JIT allocated:
    auto reg = op1.gpr();
    jit.callProbe([reg] (MacroAssembler::ProbeContext* context) {
        intptr_t value = reinterpret_cast&lt;intptr_t&gt;(context-&gt;gpr(reg));
        dataLogF(&quot;reg %s: %ld\n&quot;, context-&gt;gprName(reg), value);
        ASSERT(value &gt; 10);
    });

callProbe() is only meant to be used for debugging sessions.  It is not appropriate to use it in permanent code (even for debug builds).  This is because:
1. The probe mechanism saves and restores all (and I really mean &quot;all&quot;) registers, and is inherently slow.
2. callProbe() currently works by allocating (via new) StdFunctionData structs to keep the callback std::function alive, but never deletes them i.e. it leaks a bit of memory each time the JIT runs it.

These limitations are acceptable for a debugging session (assuming you&apos;re not debugging a memory leak), but not for deployment code.  If there&apos;s a need, we can plug that leak in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133593</commentid>
    <comment_count>1</comment_count>
      <attachid>263187</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-10-15 14:00:53 -0700</bug_when>
    <thetext>Created attachment 263187
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133595</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-15 14:02:18 -0700</bug_when>
    <thetext>Attachment 263187 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/MacroAssembler.h:1593:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssembler.cpp:37:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssembler.cpp:38:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssembler.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssembler.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 5 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133596</commentid>
    <comment_count>3</comment_count>
      <attachid>263187</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-10-15 14:04:52 -0700</bug_when>
    <thetext>Comment on attachment 263187
the patch.

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

&gt; Source/JavaScriptCore/assembler/MacroAssembler.cpp:37
&gt; +struct StdFunctionData
&gt; +{

Oops.  Should put these on the same line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1133651</commentid>
    <comment_count>4</comment_count>
      <attachid>263187</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-10-15 16:01:02 -0700</bug_when>
    <thetext>Comment on attachment 263187
the patch.

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

r=me

Please fix non-idiomatic use of std::function.

&gt; Source/JavaScriptCore/assembler/MacroAssembler.cpp:42
&gt; +    StdFunctionData(std::function&lt;void (MacroAssembler::ProbeContext*)&gt; func)
&gt; +        : func(func)
&gt; +    { }
&gt; +    
&gt; +    std::function&lt;void (MacroAssembler::ProbeContext*)&gt; func;

You shouldn&apos;t wrap std::function. std::function is the wrapper.

&gt; Source/JavaScriptCore/assembler/MacroAssembler.cpp:47
&gt; +    auto stdFunctionData = reinterpret_cast&lt;StdFunctionData*&gt;(context-&gt;arg1);

static_cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134014</commentid>
    <comment_count>5</comment_count>
      <attachid>263319</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-10-16 13:32:42 -0700</bug_when>
    <thetext>Created attachment 263319
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134017</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-10-16 13:38:17 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r191202: &lt;http://trac.webkit.org/r191202&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263187</attachid>
            <date>2015-10-15 14:00:53 -0700</date>
            <delta_ts>2015-10-16 13:32:42 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-150186.patch</filename>
            <type>text/plain</type>
            <size>5452</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxMTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU3IEBA
CisyMDE1LTEwLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgTWFjcm9Bc3NlbWJsZXI6OmNhbGxQcm9iZSgpIGZvciBzdXBwb3J0aW5nIGxhbWJkYSBKSVQg
cHJvYmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUwMTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2l0aCBjYWxsUHJvYmUoKSwgd2UgY2FuIG5vdyBtYWtlIHByb2JlcyB0aGF0IGFyZSBsYW1iZGFz
LiAgRm9yIGV4YW1wbGUsIHdlIGNhbgorICAgICAgICBub3cgY29udmVuaWVudGx5IGFkZCBwcm9i
ZXMgbGlrZSBzbzogCisKKyAgICAgICAgICAgIC8vIFdoZW4geW91IGtub3cgZXhhY3RseSB3aGlj
aCByZWdpc3RlciB5b3Ugd2FudCB0byBpbnNwZWN0OgorICAgICAgICAgICAgaml0LmNhbGxQcm9i
ZShbXSAoTWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29udGV4dCogY29udGV4dCkgeworICAgICAgICAg
ICAgICAgIGludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29udGV4
dC0+Y3B1LmVheCk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoImVheCAlcFxuIiwgY29udGV4
dC0+Y3B1LmVheCk7IC8vIEluc3BlY3QgdGhlIHJlZ2lzdGVyLgorICAgICAgICAgICAgICAgIEFT
U0VSVCh2YWx1ZSA+IDEwKTsgLy8gQWRkIHRlc3QgY29kZSBmb3IgZGVidWdnaW5nLgorICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIFdoZW4geW91IHdhbnQgdG8gaW5zcGVjdCB3aGlj
aGV2ZXIgcmVnaXN0ZXIgdGhlIEpJVCBhbGxvY2F0ZWQ6CisgICAgICAgICAgICBhdXRvIHJlZyA9
IG9wMS5ncHIoKTsKKyAgICAgICAgICAgIGppdC5jYWxsUHJvYmUoW3JlZ10gKE1hY3JvQXNzZW1i
bGVyOjpQcm9iZUNvbnRleHQqIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBpbnRwdHJfdCB2
YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvbnRleHQtPmdwcihyZWcpKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nRigicmVnICVzOiAlbGRcbiIsIGNvbnRleHQtPmdwck5hbWUo
cmVnKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSA+IDEwKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIGNhbGxQcm9iZSgpIGlzIG9ubHkgbWVhbnQgdG8gYmUgdXNl
ZCBmb3IgZGVidWdnaW5nIHNlc3Npb25zLiAgSXQgaXMgbm90CisgICAgICAgIGFwcHJvcHJpYXRl
IHRvIHVzZSBpdCBpbiBwZXJtYW5lbnQgY29kZSAoZXZlbiBmb3IgZGVidWcgYnVpbGRzKS4KKyAg
ICAgICAgVGhpcyBpcyBiZWNhdXNlOgorICAgICAgICAxLiBUaGUgcHJvYmUgbWVjaGFuaXNtIHNh
dmVzIGFuZCByZXN0b3JlcyBhbGwgKGFuZCBJIHJlYWxseSBtZWFuICJhbGwiKQorICAgICAgICAg
ICByZWdpc3RlcnMsIGFuZCBpcyBpbmhlcmVudGx5IHNsb3cuCisgICAgICAgIDIuIGNhbGxQcm9i
ZSgpIGN1cnJlbnRseSB3b3JrcyBieSBhbGxvY2F0aW5nICh2aWEgbmV3KSBTdGRGdW5jdGlvbkRh
dGEgc3RydWN0cyB0bworICAgICAgICAgICBrZWVwIHRoZSBjYWxsYmFjayBzdGQ6OmZ1bmN0aW9u
IGFsaXZlLCBidXQgbmV2ZXIgZGVsZXRlcyB0aGVtIGkuZS4gaXQgbGVha3MgYQorICAgICAgICAg
ICBiaXQgb2YgbWVtb3J5IGVhY2ggdGltZSB0aGUgSklUIHJ1bnMgaXQuCisKKyAgICAgICAgVGhl
c2UgbGltaXRhdGlvbnMgYXJlIGFjY2VwdGFibGUgZm9yIGEgZGVidWdnaW5nIHNlc3Npb24gKGFz
c3VtaW5nIHlvdSdyZSBub3QKKyAgICAgICAgZGVidWdnaW5nIGEgbWVtb3J5IGxlYWspLCBidXQg
bm90IGZvciBkZXBsb3ltZW50IGNvZGUuICBJZiB0aGVyZSdzIGEgbmVlZCwgd2UgY2FuCisgICAg
ICAgIHBsdWcgdGhhdCBsZWFrIGluIGFub3RoZXIgcGF0Y2guCisKKyAgICAgICAgKiBhc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyOjpDUFVTdGF0ZTo6ZnByKToKKyAgICAgICAgLSBSZW1vdmVkIGFuIHVubmVjZXNz
YXJ5IGVtcHR5IGxpbmUuCisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlBy
b2JlQ29udGV4dDo6Z3ByKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
UHJvYmVDb250ZXh0OjpmcHIpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
OjpQcm9iZUNvbnRleHQ6Omdwck5hbWUpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjpQcm9iZUNvbnRleHQ6OmZwck5hbWUpOgorICAgICAgICAtIEFkZGVkIHNvbWUgY29u
dmVuaWVuY2UgZnVuY3Rpb25zIHRoYXQgd2lsbCBtYWtlIHVzaW5nIHRoZSBwcm9iZSBtZWNoYW5p
c20KKyAgICAgICAgICBlYXNpZXIuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwOgorICAgICAgICAoSlNDOjpTdGRGdW5jdGlvbkRhdGE6OlN0ZEZ1bmN0aW9uRGF0YSk6
CisgICAgICAgIChKU0M6OnN0ZEZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlcjo6Y2FsbFByb2JlKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaDoKKwogMjAxNS0xMC0xNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIE1BU01fUFJPQkUgc3VwcG9ydCBmb3IgQVJNNjQuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJs
ZXIuaAkocmV2aXNpb24gMTkxMTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwMyw3ICs5MDMs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCiAgICAgfTsKIAogICAgIHN0cnVjdCBQcm9i
ZUNvbnRleHQ7CkBAIC05MTQsNiArOTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCogYXJn
MTsKICAgICAgICAgdm9pZCogYXJnMjsKICAgICAgICAgQ1BVU3RhdGUgY3B1OworCisgICAgICAg
IC8vIENvbnZlbmllbmNlIG1ldGhvZHM6CisgICAgICAgIHZvaWQqIGdwcihSZWdpc3RlcklEIHJl
Z0lEKSB7IHJldHVybiBjcHUuZ3ByKHJlZ0lEKTsgfQorICAgICAgICBkb3VibGUgZnByKEZQUmVn
aXN0ZXJJRCByZWdJRCkgeyByZXR1cm4gY3B1LmdwcihyZWdJRCk7IH0KKyAgICAgICAgY29uc3Qg
Y2hhciogZ3ByTmFtZShSZWdpc3RlcklEIHJlZ0lEKSB7IHJldHVybiBjcHUuZ3ByTmFtZShyZWdJ
RCk7IH0KKyAgICAgICAgY29uc3QgY2hhciogZnByTmFtZShGUFJlZ2lzdGVySUQgcmVnSUQpIHsg
cmV0dXJuIGNwdS5mcHJOYW1lKHJlZ0lEKTsgfQogICAgIH07CiAKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIGVtaXRzIGNvZGUgdG8gcHJlc2VydmUgdGhlIENQVVN0YXRlIChlLmcuIHJlZ2lzdGVycyks
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyLmNwcAkocmV2aXNpb24gMTkxMTMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDI4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBkb3VibGUgTWFjcm9Bc3NlbWJsZXI6OnR3b1Rv
VGhlMzIgPSAoZG91YmxlKTB4MTAwMDAwMDAwdWxsOwogCisjaWYgRU5BQkxFKE1BU01fUFJPQkUp
CitzdHJ1Y3QgU3RkRnVuY3Rpb25EYXRhCit7CisgICAgU3RkRnVuY3Rpb25EYXRhKHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoTWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29udGV4dCopPiBmdW5jKQorICAgICAg
ICA6IGZ1bmMoZnVuYykKKyAgICB7IH0KKyAgICAKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKE1h
Y3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQqKT4gZnVuYzsKK307CisgICAgCitzdGF0aWMgdm9p
ZCBzdGRGdW5jdGlvbkNhbGxiYWNrKE1hY3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgYXV0byBzdGRGdW5jdGlvbkRhdGEgPSByZWludGVycHJldF9jYXN0PFN0ZEZ1
bmN0aW9uRGF0YSo+KGNvbnRleHQtPmFyZzEpOworICAgIHN0ZEZ1bmN0aW9uRGF0YS0+ZnVuYyhj
b250ZXh0KTsKK30KKyAgICAKK3ZvaWQgTWFjcm9Bc3NlbWJsZXI6OmNhbGxQcm9iZShzdGQ6OmZ1
bmN0aW9uPHZvaWQgKE1hY3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQqKT4gZnVuYykKK3sKKyAg
ICBwcm9iZShzdGRGdW5jdGlvbkNhbGxiYWNrLCBuZXcgU3RkRnVuY3Rpb25EYXRhKGZ1bmMpKTsK
K30KKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTkxMTMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTg5LDYgKzE1ODksOCBAQCBwdWJsaWM6CiAgICAgLy8gU2VlIGNvbW1lbnRz
IGluIE1hY3JvQXNzZW1ibGVyUHJpbnRlci5oIGZvciBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRo
aXMuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgogICAgIHZvaWQgcHJpbnQo
QXJndW1lbnRzLi4uIGFyZ3MpOworCisgICAgdm9pZCBjYWxsUHJvYmUoc3RkOjpmdW5jdGlvbjx2
b2lkIChQcm9iZUNvbnRleHQqKT4pOwogI2VuZGlmCiB9OwogCg==
</data>
<flag name="review"
          id="288384"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263319</attachid>
            <date>2015-10-16 13:32:42 -0700</date>
            <delta_ts>2015-10-16 13:32:42 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-150186.patch</filename>
            <type>text/plain</type>
            <size>5394</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkxMTk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBA
CisyMDE1LTEwLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgTWFjcm9Bc3NlbWJsZXI6OmNhbGxQcm9iZSgpIGZvciBzdXBwb3J0aW5nIGxhbWJkYSBKSVQg
cHJvYmVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUwMTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
V2l0aCBjYWxsUHJvYmUoKSwgd2UgY2FuIG5vdyBtYWtlIHByb2JlcyB0aGF0IGFyZSBsYW1iZGFz
LiAgRm9yIGV4YW1wbGUsIHdlIGNhbgorICAgICAgICBub3cgY29udmVuaWVudGx5IGFkZCBwcm9i
ZXMgbGlrZSBzbzogCisKKyAgICAgICAgICAgIC8vIFdoZW4geW91IGtub3cgZXhhY3RseSB3aGlj
aCByZWdpc3RlciB5b3Ugd2FudCB0byBpbnNwZWN0OgorICAgICAgICAgICAgaml0LmNhbGxQcm9i
ZShbXSAoTWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29udGV4dCogY29udGV4dCkgeworICAgICAgICAg
ICAgICAgIGludHB0cl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29udGV4
dC0+Y3B1LmVheCk7CisgICAgICAgICAgICAgICAgZGF0YUxvZ0YoImVheCAlcFxuIiwgY29udGV4
dC0+Y3B1LmVheCk7IC8vIEluc3BlY3QgdGhlIHJlZ2lzdGVyLgorICAgICAgICAgICAgICAgIEFT
U0VSVCh2YWx1ZSA+IDEwKTsgLy8gQWRkIHRlc3QgY29kZSBmb3IgZGVidWdnaW5nLgorICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIFdoZW4geW91IHdhbnQgdG8gaW5zcGVjdCB3aGlj
aGV2ZXIgcmVnaXN0ZXIgdGhlIEpJVCBhbGxvY2F0ZWQ6CisgICAgICAgICAgICBhdXRvIHJlZyA9
IG9wMS5ncHIoKTsKKyAgICAgICAgICAgIGppdC5jYWxsUHJvYmUoW3JlZ10gKE1hY3JvQXNzZW1i
bGVyOjpQcm9iZUNvbnRleHQqIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBpbnRwdHJfdCB2
YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvbnRleHQtPmdwcihyZWcpKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nRigicmVnICVzOiAlbGRcbiIsIGNvbnRleHQtPmdwck5hbWUo
cmVnKSwgdmFsdWUpOworICAgICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZSA+IDEwKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgIGNhbGxQcm9iZSgpIGlzIG9ubHkgbWVhbnQgdG8gYmUgdXNl
ZCBmb3IgZGVidWdnaW5nIHNlc3Npb25zLiAgSXQgaXMgbm90CisgICAgICAgIGFwcHJvcHJpYXRl
IHRvIHVzZSBpdCBpbiBwZXJtYW5lbnQgY29kZSAoZXZlbiBmb3IgZGVidWcgYnVpbGRzKS4KKyAg
ICAgICAgVGhpcyBpcyBiZWNhdXNlOgorICAgICAgICAxLiBUaGUgcHJvYmUgbWVjaGFuaXNtIHNh
dmVzIGFuZCByZXN0b3JlcyBhbGwgKGFuZCBJIHJlYWxseSBtZWFuICJhbGwiKQorICAgICAgICAg
ICByZWdpc3RlcnMsIGFuZCBpcyBpbmhlcmVudGx5IHNsb3cuCisgICAgICAgIDIuIGNhbGxQcm9i
ZSgpIGN1cnJlbnRseSB3b3JrcyBieSBhbGxvY2F0aW5nICh2aWEgbmV3KSBhIHN0ZDo6ZnVuY3Rp
b24gdG8KKyAgICAgICAgICAgZ3VhcmFudGVlIHRoYXQgaXQgaXMgcGVyc2lzdGVkIGZvciB0aGUg
ZHVyYXRpb24gdGhhdCB0aGUgSklUIGdlbmVyYXRlZCBjb2RlIGlzCisgICAgICAgICAgIGxpdmUu
ICBXZSBkb24ndCBjdXJyZW50bHkgZGVsZXRlIGl0IGV2ZXIgaS5lLiBpdCBsZWFrcyBhIGJpdCBv
ZiBtZW1vcnkgZWFjaAorICAgICAgICAgICB0aW1lIHRoZSBKSVQgZ2VuZXJhdGVzIGNvZGUgdGhh
dCBjb250YWlucyBzdWNoIGEgbGFtYmRhIHByb2JlLgorCisgICAgICAgIFRoZXNlIGxpbWl0YXRp
b25zIGFyZSBhY2NlcHRhYmxlIGZvciBhIGRlYnVnZ2luZyBzZXNzaW9uIChhc3N1bWluZyB5b3Un
cmUgbm90CisgICAgICAgIGRlYnVnZ2luZyBhIG1lbW9yeSBsZWFrKSwgYnV0IG5vdCBmb3IgZGVw
bG95bWVudCBjb2RlLiAgSWYgdGhlcmUncyBhIG5lZWQsIHdlIGNhbgorICAgICAgICBwbHVnIHRo
YXQgbGVhayBpbiBhbm90aGVyIHBhdGNoLgorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU6OmZwcik6CisgICAgICAgIC0gUmVtb3ZlZCBhbiB1bm5lY2Vzc2FyeSBlbXB0eSBs
aW5lLgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQ6
Omdwcik6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29udGV4
dDo6ZnByKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6UHJvYmVDb250
ZXh0OjpncHJOYW1lKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6UHJv
YmVDb250ZXh0OjpmcHJOYW1lKToKKyAgICAgICAgLSBBZGRlZCBzb21lIGNvbnZlbmllbmNlIGZ1
bmN0aW9ucyB0aGF0IHdpbGwgbWFrZSB1c2luZyB0aGUgcHJvYmUgbWVjaGFuaXNtCisgICAgICAg
ICAgZWFzaWVyLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6U3RkRnVuY3Rpb25EYXRhOjpTdGRGdW5jdGlvbkRhdGEpOgorICAgICAgICAo
SlNDOjpzdGRGdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OmNhbGxQcm9iZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisKIDIw
MTUtMTAtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5MTE5MC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
CShyZXZpc2lvbiAxOTExOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTAzLDcgKzkwMyw2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0KICAgICB9OwogCiAgICAgc3RydWN0IFByb2JlQ29u
dGV4dDsKQEAgLTkxNCw2ICs5MTMsMTIgQEAgcHVibGljOgogICAgICAgICB2b2lkKiBhcmcxOwog
ICAgICAgICB2b2lkKiBhcmcyOwogICAgICAgICBDUFVTdGF0ZSBjcHU7CisKKyAgICAgICAgLy8g
Q29udmVuaWVuY2UgbWV0aG9kczoKKyAgICAgICAgdm9pZCogZ3ByKFJlZ2lzdGVySUQgcmVnSUQp
IHsgcmV0dXJuIGNwdS5ncHIocmVnSUQpOyB9CisgICAgICAgIGRvdWJsZSBmcHIoRlBSZWdpc3Rl
cklEIHJlZ0lEKSB7IHJldHVybiBjcHUuZ3ByKHJlZ0lEKTsgfQorICAgICAgICBjb25zdCBjaGFy
KiBncHJOYW1lKFJlZ2lzdGVySUQgcmVnSUQpIHsgcmV0dXJuIGNwdS5ncHJOYW1lKHJlZ0lEKTsg
fQorICAgICAgICBjb25zdCBjaGFyKiBmcHJOYW1lKEZQUmVnaXN0ZXJJRCByZWdJRCkgeyByZXR1
cm4gY3B1LmZwck5hbWUocmVnSUQpOyB9CiAgICAgfTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24g
ZW1pdHMgY29kZSB0byBwcmVzZXJ2ZSB0aGUgQ1BVU3RhdGUgKGUuZy4gcmVnaXN0ZXJzKSwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuY3BwCShyZXZpc2lvbiAxOTExOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsMTkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IGRvdWJsZSBNYWNyb0Fzc2VtYmxlcjo6dHdvVG9UaGUz
MiA9IChkb3VibGUpMHgxMDAwMDAwMDB1bGw7CiAKKyNpZiBFTkFCTEUoTUFTTV9QUk9CRSkKK3N0
YXRpYyB2b2lkIHN0ZEZ1bmN0aW9uQ2FsbGJhY2soTWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBhdXRvIGZ1bmMgPSBzdGF0aWNfY2FzdDxjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKE1hY3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQqKT4qPihjb250ZXh0LT5h
cmcxKTsKKyAgICAoKmZ1bmMpKGNvbnRleHQpOworfQorICAgIAordm9pZCBNYWNyb0Fzc2VtYmxl
cjo6Y2FsbFByb2JlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoTWFjcm9Bc3NlbWJsZXI6OlByb2JlQ29u
dGV4dCopPiBmdW5jKQoreworICAgIHByb2JlKHN0ZEZ1bmN0aW9uQ2FsbGJhY2ssIG5ldyBzdGQ6
OmZ1bmN0aW9uPHZvaWQgKE1hY3JvQXNzZW1ibGVyOjpQcm9iZUNvbnRleHQqKT4oZnVuYykpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxOTExOTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1ODksNiArMTU4OSw4IEBAIHB1YmxpYzoKICAgICAvLyBTZWUgY29tbWVudHMg
aW4gTWFjcm9Bc3NlbWJsZXJQcmludGVyLmggZm9yIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhp
cy4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgdm9pZCBwcmludChB
cmd1bWVudHMuLi4gYXJncyk7CisKKyAgICB2b2lkIGNhbGxQcm9iZShzdGQ6OmZ1bmN0aW9uPHZv
aWQgKFByb2JlQ29udGV4dCopPik7CiAjZW5kaWYKIH07CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>