<?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>105216</bug_id>
          
          <creation_ts>2012-12-17 14:16:23 -0800</creation_ts>
          <short_desc>Optimize LayoutUnit::boundedMultiply</short_desc>
          <delta_ts>2012-12-18 12:13:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>leviw</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>793025</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-17 14:16:23 -0800</bug_when>
    <thetext>LayoutUnit::boundedMultiply is used for multiplication that&apos;s prone to overflow and for all LayoutUnit multiplication if SATURATED_LAYOUT_ARITHMETIC is enabled. The current approach is quite inefficient.

Change it to use a more efficient saturated multiplication implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793028</commentid>
    <comment_count>1</comment_count>
      <attachid>179801</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-17 14:18:45 -0800</bug_when>
    <thetext>Created attachment 179801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793033</commentid>
    <comment_count>2</comment_count>
      <attachid>179801</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-12-17 14:23:09 -0800</bug_when>
    <thetext>Comment on attachment 179801
Patch

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

&gt; Source/WebCore/platform/LayoutUnit.h:490
&gt; +    if (high != low &gt;&gt; 31)

It wouldn&apos;t hurt to have a comment about the significance of this compare.

&gt; Source/WebCore/platform/LayoutUnit.h:497
&gt; +    // FIXME: Should be bounded even in the non-subpixel case.

Thank you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793039</commentid>
    <comment_count>3</comment_count>
      <attachid>179803</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-17 14:32:37 -0800</bug_when>
    <thetext>Created attachment 179803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793043</commentid>
    <comment_count>4</comment_count>
      <attachid>179803</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-12-17 14:36:41 -0800</bug_when>
    <thetext>Comment on attachment 179803
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793820</commentid>
    <comment_count>5</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-12-18 10:47:13 -0800</bug_when>
    <thetext>Committed r138041: &lt;http://trac.webkit.org/changeset/138041&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793886</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-12-18 11:44:01 -0800</bug_when>
    <thetext>Hopefully-ok follow up build fix: http://trac.webkit.org/changeset/138046.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793913</commentid>
    <comment_count>7</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-12-18 12:13:33 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Hopefully-ok follow up build fix: http://trac.webkit.org/changeset/138046.

Thanks Tim!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179801</attachid>
            <date>2012-12-17 14:18:45 -0800</date>
            <delta_ts>2012-12-17 14:32:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105216-20121217141603.patch</filename>
            <type>text/plain</type>
            <size>2476</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTE3ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBMYXlvdXRVbml0
