<?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>157749</bug_id>
          
          <creation_ts>2016-05-16 13:24:32 -0700</creation_ts>
          <short_desc>Regression(r177786): GlyphMetricsMap&lt;T&gt;::locatePageSlowCase() fills existing pages with unknown metrics</short_desc>
          <delta_ts>2016-05-18 09:03:45 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>139971</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193494</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-16 13:24:32 -0700</bug_when>
    <thetext>GlyphMetricsMap&lt;T&gt;::locatePageSlowCase() fills existing pages with unknown metrics after &lt;http://trac.webkit.org/changeset/177786&gt;. Previously, we would only to this for new pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193503</commentid>
    <comment_count>1</comment_count>
      <attachid>279040</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-16 13:38:57 -0700</bug_when>
    <thetext>Created attachment 279040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193504</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-16 13:39:09 -0700</bug_when>
    <thetext>Still testing locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193508</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-16 13:47:01 -0700</bug_when>
    <thetext>Found this by looking at PLT profiles that seeing that WebCore::GlyphMetricsMap&lt;WebCore::FloatRect&gt;::locatePageSlowCase(unsigned int) is slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193881</commentid>
    <comment_count>4</comment_count>
      <attachid>279040</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-05-17 11:08:18 -0700</bug_when>
    <thetext>Comment on attachment 279040
Patch

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

Nice find, r=me

&gt; Source/WebCore/platform/graphics/GlyphMetricsMap.h:123
&gt; +    auto&amp; pageInMap = m_pages-&gt;add(pageNumber, nullptr).iterator-&gt;value;
&gt; +    if (!pageInMap)
&gt; +        pageInMap = std::make_unique&lt;GlyphMetricsPage&gt;(unknownMetrics());
&gt; +    return *pageInMap;

If you want to be fancy you could do something like

