<?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>94201</bug_id>
          
          <creation_ts>2012-08-16 00:52:46 -0700</creation_ts>
          <short_desc>Structure check hoisting should be less expensive</short_desc>
          <delta_ts>2012-08-16 16:18:04 -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>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>94205</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696859</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 00:52:46 -0700</bug_when>
    <thetext>Currently, structure check hoisting runs after the DFG optimization fixpoint.  But when it modifies the IR (which is currently almost always, since array checks have been turned into structure checks), it requires the CFA to be rerun, outside of the fixpoint.  Also, structure check hoisting requires that the post-fixpoint CSE fixes up redundant GetLocals introduced by hoisting.

But there&apos;s no reason why structure check hoisting can&apos;t run before the optimization fixpoint.  There&apos;s also no reason why structure check hoisting can&apos;t just clean up after itself to eliminate the need for CSE to worry about redundant GetLocals on non-captured variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696865</commentid>
    <comment_count>1</comment_count>
      <attachid>158739</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 00:55:46 -0700</bug_when>
    <thetext>Created attachment 158739
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696868</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 00:58:48 -0700</bug_when>
    <thetext>Attachment 158739 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGGraph.h:635:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 6 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>696872</commentid>
    <comment_count>3</comment_count>
      <attachid>158742</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 01:03:37 -0700</bug_when>
    <thetext>Created attachment 158742
the patch

Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697355</commentid>
    <comment_count>4</comment_count>
      <attachid>158742</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-16 12:25:37 -0700</bug_when>
    <thetext>Comment on attachment 158742
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697645</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-16 16:18:04 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/125823</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158739</attachid>
            <date>2012-08-16 00:55:46 -0700</date>
            <delta_ts>2012-08-16 01:03:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>betterhoist_patch_1.diff</filename>
            <type>text/plain</type>
            <size>8464</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1NzU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEyLTA4LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3RydWN0dXJlIGNoZWNrIGhvaXN0aW5nIHNob3VsZCBiZSBsZXNzIGV4cGVuc2l2ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFwcGVhcnMgbGlr
ZSBhIGJyb2FkIHdpbiBvbiBzaG9ydC1ydW5uaW5nIHByb2dyYW1zLgorCisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0NT
RVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0Up
OgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
Ojpjb21wYXJlQW5kU3dhcCk6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OnN1YnN0aXR1dGUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpzdWJzdGl0dXRl
R2V0TG9jYWwpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZTo6cnVu
KToKKwogMjAxMi0wOC0xNSAgQnJ1bm8gZGUgT2xpdmVpcmEgQWJpbmFkZXIgIDxicnVuby5hYmlu
YWRlckBiYXN5c2tvbS5jb20+CiAKICAgICAgICAgW2NzczMtdGV4dF0gQWRkIENTUzMgVGV4dCBk
ZWNvcmF0aW9uIGNvbXBpbGUgZmxhZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNiArMzE4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKKyAgICAgICAgICAgICAg
ICBjYXNlIEZvcndhcmRDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24n
dCBjYXJlIGFib3V0IHRoZXNlIGJlY2F1c2UgaWYgd2UgZ2V0IHVzZXMgb2YgdGhlIHJlbGV2YW50
CiAgICAgICAgICAgICAgICAgICAgIC8vIHZhcmlhYmxlIHRoZW4gd2UgY2FuIHNhZmVseSBnZXQg
cmlkIG9mIHRoZXNlLCB0b28uIFRoaXMgb2YgY291cnNlCkBAIC00ODEsNiArNDgyLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKKyAgICAgICAgICAgICAgICBjYXNlIEZvcndhcmRD
aGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50OiB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IGdldCByaWQg
b2YgdGhpcyBub2RlLCBpZiBpdCByZWZlcmVuY2VzIGEgcGhhbnRvbSBhcmd1bWVudC4KICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc09LVG9PcHRpbWl6ZShtX2dyYXBoW25vZGUuY2hpbGQxKCld
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQ0LDcgKzk0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgaWYgKG1fZml4cG9pbnRTdGF0ZSA9PSBGaXhwb2ludE5vdENvbnZlcmdlZCAmJiAh
dmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVkKCkpCisgICAgICAgICAgICBpZiAoIXZhcmlh
YmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgTm9kZUluZGV4IHJlbGV2YW50TG9jYWxPcDsKICAgICAgICAgICAgIE5vZGVJbmRl
eCBwb3NzaWJsZVJlcGxhY2VtZW50ID0gZ2V0TG9jYWxMb2FkRWxpbWluYXRpb24odmFyaWFibGVB
Y2Nlc3NEYXRhLT5sb2NhbCgpLCByZWxldmFudExvY2FsT3AsIHZhcmlhYmxlQWNjZXNzRGF0YS0+
aXNDYXB0dXJlZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAJKHJldmlzaW9uIDEyNTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJp
dmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBpbmxpbmUgYm9vbCBjb21w
aWxlKENvbXBpbGVNb2RlIGNvbXBpbGVNCiAgICAgdmFsaWRhdGUoZGZnKTsKICAgICBwZXJmb3Jt
UHJlZGljdGlvblByb3BhZ2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUZpeHVwKGRmZyk7CisgICAg
cGVyZm9ybVN0cnVjdHVyZUNoZWNrSG9pc3RpbmcoZGZnKTsKICAgICB1bnNpZ25lZCBjbnQgPSAx
OwogICAgIGZvciAoOzsgKytjbnQpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCkBA
IC0xMDYsMTAgKzEwNyw3IEBAIGlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGls
ZU0KICAgICAgICAgZGZnLnJlc2V0RXhpdFN0YXRlcygpOwogICAgICAgICBwZXJmb3JtRml4dXAo
ZGZnKTsKICAgICB9Ci0gICAgYm9vbCBzaG91bGRSZWRvQ0ZBID0gcGVyZm9ybVN0cnVjdHVyZUNo
ZWNrSG9pc3RpbmcoZGZnKTsKICAgICBwZXJmb3JtQ1NFKGRmZywgRml4cG9pbnRDb252ZXJnZWQp
OwotICAgIGlmIChzaG91bGRSZWRvQ0ZBKQotICAgICAgICBwZXJmb3JtQ0ZBKGRmZyk7CiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGRhdGFMb2coIkRGRyBvcHRpbWl6YXRpb24g
Zml4cG9pbnQgY29udmVyZ2VkIGluICV1IGl0ZXJhdGlvbnMuXG4iLCBjbnQpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMjU2ODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw2ICsxMzcsMjAgQEAgcHVibGljOgogICAgICAgICBlZGdlID0gbmV3RWRnZTsKICAgICB9
CiAgICAgCisgICAgdm9pZCBjb21wYXJlQW5kU3dhcChFZGdlJiBlZGdlLCBOb2RlSW5kZXggb2xk
SW5kZXgsIE5vZGVJbmRleCBuZXdJbmRleCwgYm9vbCBjaGFuZ2VSZWYpCisgICAgeworICAgICAg
ICBpZiAoZWRnZS5pbmRleCgpICE9IG9sZEluZGV4KQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjaGFuZ2VJbmRleChlZGdlLCBuZXdJbmRleCwgY2hhbmdlUmVmKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBjb21wYXJlQW5kU3dhcChFZGdlJiBlZGdlLCBFZGdlIG9sZEVkZ2UsIEVkZ2Ug
bmV3RWRnZSwgYm9vbCBjaGFuZ2VSZWYpCisgICAgeworICAgICAgICBpZiAoZWRnZSAhPSBvbGRF
ZGdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGFuZ2VFZGdlKGVkZ2UsIG5ld0Vk
Z2UsIGNoYW5nZVJlZik7CisgICAgfQorICAgIAogICAgIHZvaWQgY2xlYXJBbmREZXJlZkNoaWxk
MShOb2RlJiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQpAQCAtNjE0
LDYgKzYyOCw3MCBAQCBwdWJsaWM6CiAgICAgICAgIHZvdGUobm9kZS5jaGlsZDMoKSwgYmFsbG90
KTsKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gLy8gVCA9IE5vZGVJbmRl
eCBvciBFZGdlCisgICAgdm9pZCBzdWJzdGl0dXRlKEJhc2ljQmxvY2smIGJsb2NrLCB1bnNpZ25l
ZCBzdGFydEluZGV4SW5CbG9jaywgVCBvbGRUaGluZywgVCBuZXdUaGluZykKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2NrID0gc3RhcnRJbmRleEluQmxvY2s7IGluZGV4
SW5CbG9jayA8IGJsb2NrLnNpemUoKTsgKytpbmRleEluQmxvY2spCisgICAgICAgIHsKKyAgICAg
ICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9ja1tpbmRleEluQmxvY2tdOworICAgICAg
ICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CisgICAgICAgICAgICBpZiAobm9kZS5m
bGFncygpICYgTm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGNoaWxkSWR4ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxk
KCkgKyBub2RlLm51bUNoaWxkcmVuKCk7ICsrY2hpbGRJZHgpCisgICAgICAgICAgICAgICAgICAg
IGNvbXBhcmVBbmRTd2FwKG1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdLCBvbGRUaGluZywgbmV3
VGhpbmcsIG5vZGUuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQxKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb21wYXJlQW5kU3dhcChub2RlLmNoaWxk
cmVuLmNoaWxkMSgpLCBvbGRUaGluZywgbmV3VGhpbmcsIG5vZGUuc2hvdWxkR2VuZXJhdGUoKSk7
CisgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQyKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBjb21wYXJlQW5kU3dhcChub2RlLmNoaWxkcmVuLmNoaWxkMigpLCBv
bGRUaGluZywgbmV3VGhpbmcsIG5vZGUuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgICAgICBp
ZiAoIW5vZGUuY2hpbGQzKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBjb21wYXJlQW5kU3dhcChub2RlLmNoaWxkcmVuLmNoaWxkMygpLCBvbGRUaGluZywgbmV3VGhp
bmcsIG5vZGUuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
Ly8gVXNlIHRoaXMgaWYgeW91IGludHJvZHVjZSBhIG5ldyBHZXRMb2NhbCBhbmQgeW91IGtub3cg
dGhhdCB5b3UgaW50cm9kdWNlZCBpdCAqYmVmb3JlKgorICAgIC8vIGFueSBHZXRMb2NhbHMgaW4g
dGhlIGJhc2ljIGJsb2NrLgorICAgIC8vIEZJWE1FOiBpdCBtYXkgYmUgYXBwcm9wcmlhdGUsIGlu
IHRoZSBmdXR1cmUsIHRvIGdlbmVyYWxpemUgdGhpcyB0byBoYW5kbGUgR2V0TG9jYWxzCisgICAg
Ly8gaW50cm9kdWNlZCBhbnl3aGVyZSBpbiB0aGUgYmFzaWMgYmxvY2suCisgICAgdm9pZCBzdWJz
dGl0dXRlR2V0TG9jYWwoQmFzaWNCbG9jayYgYmxvY2ssIHVuc2lnbmVkIHN0YXJ0SW5kZXhJbkJs
b2NrLCBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSwgTm9kZUluZGV4IG5l
d0dldExvY2FsKQorICAgIHsKKyAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0
dXJlZCgpKSB7CisgICAgICAgICAgICAvLyBMZXQgQ1NFIHdvcnJ5IGFib3V0IHRoaXMgb25lLgor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXhJbkJsb2NrID0gc3RhcnRJbmRleEluQmxvY2s7IGluZGV4SW5CbG9jayA8IGJsb2NrLnNpemUo
KTsgKytpbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBi
bG9ja1tpbmRleEluQmxvY2tdOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRl
eCk7CisgICAgICAgICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgICAg
IHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIFNldExvY2FsOiB7CisgICAg
ICAgICAgICAgICAgaWYgKG5vZGUubG9jYWwoKSA9PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2Fs
KCkpCisgICAgICAgICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICBjYXNlIEdldExvY2FsOiB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUudmFyaWFibGVB
Y2Nlc3NEYXRhKCkgIT0gdmFyaWFibGVBY2Nlc3NEYXRhKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICBzdWJzdGl0dXRlKGJsb2NrLCBpbmRleEluQmxvY2ss
IG5vZGVJbmRleCwgbmV3R2V0TG9jYWwpOworICAgICAgICAgICAgICAgIE5vZGVJbmRleCBvbGRU
YWlsSW5kZXggPSBibG9jay52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0Rh
dGEtPmxvY2FsKCkpOworICAgICAgICAgICAgICAgIGlmIChvbGRUYWlsSW5kZXggPT0gbm9kZUlu
ZGV4KQorICAgICAgICAgICAgICAgICAgICBibG9jay52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2
YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpID0gbmV3R2V0TG9jYWw7CisgICAgICAgICAgICAg
ICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXNob3VsZENv
bnRpbnVlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAog
ICAgIEpTR2xvYmFsRGF0YSYgbV9nbG9iYWxEYXRhOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxv
Y2s7CiAgICAgQ29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5n
UGhhc2UuY3BwCShyZXZpc2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
Myw2ICszNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9jay0+dmFy
aWFibGVzQXRUYWlsLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID09IG5vZGVJbmRleCkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJp
YWJsZS0+bG9jYWwoKSkgPSBnZXRMb2NhbEluZGV4OwogICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5zdWJzdGl0dXRlR2V0TG9jYWwoKmJsb2NrLCBpbmRl
eEluQmxvY2ssIHZhcmlhYmxlLCBnZXRMb2NhbEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158742</attachid>
            <date>2012-08-16 01:03:37 -0700</date>
            <delta_ts>2012-08-16 12:25:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>betterhoist_patch_2.diff</filename>
            <type>text/plain</type>
            <size>8455</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1NzU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDEyLTA4LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3RydWN0dXJlIGNoZWNrIGhvaXN0aW5nIHNob3VsZCBiZSBsZXNzIGV4cGVuc2l2ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFwcGVhcnMgbGlr
ZSBhIGJyb2FkIHdpbiBvbiBzaG9ydC1ydW5uaW5nIHByb2dyYW1zLgorCisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0NT
RVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0Up
OgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBp
bGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
Ojpjb21wYXJlQW5kU3dhcCk6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OnN1YnN0aXR1dGUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpzdWJzdGl0dXRl
R2V0TG9jYWwpOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZTo6cnVu
KToKKwogMjAxMi0wOC0xNSAgQnJ1bm8gZGUgT2xpdmVpcmEgQWJpbmFkZXIgIDxicnVuby5hYmlu
YWRlckBiYXN5c2tvbS5jb20+CiAKICAgICAgICAgW2NzczMtdGV4dF0gQWRkIENTUzMgVGV4dCBk
ZWNvcmF0aW9uIGNvbXBpbGUgZmxhZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50
c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTgsNiArMzE4LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKKyAgICAgICAgICAgICAg
ICBjYXNlIEZvcndhcmRDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cnVj
dHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24n
dCBjYXJlIGFib3V0IHRoZXNlIGJlY2F1c2UgaWYgd2UgZ2V0IHVzZXMgb2YgdGhlIHJlbGV2YW50
CiAgICAgICAgICAgICAgICAgICAgIC8vIHZhcmlhYmxlIHRoZW4gd2UgY2FuIHNhZmVseSBnZXQg
cmlkIG9mIHRoZXNlLCB0b28uIFRoaXMgb2YgY291cnNlCkBAIC00ODEsNiArNDgyLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKKyAgICAgICAgICAgICAgICBjYXNlIEZvcndhcmRD
aGVja1N0cnVjdHVyZToKICAgICAgICAgICAgICAgICBjYXNlIFN0cnVjdHVyZVRyYW5zaXRpb25X
YXRjaHBvaW50OiB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IGdldCByaWQg
b2YgdGhpcyBub2RlLCBpZiBpdCByZWZlcmVuY2VzIGEgcGhhbnRvbSBhcmd1bWVudC4KICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFpc09LVG9PcHRpbWl6ZShtX2dyYXBoW25vZGUuY2hpbGQxKCld
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZp
c2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQ0LDcgKzk0NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAg
ICAgICAgICAgaWYgKG1fZml4cG9pbnRTdGF0ZSA9PSBGaXhwb2ludE5vdENvbnZlcmdlZCAmJiAh
dmFyaWFibGVBY2Nlc3NEYXRhLT5pc0NhcHR1cmVkKCkpCisgICAgICAgICAgICBpZiAoIXZhcmlh
YmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgTm9kZUluZGV4IHJlbGV2YW50TG9jYWxPcDsKICAgICAgICAgICAgIE5vZGVJbmRl
eCBwb3NzaWJsZVJlcGxhY2VtZW50ID0gZ2V0TG9jYWxMb2FkRWxpbWluYXRpb24odmFyaWFibGVB
Y2Nlc3NEYXRhLT5sb2NhbCgpLCByZWxldmFudExvY2FsT3AsIHZhcmlhYmxlQWNjZXNzRGF0YS0+
aXNDYXB0dXJlZCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAJKHJldmlzaW9uIDEyNTY4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJp
dmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAsNyBAQCBpbmxpbmUgYm9vbCBjb21w
aWxlKENvbXBpbGVNb2RlIGNvbXBpbGVNCiAgICAgdmFsaWRhdGUoZGZnKTsKICAgICBwZXJmb3Jt
UHJlZGljdGlvblByb3BhZ2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUZpeHVwKGRmZyk7CisgICAg
cGVyZm9ybVN0cnVjdHVyZUNoZWNrSG9pc3RpbmcoZGZnKTsKICAgICB1bnNpZ25lZCBjbnQgPSAx
OwogICAgIGZvciAoOzsgKytjbnQpIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCkBA
IC0xMDYsMTAgKzEwNyw3IEBAIGlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGls
ZU0KICAgICAgICAgZGZnLnJlc2V0RXhpdFN0YXRlcygpOwogICAgICAgICBwZXJmb3JtRml4dXAo
ZGZnKTsKICAgICB9Ci0gICAgYm9vbCBzaG91bGRSZWRvQ0ZBID0gcGVyZm9ybVN0cnVjdHVyZUNo
ZWNrSG9pc3RpbmcoZGZnKTsKICAgICBwZXJmb3JtQ1NFKGRmZywgRml4cG9pbnRDb252ZXJnZWQp
OwotICAgIGlmIChzaG91bGRSZWRvQ0ZBKQotICAgICAgICBwZXJmb3JtQ0ZBKGRmZyk7CiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGRhdGFMb2coIkRGRyBvcHRpbWl6YXRpb24g
Zml4cG9pbnQgY29udmVyZ2VkIGluICV1IGl0ZXJhdGlvbnMuXG4iLCBjbnQpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMjU2ODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw2ICsxMzcsMjAgQEAgcHVibGljOgogICAgICAgICBlZGdlID0gbmV3RWRnZTsKICAgICB9
CiAgICAgCisgICAgdm9pZCBjb21wYXJlQW5kU3dhcChFZGdlJiBlZGdlLCBOb2RlSW5kZXggb2xk
SW5kZXgsIE5vZGVJbmRleCBuZXdJbmRleCwgYm9vbCBjaGFuZ2VSZWYpCisgICAgeworICAgICAg
ICBpZiAoZWRnZS5pbmRleCgpICE9IG9sZEluZGV4KQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjaGFuZ2VJbmRleChlZGdlLCBuZXdJbmRleCwgY2hhbmdlUmVmKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCBjb21wYXJlQW5kU3dhcChFZGdlJiBlZGdlLCBFZGdlIG9sZEVkZ2UsIEVkZ2Ug
bmV3RWRnZSwgYm9vbCBjaGFuZ2VSZWYpCisgICAgeworICAgICAgICBpZiAoZWRnZSAhPSBvbGRF
ZGdlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjaGFuZ2VFZGdlKGVkZ2UsIG5ld0Vk
Z2UsIGNoYW5nZVJlZik7CisgICAgfQorICAgIAogICAgIHZvaWQgY2xlYXJBbmREZXJlZkNoaWxk
MShOb2RlJiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlLmNoaWxkMSgpKQpAQCAtNjE0
LDYgKzYyOCw2OSBAQCBwdWJsaWM6CiAgICAgICAgIHZvdGUobm9kZS5jaGlsZDMoKSwgYmFsbG90
KTsKICAgICB9CiAgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gLy8gVCA9IE5vZGVJbmRl
eCBvciBFZGdlCisgICAgdm9pZCBzdWJzdGl0dXRlKEJhc2ljQmxvY2smIGJsb2NrLCB1bnNpZ25l
ZCBzdGFydEluZGV4SW5CbG9jaywgVCBvbGRUaGluZywgVCBuZXdUaGluZykKKyAgICB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2NrID0gc3RhcnRJbmRleEluQmxvY2s7IGluZGV4
SW5CbG9jayA8IGJsb2NrLnNpemUoKTsgKytpbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgIE5v
ZGVJbmRleCBub2RlSW5kZXggPSBibG9ja1tpbmRleEluQmxvY2tdOworICAgICAgICAgICAgTm9k
ZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CisgICAgICAgICAgICBpZiAobm9kZS5mbGFncygpICYg
Tm9kZUhhc1ZhckFyZ3MpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4
ID0gbm9kZS5maXJzdENoaWxkKCk7IGNoaWxkSWR4IDwgbm9kZS5maXJzdENoaWxkKCkgKyBub2Rl
Lm51bUNoaWxkcmVuKCk7ICsrY2hpbGRJZHgpCisgICAgICAgICAgICAgICAgICAgIGNvbXBhcmVB
bmRTd2FwKG1fdmFyQXJnQ2hpbGRyZW5bY2hpbGRJZHhdLCBvbGRUaGluZywgbmV3VGhpbmcsIG5v
ZGUuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGQxKCkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICBjb21wYXJlQW5kU3dhcChub2RlLmNoaWxkcmVuLmNoaWxk
MSgpLCBvbGRUaGluZywgbmV3VGhpbmcsIG5vZGUuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAg
ICAgICBpZiAoIW5vZGUuY2hpbGQyKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBjb21wYXJlQW5kU3dhcChub2RlLmNoaWxkcmVuLmNoaWxkMigpLCBvbGRUaGluZywg
bmV3VGhpbmcsIG5vZGUuc2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgICAgICBpZiAoIW5vZGUu
Y2hpbGQzKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb21wYXJl
QW5kU3dhcChub2RlLmNoaWxkcmVuLmNoaWxkMygpLCBvbGRUaGluZywgbmV3VGhpbmcsIG5vZGUu
c2hvdWxkR2VuZXJhdGUoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gVXNlIHRo
aXMgaWYgeW91IGludHJvZHVjZSBhIG5ldyBHZXRMb2NhbCBhbmQgeW91IGtub3cgdGhhdCB5b3Ug
aW50cm9kdWNlZCBpdCAqYmVmb3JlKgorICAgIC8vIGFueSBHZXRMb2NhbHMgaW4gdGhlIGJhc2lj
IGJsb2NrLgorICAgIC8vIEZJWE1FOiBpdCBtYXkgYmUgYXBwcm9wcmlhdGUsIGluIHRoZSBmdXR1
cmUsIHRvIGdlbmVyYWxpemUgdGhpcyB0byBoYW5kbGUgR2V0TG9jYWxzCisgICAgLy8gaW50cm9k
dWNlZCBhbnl3aGVyZSBpbiB0aGUgYmFzaWMgYmxvY2suCisgICAgdm9pZCBzdWJzdGl0dXRlR2V0
TG9jYWwoQmFzaWNCbG9jayYgYmxvY2ssIHVuc2lnbmVkIHN0YXJ0SW5kZXhJbkJsb2NrLCBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSwgTm9kZUluZGV4IG5ld0dldExvY2Fs
KQorICAgIHsKKyAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKSB7
CisgICAgICAgICAgICAvLyBMZXQgQ1NFIHdvcnJ5IGFib3V0IHRoaXMgb25lLgorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXhJbkJsb2Nr
ID0gc3RhcnRJbmRleEluQmxvY2s7IGluZGV4SW5CbG9jayA8IGJsb2NrLnNpemUoKTsgKytpbmRl
eEluQmxvY2spIHsKKyAgICAgICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9ja1tpbmRl
eEluQmxvY2tdOworICAgICAgICAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CisgICAg
ICAgICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIFNldExvY2FsOiB7CisgICAgICAgICAgICAg
ICAgaWYgKG5vZGUubG9jYWwoKSA9PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpCisgICAg
ICAgICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNl
IEdldExvY2FsOiB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRh
KCkgIT0gdmFyaWFibGVBY2Nlc3NEYXRhKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICBzdWJzdGl0dXRlKGJsb2NrLCBpbmRleEluQmxvY2ssIG5vZGVJbmRl
eCwgbmV3R2V0TG9jYWwpOworICAgICAgICAgICAgICAgIE5vZGVJbmRleCBvbGRUYWlsSW5kZXgg
PSBibG9jay52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2Fs
KCkpOworICAgICAgICAgICAgICAgIGlmIChvbGRUYWlsSW5kZXggPT0gbm9kZUluZGV4KQorICAg
ICAgICAgICAgICAgICAgICBibG9jay52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJpYWJsZUFj
Y2Vzc0RhdGEtPmxvY2FsKCkpID0gbmV3R2V0TG9jYWw7CisgICAgICAgICAgICAgICAgc2hvdWxk
Q29udGludWUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAogICAgIEpTR2xv
YmFsRGF0YSYgbV9nbG9iYWxEYXRhOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAg
Q29kZUJsb2NrKiBtX3Byb2ZpbGVkQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVDaGVja0hvaXN0aW5nUGhhc2UuY3Bw
CShyZXZpc2lvbiAxMjU2ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw2ICszNTMs
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9jay0+dmFyaWFibGVzQXRU
YWlsLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID09IG5vZGVJbmRleCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJpYWJsZS0+bG9j
YWwoKSkgPSBnZXRMb2NhbEluZGV4OwogICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5zdWJzdGl0dXRlR2V0TG9jYWwoKmJsb2NrLCBpbmRleEluQmxvY2ss
IHZhcmlhYmxlLCBnZXRMb2NhbEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9Cg==
</data>
<flag name="review"
          id="168927"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>