Ojpib3VuZGVkTXVsdGlwbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNTIxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIExheW91dFVuaXQ6OmJvdW5kZWRNdWx0aXBseSBpcyB1c2VkIGZvciBtdWx0aXBs
aWNhdGlvbiB0aGF0J3MKKyAgICAgICAgcHJvbmUgdG8gb3ZlcmZsb3cgYW5kIGZvciBhbGwgTGF5
b3V0VW5pdCBtdWx0aXBsaWNhdGlvbiBpZgorICAgICAgICBTQVRVUkFURURfTEFZT1VUX0FSSVRI
TUVUSUMgaXMgZW5hYmxlZC4gVGhlIGN1cnJlbnQgYXBwcm9hY2ggaXMKKyAgICAgICAgcXVpdGUg
aW5lZmZpY2llbnQuCisKKyAgICAgICAgQ2hhbmdlIGl0IHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50
IHNhdHVyYXRlZCBtdWx0aXBsaWNhdGlvbgorICAgICAgICBpbXBsZW1lbnRhdGlvbi4gQXMgdGhl
IGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIHVzZQorICAgICAgICBrRml4ZWRQb2ludERlbm9taW5h
dG9yIGl0IGlzIGltcGxlbWVudGVkIGluIExheW91dFVuaXQuaCBpbnN0ZWFkCisgICAgICAgIG9m
IGluIHd0Zi9TYXR1cmF0ZWRBcml0aG1ldGljLmguCisKKyAgICAgICAgVGVzdDogQ292ZXJlZCBi
eSBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKKworICAgICAgICAq
IHBsYXRmb3JtL0xheW91dFVuaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmJvdW5kZWRNdWx0aXBs
eSk6CisKIDIwMTItMTItMTcgIE90dG8gRGVyZWsgQ2hldW5nICA8b3RjaGV1bmdAcmltLmNvbT4K
IAogICAgICAgICBbQmxhY2tCZXJyeV0gUHJldmVudCBDb29raWVNYW5hZ2VyIGZyb20gYmxvY2tp
bmcgdGhlIFdLVCB0aHJlYWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVu
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgJ
KHJldmlzaW9uIDEzNzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDE1ICs0ODEsMjAgQEAgaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBmbG9hdCBhLCBjbwogaW5saW5lIExheW91dFVuaXQgYm91bmRlZE11bHRpcGx5
KGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCiB7CiAjaWYgRU5BQkxF
KFNVQlBJWEVMX0xBWU9VVCkKKyAgICBpbnQ2NF90IGFSYXdWYWx1ZSA9IGEucmF3VmFsdWUoKTsK
KyAgICBpbnQ2NF90IGJSYXdWYWx1ZSA9IGIucmF3VmFsdWUoKTsKKyAgICBpbnQ2NF90IHJlc3Vs
dCA9IGFSYXdWYWx1ZSAqIGJSYXdWYWx1ZSAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CisgICAg
aW50MzJfdCBoaWdoID0gcmVzdWx0ID4+IDMyOworICAgIGludDMyX3QgbG93ID0gcmVzdWx0Owor
ICAgIHVpbnQzMl90IHNhdHVyYXRlZCA9IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYVJhd1ZhbHVl
IF4gYlJhd1ZhbHVlKSA+PiAzMSkgKyBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOwor
ICAgIGlmIChoaWdoICE9IGxvdyA+PiAzMSkKKyAgICAgICAgcmVzdWx0ID0gc2F0dXJhdGVkOwor
CiAgICAgTGF5b3V0VW5pdCByZXR1cm5WYWw7Ci0gICAgbG9uZyBsb25nIHJhd1ZhbCA9IHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4oYS5yYXdWYWx1ZSgpKSAqIGIucmF3VmFsdWUoKSAvIGtGaXhlZFBv
aW50RGVub21pbmF0b3I7Ci0gICAgaWYgKHJhd1ZhbCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRVbml0OjptYXgoKTsKLSAgICBpZiAocmF3
VmFsIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIExh
eW91dFVuaXQ6Om1pbigpOwotICAgIHJldHVyblZhbC5zZXRSYXdWYWx1ZShyYXdWYWwpOworICAg
IHJldHVyblZhbC5zZXRSYXdWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCkpOwogICAgIHJl
dHVybiByZXR1cm5WYWw7CiAjZWxzZQorICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgYm91bmRlZCBl
dmVuIGluIHRoZSBub24tc3VicGl4ZWwgY2FzZS4KICAgICByZXR1cm4gYS5yYXdWYWx1ZSgpICog
Yi5yYXdWYWx1ZSgpOwogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179803</attachid>
            <date>2012-12-17 14:32:37 -0800</date>
            <delta_ts>2012-12-18 10:47:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105216-20121217142955.patch</filename>
            <type>text/plain</type>
            <size>2687</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTE3ICBFbWlsIEEg
RWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KKworICAgICAgICBPcHRpbWl6ZSBMYXlvdXRVbml0
Ojpib3VuZGVkTXVsdGlwbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNTIxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIExheW91dFVuaXQ6OmJvdW5kZWRNdWx0aXBseSBpcyB1c2VkIGZvciBtdWx0aXBs
aWNhdGlvbiB0aGF0J3MKKyAgICAgICAgcHJvbmUgdG8gb3ZlcmZsb3cgYW5kIGZvciBhbGwgTGF5
b3V0VW5pdCBtdWx0aXBsaWNhdGlvbiBpZgorICAgICAgICBTQVRVUkFURURfTEFZT1VUX0FSSVRI
TUVUSUMgaXMgZW5hYmxlZC4gVGhlIGN1cnJlbnQgYXBwcm9hY2ggaXMKKyAgICAgICAgcXVpdGUg
aW5lZmZpY2llbnQuCisKKyAgICAgICAgQ2hhbmdlIGl0IHRvIHVzZSBhIG1vcmUgZWZmaWNpZW50
IHNhdHVyYXRlZCBtdWx0aXBsaWNhdGlvbgorICAgICAgICBpbXBsZW1lbnRhdGlvbi4gQXMgdGhl
IGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIHVzZQorICAgICAgICBrRml4ZWRQb2ludERlbm9taW5h
dG9yIGl0IGlzIGltcGxlbWVudGVkIGluIExheW91dFVuaXQuaCBpbnN0ZWFkCisgICAgICAgIG9m
IGluIHd0Zi9TYXR1cmF0ZWRBcml0aG1ldGljLmguCisKKyAgICAgICAgVGVzdDogQ292ZXJlZCBi
eSBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvTGF5b3V0VW5pdC5jcHAKKworICAgICAgICAq
IHBsYXRmb3JtL0xheW91dFVuaXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmJvdW5kZWRNdWx0aXBs
eSk6CisKIDIwMTItMTItMTcgIE90dG8gRGVyZWsgQ2hldW5nICA8b3RjaGV1bmdAcmltLmNvbT4K
IAogICAgICAgICBbQmxhY2tCZXJyeV0gUHJldmVudCBDb29raWVNYW5hZ2VyIGZyb20gYmxvY2tp
bmcgdGhlIFdLVCB0aHJlYWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVu
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgJ
KHJldmlzaW9uIDEzNzkzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgwLDE2ICs0ODAsMjAgQEAgaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBmbG9hdCBhLCBjbwogLy8gRm9yIG11bHRpcGxpY2F0aW9uIHRoYXQncyBwcm9u
ZSB0byBvdmVyZmxvdywgdGhpcyBib3VuZHMgaXQgdG8gTGF5b3V0VW5pdDo6bWF4KCkgYW5kIDo6
bWluKCkKIGlubGluZSBMYXlvdXRVbml0IGJvdW5kZWRNdWx0aXBseShjb25zdCBMYXlvdXRVbml0
JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQogewotI2lmIEVOQUJMRShTVUJQSVhFTF9MQVlPVVQp
CisjaWYgRU5BQkxFKFNVQlBJWEVMX0xBWU9VVCkgICAKKyAgICBpbnQ2NF90IHJlc3VsdCA9IHN0
YXRpY19jYXN0PGludDY0X3Q+KGEucmF3VmFsdWUoKSkgKiBzdGF0aWNfY2FzdDxpbnQ2NF90Pihi
LnJhd1ZhbHVlKCkpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKKyAgICBpbnQzMl90IGhpZ2gg
PSByZXN1bHQgPj4gMzI7CisgICAgaW50MzJfdCBsb3cgPSByZXN1bHQ7CisgICAgdWludDMyX3Qg
c2F0dXJhdGVkID0gKHN0YXRpY19jYXN0PHVpbnQzMl90PihhLnJhd1ZhbHVlKCkgXiBiLnJhd1Zh
bHVlKCkpID4+IDMxKSArIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CisgICAgLy8g
SWYgdGhlIGhpZ2hlciAzMiBiaXRzIGRvZXMgbm90IG1hdGNoIHRoZSBsb3dlciAzMiB3aXRoIHNp
Z24gZXh0ZW5zaW9uIHRoZSBvcGVyYXRpb24gb3ZlcmZsb3dlZC4KKyAgICBpZiAoaGlnaCAhPSBs
b3cgPj4gMzEpCisgICAgICAgIHJlc3VsdCA9IHNhdHVyYXRlZDsKKwogICAgIExheW91dFVuaXQg
cmV0dXJuVmFsOwotICAgIGxvbmcgbG9uZyByYXdWYWwgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGEucmF3VmFsdWUoKSkgKiBiLnJhd1ZhbHVlKCkgLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOwot
ICAgIGlmIChyYXdWYWwgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKQotICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdDo6bWF4KCk7Ci0gICAgaWYgKHJhd1ZhbCA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRVbml0OjptaW4oKTsK
LSAgICByZXR1cm5WYWwuc2V0UmF3VmFsdWUocmF3VmFsKTsKKyAgICByZXR1cm5WYWwuc2V0UmF3
VmFsdWUoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsOwog
I2Vsc2UKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIGJvdW5kZWQgZXZlbiBpbiB0aGUgbm9uLXN1
YnBpeGVsIGNhc2UuCiAgICAgcmV0dXJuIGEucmF3VmFsdWUoKSAqIGIucmF3VmFsdWUoKTsKICNl
bmRpZgogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>