return *m_pages.ensure(pageNumber, [] { 
   return std::make_unique&lt;GlyphMetricsPage&gt;(unknownMetrics(); }
).iterator-&gt;value;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193888</commentid>
    <comment_count>5</comment_count>
      <attachid>279040</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 11:30:06 -0700</bug_when>
    <thetext>Comment on attachment 279040
Patch

Clearing flags on attachment: 279040

Committed r201023: &lt;http://trac.webkit.org/changeset/201023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193889</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-17 11:30:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194281</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 09:02:17 -0700</bug_when>
    <thetext>Looks like a ~1% PLT progression on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194282</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-18 09:03:45 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Looks like a ~1% PLT progression on Mac.

Ditto on iOS.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279040</attachid>
            <date>2016-05-16 13:38:57 -0700</date>
            <delta_ts>2016-05-17 11:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157749-20160516133954.patch</filename>
            <type>text/plain</type>
            <size>5199</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDAwZTlhNGY0ZjY0NTJh
OWExOWMyOTNhMzdmZGQyNjhiYzI2YTU4Yy4uZDdmM2Y1MzMxYTk5MGE2ZmUzYmZjYjRjNjlkYWU3
MzNjMjljZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA1LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVncmVzc2lvbihyMTc3Nzg2
KTogR2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2UoKSBmaWxscyBleGlzdGlu
ZyBwYWdlcyB3aXRoIHVua25vd24gbWV0cmljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgcjE3Nzc4NiwgR2x5cGhNZXRyaWNzTWFwPFQ+Ojps
b2NhdGVQYWdlU2xvd0Nhc2UoKSB3b3VsZCB1bmNvbmRpdGlvbmFsbHkgZmlsbAorICAgICAgICBw
YWdlcyB3aXRoIHVua25vd24gbWV0cmljcy4gVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBjb2RlIHRv
IGRvIHNvIG9ubHkgaWYgdGhlIHBhZ2UKKyAgICAgICAgaXMgbmV3LCB0aHVzIHJlc3RvcmluZyB0
aGUgcHJlLXIxNzc3ODYgYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
bHlwaE1ldHJpY3NNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDo6bWV0
cmljc0ZvckdseXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDo6c2V0TWV0
cmljc0ZvckdseXBoKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDo6R2x5cGhN
ZXRyaWNzUGFnZTo6R2x5cGhNZXRyaWNzUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaE1l
dHJpY3NNYXA6OkdseXBoTWV0cmljc1BhZ2U6OmZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6R2x5
cGhNZXRyaWNzTWFwOjpsb2NhdGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmlj
c01hcDxUPjo6bG9jYXRlUGFnZVNsb3dDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0
cmljc01hcDo6R2x5cGhNZXRyaWNzUGFnZTo6bWV0cmljc0ZvckdseXBoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDo6R2x5cGhNZXRyaWNzUGFnZTo6c2V0TWV0
cmljc0ZvckdseXBoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01h
cDo6R2x5cGhNZXRyaWNzUGFnZTo6c2V0TWV0cmljc0ZvckluZGV4KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDxmbG9hdD46OnVua25vd25NZXRyaWNzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtu
b3duTWV0cmljcyk6IERlbGV0ZWQuCisKIDIwMTYtMDUtMTYgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBjb250YWluaW5nQmxvY2tGb3IqUG9zaXRpb24gZnVuY3Rp
b25zIHNob3VsZCB0YWtlIHRoZSByZW5kZXJlciBpbnN0ZWFkIG9mIHRoZSBwYXJlbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmlu
ZGV4IDRmNWQ2YjY1NzI2MjdmYTFlZDcwMWJiODRmZWY5NTRjY2E1YmRjYTEuLmVlNjIyYTBiZWU1
YTc3OWQ5YmRmYmU2ZTBkYzZlNDY4MWRmYTc2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCkBAIC00MywxMiArNDMsMTIgQEAg
cHVibGljOgogICAgIEdseXBoTWV0cmljc01hcCgpIDogbV9maWxsZWRQcmltYXJ5UGFnZShmYWxz
ZSkgeyB9CiAgICAgVCBtZXRyaWNzRm9yR2x5cGgoR2x5cGggZ2x5cGgpCiAgICAgewotICAgICAg
ICByZXR1cm4gbG9jYXRlUGFnZShnbHlwaCAvIEdseXBoTWV0cmljc1BhZ2U6OnNpemUpLT5tZXRy
aWNzRm9yR2x5cGgoZ2x5cGgpOworICAgICAgICByZXR1cm4gbG9jYXRlUGFnZShnbHlwaCAvIEds
eXBoTWV0cmljc1BhZ2U6OnNpemUpLm1ldHJpY3NGb3JHbHlwaChnbHlwaCk7CiAgICAgfQogCiAg
ICAgdm9pZCBzZXRNZXRyaWNzRm9yR2x5cGgoR2x5cGggZ2x5cGgsIGNvbnN0IFQmIG1ldHJpY3Mp
CiAgICAgewotICAgICAgICBsb2NhdGVQYWdlKGdseXBoIC8gR2x5cGhNZXRyaWNzUGFnZTo6c2l6
ZSktPnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgbWV0cmljcyk7CisgICAgICAgIGxvY2F0ZVBh
Z2UoZ2x5cGggLyBHbHlwaE1ldHJpY3NQYWdlOjpzaXplKS5zZXRNZXRyaWNzRm9yR2x5cGgoZ2x5
cGgsIG1ldHJpY3MpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTU4LDYgKzU4LDE3IEBAIHByaXZh
dGU6CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDI1NjsgLy8gVXN1YWxseSBj
b3ZlcnMgTGF0aW4tMSBpbiBhIHNpbmdsZSBwYWdlLgogICAgICAgICBzdGQ6OmFycmF5PFQsIHNp
emU+IG1fbWV0cmljczsKIAorICAgICAgICBHbHlwaE1ldHJpY3NQYWdlKCkgPSBkZWZhdWx0Owor
ICAgICAgICBHbHlwaE1ldHJpY3NQYWdlKGNvbnN0IFQmIGluaXRpYWxWYWx1ZSkKKyAgICAgICAg
eworICAgICAgICAgICAgZmlsbChpbml0aWFsVmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBmaWxsKGNvbnN0IFQmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICBtX21ldHJp
Y3MuZmlsbCh2YWx1ZSk7CisgICAgICAgIH0KKwogICAgICAgICBUIG1ldHJpY3NGb3JHbHlwaChH
bHlwaCBnbHlwaCkgY29uc3QgeyByZXR1cm4gbV9tZXRyaWNzW2dseXBoICUgc2l6ZV07IH0KICAg
ICAgICAgdm9pZCBzZXRNZXRyaWNzRm9yR2x5cGgoR2x5cGggZ2x5cGgsIGNvbnN0IFQmIG1ldHJp
Y3MpCiAgICAgICAgIHsKQEAgLTY5LDE0ICs4MCwxNCBAQCBwcml2YXRlOgogICAgICAgICB9CiAg
ICAgfTsKICAgICAKLSAgICBHbHlwaE1ldHJpY3NQYWdlKiBsb2NhdGVQYWdlKHVuc2lnbmVkIHBh
Z2VOdW1iZXIpCisgICAgR2x5cGhNZXRyaWNzUGFnZSYgbG9jYXRlUGFnZSh1bnNpZ25lZCBwYWdl
TnVtYmVyKQogICAgIHsKICAgICAgICAgaWYgKCFwYWdlTnVtYmVyICYmIG1fZmlsbGVkUHJpbWFy
eVBhZ2UpCi0gICAgICAgICAgICByZXR1cm4gJm1fcHJpbWFyeVBhZ2U7CisgICAgICAgICAgICBy
ZXR1cm4gbV9wcmltYXJ5UGFnZTsKICAgICAgICAgcmV0dXJuIGxvY2F0ZVBhZ2VTbG93Q2FzZShw
YWdlTnVtYmVyKTsKICAgICB9CiAKLSAgICBHbHlwaE1ldHJpY3NQYWdlKiBsb2NhdGVQYWdlU2xv
d0Nhc2UodW5zaWduZWQgcGFnZU51bWJlcik7CisgICAgR2x5cGhNZXRyaWNzUGFnZSYgbG9jYXRl
UGFnZVNsb3dDYXNlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpOwogICAgIAogICAgIHN0YXRpYyBUIHVu
a25vd25NZXRyaWNzKCk7CiAKQEAgLTk1LDI3ICsxMDYsMjEgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
RmxvYXRSZWN0IEdseXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtub3duTWV0cmljcygpCiAg
ICAgcmV0dXJuIEZsb2F0UmVjdCgwLCAwLCBjR2x5cGhTaXplVW5rbm93biwgY0dseXBoU2l6ZVVu
a25vd24pOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8
VD46OkdseXBoTWV0cmljc1BhZ2UqIEdseXBoTWV0cmljc01hcDxUPjo6bG9jYXRlUGFnZVNsb3dD
YXNlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpCit0ZW1wbGF0ZTxjbGFzcyBUPiB0eXBlbmFtZSBHbHlw
aE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2UmIEdseXBoTWV0cmljc01hcDxUPjo6bG9j
YXRlUGFnZVNsb3dDYXNlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpCiB7Ci0gICAgR2x5cGhNZXRyaWNz
UGFnZSogcGFnZTsKICAgICBpZiAoIXBhZ2VOdW1iZXIpIHsKICAgICAgICAgQVNTRVJUKCFtX2Zp
bGxlZFByaW1hcnlQYWdlKTsKLSAgICAgICAgcGFnZSA9ICZtX3ByaW1hcnlQYWdlOworICAgICAg
ICBtX3ByaW1hcnlQYWdlLmZpbGwodW5rbm93bk1ldHJpY3MoKSk7CiAgICAgICAgIG1fZmlsbGVk
UHJpbWFyeVBhZ2UgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9wYWdlcykK
LSAgICAgICAgICAgIG1fcGFnZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEhhc2hNYXA8aW50LCBzdGQ6
OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+PigpOwotICAgICAgICBhdXRvJiBwYWdlSW5N
YXAgPSBtX3BhZ2VzLT5hZGQocGFnZU51bWJlciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwot
ICAgICAgICBpZiAoIXBhZ2VJbk1hcCkKLSAgICAgICAgICAgIHBhZ2VJbk1hcCA9IHN0ZDo6bWFr
ZV91bmlxdWU8R2x5cGhNZXRyaWNzUGFnZT4oKTsKLSAgICAgICAgcGFnZSA9IHBhZ2VJbk1hcC5n
ZXQoKTsKKyAgICAgICAgcmV0dXJuIG1fcHJpbWFyeVBhZ2U7CiAgICAgfQogCi0gICAgLy8gRmls
bCBpbiB0aGUgd2hvbGUgcGFnZSB3aXRoIHRoZSB1bmtub3duIGdseXBoIGluZm9ybWF0aW9uLgot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaE1ldHJpY3NQYWdlOjpzaXplOyBpKysp
Ci0gICAgICAgIHBhZ2UtPnNldE1ldHJpY3NGb3JJbmRleChpLCB1bmtub3duTWV0cmljcygpKTsK
LQotICAgIHJldHVybiBwYWdlOworICAgIGlmICghbV9wYWdlcykKKyAgICAgICAgbV9wYWdlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJp
Y3NQYWdlPj4+KCk7CisgICAgYXV0byYgcGFnZUluTWFwID0gbV9wYWdlcy0+YWRkKHBhZ2VOdW1i
ZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoIXBhZ2VJbk1hcCkKKyAgICAg
ICAgcGFnZUluTWFwID0gc3RkOjptYWtlX3VuaXF1ZTxHbHlwaE1ldHJpY3NQYWdlPih1bmtub3du
TWV0cmljcygpKTsKKyAgICByZXR1cm4gKnBhZ2VJbk1hcDsKIH0KICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>