<?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>216223</bug_id>
          
          <creation_ts>2020-09-05 22:24:30 -0700</creation_ts>
          <short_desc>[MotionMark - Multiply] Web process spends ~1% of total samples in PropertyCascade::resolveDirectionAndWritingMode</short_desc>
          <delta_ts>2020-09-06 18:00:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit 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>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686169</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-05 22:24:30 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686170</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-05 22:25:48 -0700</bug_when>
    <thetext>I suspect we might be able to optimize this codepath away in MotionMark...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686207</commentid>
    <comment_count>2</comment_count>
      <attachid>408128</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-06 12:44:50 -0700</bug_when>
    <thetext>Created attachment 408128
EWS trial run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686213</commentid>
    <comment_count>3</comment_count>
      <attachid>408131</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-06 14:16:01 -0700</bug_when>
    <thetext>Created attachment 408131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686217</commentid>
    <comment_count>4</comment_count>
      <attachid>408131</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-06 14:27:08 -0700</bug_when>
    <thetext>Comment on attachment 408131
Patch

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

&gt; Source/WebCore/ChangeLog:39
&gt; +        Add a new `bool` member to keep track of whether or not the CSS direction has not yet been resolved. Note that
&gt; +        since this member variable fits within the padding after `Direction m_direction;`, this class is still the same
&gt; +        size.

Would Optional have been too inefficient to use here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686224</commentid>
    <comment_count>5</comment_count>
      <attachid>408131</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-06 14:36:42 -0700</bug_when>
    <thetext>Comment on attachment 408131
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:39
&gt;&gt; +        size.
&gt; 
&gt; Would Optional have been too inefficient to use here?

Ah, so I think we could make this an `Optional&lt;Direction&gt; m_resolvedDirection`, but (if I’m understanding correctly) we would still need to have another `Direction` member to store the unresolved `Direction` that is passed into the constructor.

To make this more efficient, I decided to store a single `m_direction`, and have a flag to indicate whether that direction has been resolved yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686227</commentid>
    <comment_count>6</comment_count>
      <attachid>408131</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-06 14:58:16 -0700</bug_when>
    <thetext>Comment on attachment 408131
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:39
&gt;&gt;&gt; +        size.
&gt;&gt; 
&gt;&gt; Would Optional have been too inefficient to use here?
&gt; 
&gt; Ah, so I think we could make this an `Optional&lt;Direction&gt; m_resolvedDirection`, but (if I’m understanding correctly) we would still need to have another `Direction` member to store the unresolved `Direction` that is passed into the constructor.
&gt; 
&gt; To make this more efficient, I decided to store a single `m_direction`, and have a flag to indicate whether that direction has been resolved yet.

Oh, I get it. Didn’t understand that before.

&gt; Source/WebCore/style/PropertyCascade.cpp:160
&gt; -    , m_direction(parent.m_direction)
&gt; +    , m_direction(parent.direction())
&gt; +    , m_directionIsUnresolved(false)

Further optimization question: Is there some way we could have avoided forcing the parent to resolve its direction here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686249</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-06 15:52:09 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 408131 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408131&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/ChangeLog:39
&gt; &gt;&gt;&gt; +        size.
&gt; &gt;&gt; 
&gt; &gt;&gt; Would Optional have been too inefficient to use here?
&gt; &gt; 
&gt; &gt; Ah, so I think we could make this an `Optional&lt;Direction&gt; m_resolvedDirection`, but (if I’m understanding correctly) we would still need to have another `Direction` member to store the unresolved `Direction` that is passed into the constructor.
&gt; &gt; 
&gt; &gt; To make this more efficient, I decided to store a single `m_direction`, and have a flag to indicate whether that direction has been resolved yet.
&gt; 
&gt; Oh, I get it. Didn’t understand that before.
&gt; 
&gt; &gt; Source/WebCore/style/PropertyCascade.cpp:160
&gt; &gt; -    , m_direction(parent.m_direction)
&gt; &gt; +    , m_direction(parent.direction())
&gt; &gt; +    , m_directionIsUnresolved(false)
&gt; 
&gt; Further optimization question: Is there some way we could have avoided
&gt; forcing the parent to resolve its direction here?

Hm...I have a feeling it might be possible, but I’m not entirely sure how. I think we would need to store a backpointer to the original (parent) PropertyCascade here, so that we could recursively resolve the direction and writing modes if needed. FWIW, I think this constructor is only used to roll back the style cascade when using the “revert” CSS value, which should be a relatively rare case (as it turns out, this codepath isn’t traversed by any of MotionMark’s subtests):

```
    if (isRevert) {
        if (auto* rollback = m_cascade.propertyCascadeForRollback(m_state.m_cascadeLevel)) {
            // With the rollback cascade built, we need to obtain the property and apply it. If the property is
            // not present, then we behave like &quot;unset.&quot; Otherwise we apply the property instead of
            // our own.

```

Would you be okay with me pursuing this in a separate change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686252</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-06 16:02:47 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #7)
&gt; Would you be okay with me pursuing this in a separate change?

Sure. I’d also be OK with you not pursuing it at all. Depends if you think it would be actively helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686277</commentid>
    <comment_count>9</comment_count>
      <attachid>408131</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-09-06 17:44:15 -0700</bug_when>
    <thetext>Comment on attachment 408131
Patch

(In reply to Darin Adler from comment #8)
&gt; (In reply to Wenson Hsieh from comment #7)
&gt; &gt; Would you be okay with me pursuing this in a separate change?
&gt; 
&gt; Sure. I’d also be OK with you not pursuing it at all. Depends if you think
&gt; it would be actively helpful.

Sounds good! I’ve filed webkit.org/b/216234.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686283</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-06 17:59:58 -0700</bug_when>
    <thetext>Committed r266689: &lt;https://trac.webkit.org/changeset/266689&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408131.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686284</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-06 18:00:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/68438754&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408128</attachid>
            <date>2020-09-06 12:44:50 -0700</date>
            <delta_ts>2020-09-06 14:16:00 -0700</delta_ts>
            <desc>EWS trial run</desc>
            <filename>bug-216223-20200906124449.patch</filename>
            <type>text/plain</type>
            <size>4353</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk3NWMzOWQ3MjFjMmM0
ZjExODgzZWU3ODVmNDNlNzQzYTk3NzUzMi4uYTVjYmI2ZTJjZTA1ZDE2MTc5MDRhODlkMGViZDkx
NWMxMzE3ZjYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtNb3Rpb25NYXJr
IC0gTXVsdGlwbHldIFdlYiBwcm9jZXNzIHNwZW5kcyB+MSUgb2YgdG90YWwgc2FtcGxlcyBpbiBQ
cm9wZXJ0eUNhc2NhZGU6OnJlc29sdmVEaXJlY3Rpb25BbmRXcml0aW5nTW9kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MjIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKFdJUCBwYXRjaCkKKworICAg
ICAgICAqIHN0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6UHJvcGVydHlDYXNjYWRlOjpQcm9wZXJ0eUNhc2NhZGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQ
cm9wZXJ0eUNhc2NhZGU6OmRpcmVjdGlvbiBjb25zdCk6CisgICAgICAgICogc3R5bGUvUHJvcGVy
dHlDYXNjYWRlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpk
aXJlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA5LTA1ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb3Rpb25NYXJrXSBSZW5kZXJMYXll
cjo6cGFpbnRMYXllckNvbnRlbnRzIHNwZW5kcyB+NSUgb2YgdGhlIHRpbWUgaW4gTW9ub3Rvbmlj
VGltZTo6bm93KCkgaW4gTXVsdGlwbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2Nh
ZGUuY3BwCmluZGV4IDExNGI4MTExZGI4NGQ4MzJiZTA1NjYwNzIwNWY4YWMzOGQ3NjE0YzIuLmE3
MDNhNGY4Y2Q0M2M3YmY5MTEwOGFkZTIxYmE1ZGI1ZDcxY2Y5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc1ZhbGlkQ3VlU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKQogUHJvcGVy
dHlDYXNjYWRlOjpQcm9wZXJ0eUNhc2NhZGUoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0
LCBPcHRpb25TZXQ8Q2FzY2FkZUxldmVsPiBjYXNjYWRlTGV2ZWxzLCBJbmNsdWRlZFByb3BlcnRp
ZXMgaW5jbHVkZWRQcm9wZXJ0aWVzLCBEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIDogbV9tYXRj
aFJlc3VsdChtYXRjaFJlc3VsdCkKICAgICAsIG1faW5jbHVkZWRQcm9wZXJ0aWVzKGluY2x1ZGVk
UHJvcGVydGllcykKLSAgICAsIG1fZGlyZWN0aW9uKHJlc29sdmVEaXJlY3Rpb25BbmRXcml0aW5n
TW9kZShkaXJlY3Rpb24pKQorICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQogewogICAgIGJ1
aWxkQ2FzY2FkZShjYXNjYWRlTGV2ZWxzKTsKIH0KQEAgLTE1Niw3ICsxNTYsOCBAQCBQcm9wZXJ0
eUNhc2NhZGU6OlByb3BlcnR5Q2FzY2FkZShjb25zdCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQs
IE9wdGlvblNldDxDYXNjYQogUHJvcGVydHlDYXNjYWRlOjpQcm9wZXJ0eUNhc2NhZGUoY29uc3Qg
UHJvcGVydHlDYXNjYWRlJiBwYXJlbnQsIE9wdGlvblNldDxDYXNjYWRlTGV2ZWw+IGNhc2NhZGVM
ZXZlbHMpCiAgICAgOiBtX21hdGNoUmVzdWx0KHBhcmVudC5tX21hdGNoUmVzdWx0KQogICAgICwg
bV9pbmNsdWRlZFByb3BlcnRpZXMocGFyZW50Lm1faW5jbHVkZWRQcm9wZXJ0aWVzKQotICAgICwg
bV9kaXJlY3Rpb24ocGFyZW50Lm1fZGlyZWN0aW9uKQorICAgICwgbV9kaXJlY3Rpb24ocGFyZW50
LmRpcmVjdGlvbigpKQorICAgICwgbV9kaXJlY3Rpb25Jc1VucmVzb2x2ZWQoZmFsc2UpCiB7CiAg
ICAgYnVpbGRDYXNjYWRlKGNhc2NhZGVMZXZlbHMpOwogfQpAQCAtMTk2LDggKzE5NywxMCBAQCB2
b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0UHJvcGVydHlJbnRlcm5hbChQcm9wZXJ0eSYgcHJvcGVy
dHksIENTU1Byb3BlcnR5SUQgaWQsCiAKIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJv
cGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBlLCBD
YXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsLCBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwp
CiB7Ci0gICAgaWYgKENTU1Byb3BlcnR5Ojppc0RpcmVjdGlvbkF3YXJlUHJvcGVydHkoaWQpKQot
ICAgICAgICBpZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShp
ZCwgbV9kaXJlY3Rpb24udGV4dERpcmVjdGlvbiwgbV9kaXJlY3Rpb24ud3JpdGluZ01vZGUpOwor
ICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkKSkgeworICAg
ICAgICBhdXRvIGRpcmVjdGlvbiA9IHRoaXMtPmRpcmVjdGlvbigpOworICAgICAgICBpZCA9IENT
U1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgZGlyZWN0aW9uLnRl
eHREaXJlY3Rpb24sIGRpcmVjdGlvbi53cml0aW5nTW9kZSk7CisgICAgfQogCiAgICAgQVNTRVJU
KCFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKGlkKSk7CiAKQEAgLTQwNCw1ICs0MDcs
MTQgQEAgUHJvcGVydHlDYXNjYWRlOjpEaXJlY3Rpb24gUHJvcGVydHlDYXNjYWRlOjpyZXNvbHZl
RGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoRGlyZWMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitQ
cm9wZXJ0eUNhc2NhZGU6OkRpcmVjdGlvbiBQcm9wZXJ0eUNhc2NhZGU6OmRpcmVjdGlvbigpIGNv
bnN0Cit7CisgICAgaWYgKG1fZGlyZWN0aW9uSXNVbnJlc29sdmVkKSB7CisgICAgICAgIG1fZGly
ZWN0aW9uID0gcmVzb2x2ZURpcmVjdGlvbkFuZFdyaXRpbmdNb2RlKG1fZGlyZWN0aW9uKTsKKyAg
ICAgICAgbV9kaXJlY3Rpb25Jc1VucmVzb2x2ZWQgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IG1fZGlyZWN0aW9uOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9Qcm9wZXJ0eUNhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2Fk
ZS5oCmluZGV4IDU0OGM5ZGUzNzUzMzFlZWNiZDdlMjNjMjU1OTYxMGUzODdhZTEyMDAuLmVlYWQw
MGVhZjI0NzczOWUyZDM4NjkwMTliN2ViMTA0Mjg3ZjdjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1Byb3BlcnR5Q2FzY2FkZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBW
ZWN0b3I8UHJvcGVydHksIDg+JiBkZWZlcnJlZFByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBt
X2RlZmVycmVkUHJvcGVydGllczsgfQogICAgIGNvbnN0IEhhc2hNYXA8QXRvbVN0cmluZywgUHJv
cGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0
aWVzOyB9CiAKLSAgICBEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJl
Y3Rpb247IH0KKyAgICBEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CiAKICAgICBjb25zdCBQ
cm9wZXJ0eUNhc2NhZGUqIHByb3BlcnR5Q2FzY2FkZUZvclJvbGxiYWNrKENhc2NhZGVMZXZlbCkg
Y29uc3Q7CiAKQEAgLTg1LDcgKzg1LDggQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IE1hdGNoUmVz
dWx0JiBtX21hdGNoUmVzdWx0OwogICAgIGNvbnN0IEluY2x1ZGVkUHJvcGVydGllcyBtX2luY2x1
ZGVkUHJvcGVydGllczsKLSAgICBjb25zdCBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CisgICAgbXV0
YWJsZSBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CisgICAgbXV0YWJsZSBib29sIG1fZGlyZWN0aW9u
SXNVbnJlc29sdmVkIHsgdHJ1ZSB9OwogCiAgICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW251bUNT
U1Byb3BlcnRpZXMgKyAyXTsKICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzICsgMj4g
bV9wcm9wZXJ0eUlzUHJlc2VudDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408131</attachid>
            <date>2020-09-06 14:16:01 -0700</date>
            <delta_ts>2020-09-06 17:59:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216223-20200906141600.patch</filename>
            <type>text/plain</type>
            <size>6246</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk3NWMzOWQ3MjFjMmM0
ZjExODgzZWU3ODVmNDNlNzQzYTk3NzUzMi4uODcxMTMyMmRhOWEwZTY4YjQ0MjY1NDBhYzUxZDli
ODEzYWFlZDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtNb3Rpb25NYXJr
IC0gTXVsdGlwbHldIFdlYiBwcm9jZXNzIHNwZW5kcyB+MSUgb2YgdG90YWwgc2FtcGxlcyBpbiBQ
cm9wZXJ0eUNhc2NhZGU6OnJlc29sdmVEaXJlY3Rpb25BbmRXcml0aW5nTW9kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MjIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBmZXcgc3VidGVzdHMgaW4g
TW90aW9uTWFyayAoTGVhdmVzLCBGb2N1cywgRGVzaWduLCBhbmQgZXNwZWNpYWxseSBNdWx0aXBs
eSkgc3BlbmQgbGFyZ2UgYW1vdW50cyBvZiB0aW1lIGluCisgICAgICAgIHN0eWxlIHJlc29sdXRp
b24gKGBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlYCkgZHVlIHRvIGNvbnN0YW50IHN0eWxlIGNoYW5n
ZXMgYWNyb3NzIG1hbnkgZWxlbWVudHMgZHVyaW5nIGV2ZXJ5CisgICAgICAgIGZyYW1lLiBJbiBN
dWx0aXBseSwgfjMtNCUgb2YgdGhlIHRpbWUgdW5kZXJuZWF0aCBgRG9jdW1lbnQ6OnJlc29sdmVT
dHlsZWAgaXMgc3BlbnQgcmVzb2x2aW5nIGRpcmVjdGlvbiBhbmQKKyAgICAgICAgd3JpdGluZyBt
b2RlcyBpbnNpZGUgYFByb3BlcnR5Q2FzY2FkZTo6cmVzb2x2ZURpcmVjdGlvbkFuZFdyaXRpbmdN
b2RlYCAoaS5lLiwgfjIuMyBtaWxsaW9uIGludm9jYXRpb25zKS4gVGhpcworICAgICAgICBoZWxw
ZXIgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGNvbXB1dGluZyB0aGUgdGV4dCBkaXJlY3Rp
b24gYW5kIENTUyB3cml0aW5nIG1vZGUgdGhhdCBpcyB1c2VkIHRvIHJlc29sdmUKKyAgICAgICAg
ZGlyZWN0aW9uLWF3YXJlIENTUyBwcm9wZXJ0aWVzICh3aGljaCBhcmUgZW51bWVyYXRlZCBpbiBg
Q1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eWApLiBSZXNvbHZpbmcgdGhlCisg
ICAgICAgIGRpcmVjdGlvbiBhbmQgd3JpdGluZyBtb2RlIGludm9sdmVzIGl0ZXJhdGluZyBvdmVy
IGFsbCBvZiB0aGUgbWF0Y2hlZCBDU1MgcHJvcGVydGllcyAoYG1fbWF0Y2hSZXN1bHRgKSBpbiB0
aGUKKyAgICAgICAgcHJvcGVydHkgY2FzY2FkZSBpbiBzZWFyY2ggb2YgQ1NTIHByb3BlcnRpZXMg
Zm9yIHdyaXRpbmcgYW5kIGRpcmVjdGlvbiwgd2hpY2ggY2FuIGJlIHJlbGF0aXZlbHkgZXhwZW5z
aXZlIHdoZW4KKyAgICAgICAgdGhlcmUgYXJlIGxvdHMgb2YgcHJvcGVydGllcyBpbiB0aGUgY2Fz
Y2FkZS4KKworICAgICAgICBIb3dldmVyLCBpZiB0aGVyZSBhcmUgbm8gZGlyZWN0aW9uLWF3YXJl
IENTUyBwcm9wZXJ0aWVzIGluIHRoZSBjYXNjYWRlLCB0aGlzIHdvcmsgY2FuIGFjdHVhbGx5IGJl
IGVsaWRlZDsgdG8KKyAgICAgICAgYWNoaWV2ZSB0aGlzLCB3ZSBjYW4gc3RvcmUgdGhlIGluaGVy
aXRlZCBgRGlyZWN0aW9uYCBpbiBgbV9kaXJlY3Rpb25gLCBhbmQgdGhlbiBsYXppbHkgcmVzb2x2
ZSBpdCBpZiBuZWVkZWQuCisKKyAgICAgICAgSSBtZWFzdXJlZCB0aGlzIGxvY2FsbHkgdG8geWll
bGQgYSBsaXR0bGUgdW5kZXIgfjElIGluIHRoZSBNdWx0aXBseSBzdWJ0ZXN0IGluIE1vdGlvbk1h
cmsuIE90aGVyd2lzZSwgdGhlcmUgaXMKKyAgICAgICAgbm8gY2hhbmdlIGluIGJlaGF2aW9yOyBz
ZWUgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIHN0eWxlL1Byb3BlcnR5Q2Fz
Y2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpQcm9w
ZXJ0eUNhc2NhZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6
c2V0KToKKworICAgICAgICBJZiB3ZSBlbmNvdW50ZXIgYSBkaXJlY3Rpb24tYXdhcmUgQ1NTIHBy
b3BlcnR5LCB0aGVuIHVzZSBgZGlyZWN0aW9uKClgIHRvIGVuc3VyZSB0aGF0IHRoZSBkaXJlY3Rp
b24gYW5kIHdyaXRpbmcKKyAgICAgICAgbW9kZSBhcmUgcmVzb2x2ZWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRpcmVjdGlvbiBjb25zdCk6CisKKyAgICAg
ICAgTWFrZSB0aGlzIGdldHRlciBjYWxsIGByZXNvbHZlRGlyZWN0aW9uQW5kV3JpdGluZ01vZGVg
IGlmIG5lZWRlZC4KKworICAgICAgICAqIHN0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oOgorCisgICAg
ICAgIEFkZCBhIG5ldyBgYm9vbGAgbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBu
b3QgdGhlIENTUyBkaXJlY3Rpb24gaGFzIG5vdCB5ZXQgYmVlbiByZXNvbHZlZC4gTm90ZSB0aGF0
CisgICAgICAgIHNpbmNlIHRoaXMgbWVtYmVyIHZhcmlhYmxlIGZpdHMgd2l0aGluIHRoZSBwYWRk
aW5nIGFmdGVyIGBEaXJlY3Rpb24gbV9kaXJlY3Rpb247YCwgdGhpcyBjbGFzcyBpcyBzdGlsbCB0
aGUgc2FtZQorICAgICAgICBzaXplLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVy
dHlDYXNjYWRlOjpkaXJlY3Rpb24gY29uc3QpOiBEZWxldGVkLgorCiAyMDIwLTA5LTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtNb3Rpb25NYXJr
XSBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzIHNwZW5kcyB+NSUgb2YgdGhlIHRpbWUg
aW4gTW9ub3RvbmljVGltZTo6bm93KCkgaW4gTXVsdGlwbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
cm9wZXJ0eUNhc2NhZGUuY3BwCmluZGV4IDExNGI4MTExZGI4NGQ4MzJiZTA1NjYwNzIwNWY4YWMz
OGQ3NjE0YzIuLmE3MDNhNGY4Y2Q0M2M3YmY5MTEwOGFkZTIxYmE1ZGI1ZDcxY2Y5M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkQ3VlU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IGlkKQogUHJvcGVydHlDYXNjYWRlOjpQcm9wZXJ0eUNhc2NhZGUoY29uc3QgTWF0Y2hSZXN1bHQm
IG1hdGNoUmVzdWx0LCBPcHRpb25TZXQ8Q2FzY2FkZUxldmVsPiBjYXNjYWRlTGV2ZWxzLCBJbmNs
dWRlZFByb3BlcnRpZXMgaW5jbHVkZWRQcm9wZXJ0aWVzLCBEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ICAgIDogbV9tYXRjaFJlc3VsdChtYXRjaFJlc3VsdCkKICAgICAsIG1faW5jbHVkZWRQcm9wZXJ0
aWVzKGluY2x1ZGVkUHJvcGVydGllcykKLSAgICAsIG1fZGlyZWN0aW9uKHJlc29sdmVEaXJlY3Rp
b25BbmRXcml0aW5nTW9kZShkaXJlY3Rpb24pKQorICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9u
KQogewogICAgIGJ1aWxkQ2FzY2FkZShjYXNjYWRlTGV2ZWxzKTsKIH0KQEAgLTE1Niw3ICsxNTYs
OCBAQCBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5Q2FzY2FkZShjb25zdCBNYXRjaFJlc3VsdCYg
bWF0Y2hSZXN1bHQsIE9wdGlvblNldDxDYXNjYQogUHJvcGVydHlDYXNjYWRlOjpQcm9wZXJ0eUNh
c2NhZGUoY29uc3QgUHJvcGVydHlDYXNjYWRlJiBwYXJlbnQsIE9wdGlvblNldDxDYXNjYWRlTGV2
ZWw+IGNhc2NhZGVMZXZlbHMpCiAgICAgOiBtX21hdGNoUmVzdWx0KHBhcmVudC5tX21hdGNoUmVz
dWx0KQogICAgICwgbV9pbmNsdWRlZFByb3BlcnRpZXMocGFyZW50Lm1faW5jbHVkZWRQcm9wZXJ0
aWVzKQotICAgICwgbV9kaXJlY3Rpb24ocGFyZW50Lm1fZGlyZWN0aW9uKQorICAgICwgbV9kaXJl
Y3Rpb24ocGFyZW50LmRpcmVjdGlvbigpKQorICAgICwgbV9kaXJlY3Rpb25Jc1VucmVzb2x2ZWQo
ZmFsc2UpCiB7CiAgICAgYnVpbGRDYXNjYWRlKGNhc2NhZGVMZXZlbHMpOwogfQpAQCAtMTk2LDgg
KzE5NywxMCBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0UHJvcGVydHlJbnRlcm5hbChQcm9w
ZXJ0eSYgcHJvcGVydHksIENTU1Byb3BlcnR5SUQgaWQsCiAKIHZvaWQgUHJvcGVydHlDYXNjYWRl
OjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCB1bnNpZ25lZCBsaW5r
TWF0Y2hUeXBlLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsLCBTY29wZU9yZGluYWwgc3R5bGVT
Y29wZU9yZGluYWwpCiB7Ci0gICAgaWYgKENTU1Byb3BlcnR5Ojppc0RpcmVjdGlvbkF3YXJlUHJv
cGVydHkoaWQpKQotICAgICAgICBpZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdh
cmVQcm9wZXJ0eShpZCwgbV9kaXJlY3Rpb24udGV4dERpcmVjdGlvbiwgbV9kaXJlY3Rpb24ud3Jp
dGluZ01vZGUpOworICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5
KGlkKSkgeworICAgICAgICBhdXRvIGRpcmVjdGlvbiA9IHRoaXMtPmRpcmVjdGlvbigpOworICAg
ICAgICBpZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwg
ZGlyZWN0aW9uLnRleHREaXJlY3Rpb24sIGRpcmVjdGlvbi53cml0aW5nTW9kZSk7CisgICAgfQog
CiAgICAgQVNTRVJUKCFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKGlkKSk7CiAKQEAg
LTQwNCw1ICs0MDcsMTQgQEAgUHJvcGVydHlDYXNjYWRlOjpEaXJlY3Rpb24gUHJvcGVydHlDYXNj
YWRlOjpyZXNvbHZlRGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoRGlyZWMKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCitQcm9wZXJ0eUNhc2NhZGU6OkRpcmVjdGlvbiBQcm9wZXJ0eUNhc2NhZGU6OmRp
cmVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fZGlyZWN0aW9uSXNVbnJlc29sdmVkKSB7Cisg
ICAgICAgIG1fZGlyZWN0aW9uID0gcmVzb2x2ZURpcmVjdGlvbkFuZFdyaXRpbmdNb2RlKG1fZGly
ZWN0aW9uKTsKKyAgICAgICAgbV9kaXJlY3Rpb25Jc1VucmVzb2x2ZWQgPSBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIG1fZGlyZWN0aW9uOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1By
b3BlcnR5Q2FzY2FkZS5oCmluZGV4IDU0OGM5ZGUzNzUzMzFlZWNiZDdlMjNjMjU1OTYxMGUzODdh
ZTEyMDAuLmVlYWQwMGVhZjI0NzczOWUyZDM4NjkwMTliN2ViMTA0Mjg3ZjdjNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBWZWN0b3I8UHJvcGVydHksIDg+JiBkZWZlcnJlZFByb3BlcnRpZXMoKSBjb25z
dCB7IHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllczsgfQogICAgIGNvbnN0IEhhc2hNYXA8QXRv
bVN0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9j
dXN0b21Qcm9wZXJ0aWVzOyB9CiAKLSAgICBEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXJlY3Rpb247IH0KKyAgICBEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CiAK
ICAgICBjb25zdCBQcm9wZXJ0eUNhc2NhZGUqIHByb3BlcnR5Q2FzY2FkZUZvclJvbGxiYWNrKENh
c2NhZGVMZXZlbCkgY29uc3Q7CiAKQEAgLTg1LDcgKzg1LDggQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IE1hdGNoUmVzdWx0JiBtX21hdGNoUmVzdWx0OwogICAgIGNvbnN0IEluY2x1ZGVkUHJvcGVy
dGllcyBtX2luY2x1ZGVkUHJvcGVydGllczsKLSAgICBjb25zdCBEaXJlY3Rpb24gbV9kaXJlY3Rp
b247CisgICAgbXV0YWJsZSBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CisgICAgbXV0YWJsZSBib29s
IG1fZGlyZWN0aW9uSXNVbnJlc29sdmVkIHsgdHJ1ZSB9OwogCiAgICAgUHJvcGVydHkgbV9wcm9w
ZXJ0aWVzW251bUNTU1Byb3BlcnRpZXMgKyAyXTsKICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9w
ZXJ0aWVzICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>