<?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>24463</bug_id>
          
          <creation_ts>2009-03-09 09:17:18 -0700</creation_ts>
          <short_desc>Do not detach/copy QString twice in WebCore::qstring</short_desc>
          <delta_ts>2009-03-09 09:39:34 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Treat">manyoso</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>112830</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-03-09 09:17:18 -0700</bug_when>
    <thetext>Currently, WebCore::qstring is detaching and copying twice for every single TextRun that is processed and drawn.  This is a very expensive operation and profiling suggests this method is one of the top ten most expensive operations in all of QtWebKit.  The patch attached minimizes the QString copying/detaching to only those cases where it is necessary.

Even with this change this method is still a very expensive operation since almost all TextRuns contain a character that needs special handling by the QTextEngine.  A forthcoming patch will address this too, but it requires an addition to Qt&apos;s API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112831</commentid>
    <comment_count>1</comment_count>
      <attachid>28414</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-03-09 09:21:43 -0700</bug_when>
    <thetext>Created attachment 28414
Don&apos;t detach so often</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112835</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-03-09 09:39:34 -0700</bug_when>
    <thetext>Landed with r41527.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28414</attachid>
            <date>2009-03-09 09:21:43 -0700</date>
            <delta_ts>2009-03-09 09:25:23 -0700</delta_ts>
            <desc>Don&apos;t detach so often</desc>
            <filename>24463.patch</filename>
            <type>text/plain</type>
            <size>4016</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTQ4OWNiMi4uNjYyY2ZlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wMy0wOSAgQWRhbSBUcmVhdCAg
PGFkYW0udHJlYXRAdG9yY2htb2JpbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDQ2MworICAgICAgICBXZWJDb3JlOjpxc3RyaW5nIGlzIGRldGFjaGluZyBhbmQgY29w
eWluZyB0d2ljZSBmb3IgZXZlcnkgc2luZ2xlCisgICAgICAgIFdlYkNvcmU6OlRleHRSdW4gdGhh
dCBpcyBwcm9jZXNzZWQgYW5kIGRyYXduLiAgVGhpcyBlbGV2YXRlcyB0aGlzIG1ldGhvZAorICAg
ICAgICB0byBvbmUgb2YgdGhlIHRvcC10ZW4gbW9zdCBleHBlbnNpdmUgbWV0aG9kcyBpbiBhbGwg
b2YgUXRXZWJLaXQgYWNjb3JkaW5nCisgICAgICAgIHRvIHByb2ZpbGluZy4gIFRoaXMgY2hhbmdl
cyB0aGUgbWV0aG9kIHNvIHRoYXQgUVN0cmluZyBvbmx5IGRldGFjaGVzCisgICAgICAgIHdoZW4g
YWJzb2x1dGVseSBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cXN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpmaXhTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6b2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQpOgorCiAy
MDA5LTAzLTA3ICBYYW4gTG9wZXogIDx4YW5AZ25vbWUub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRm9udFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udFF0LmNw
cAppbmRleCAzNjYzOGRkLi4yZGI3ZTZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9G
b250UXQuY3BwCkBAIC00NSwyMCArNDUsMjcgQEAKICNpZiBRVF9WRVJTSU9OID49IDB4MDQwNDAw
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBRU3RyaW5nIHFzdHJpbmcoY29uc3QgVGV4
dFJ1biYgcnVuKQorc3RhdGljIGNvbnN0IFFTdHJpbmcgcXN0cmluZyhjb25zdCBUZXh0UnVuJiBy
dW4pCiB7Ci0gICAgUVN0cmluZyBzdHJpbmcoKFFDaGFyICopcnVuLmNoYXJhY3RlcnMoKSwgcnVu
Lmxlbmd0aCgpKTsKLSAgICBRQ2hhciAqdWMgPSBzdHJpbmcuZGF0YSgpOworICAgIC8vV2UgZG9u
J3QgZGV0YWNoCisgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21SYXdEYXRhKChjb25zdCBRQ2hhciAq
KXJ1bi5jaGFyYWN0ZXJzKCksIHJ1bi5sZW5ndGgoKSk7Cit9CisKK3N0YXRpYyBjb25zdCBRU3Ry
aW5nIGZpeFNwYWNpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5nKQoreworICAgIC8vT25seSBkZXRh
Y2ggaWYgd2UncmUgYWN0dWFsbHkgY2hhbmdpbmcgc29tZXRoaW5nCisgICAgUVN0cmluZyBwb3Nz
aWJseURldGFjaGVkID0gc3RyaW5nOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyaW5nLmxl
bmd0aCgpOyArK2kpIHsKLSAgICAgICAgaWYgKEZvbnQ6OnRyZWF0QXNTcGFjZSh1Y1tpXS51bmlj
b2RlKCkpKQotICAgICAgICAgICAgdWNbaV0gPSAweDIwOwotICAgICAgICBlbHNlIGlmIChGb250
Ojp0cmVhdEFzWmVyb1dpZHRoU3BhY2UodWNbaV0udW5pY29kZSgpKSkKLSAgICAgICAgICAgIHVj
W2ldID0gMHgyMDBjOworICAgICAgICBjb25zdCBRQ2hhciBjID0gc3RyaW5nLmF0KGkpOworICAg
ICAgICBpZiAoYy51bmljb2RlKCkgIT0gMHgyMCAmJiBGb250Ojp0cmVhdEFzU3BhY2UoYy51bmlj
b2RlKCkpKSB7CisgICAgICAgICAgICBwb3NzaWJseURldGFjaGVkW2ldID0gMHgyMDsgLy9kZXRh
Y2gKKyAgICAgICAgfSBlbHNlIGlmIChjLnVuaWNvZGUoKSAhPSAweDIwMGMgJiYgRm9udDo6dHJl
YXRBc1plcm9XaWR0aFNwYWNlKGMudW5pY29kZSgpKSkgeworICAgICAgICAgICAgcG9zc2libHlE
ZXRhY2hlZFtpXSA9IDB4MjAwYzsgLy9kZXRhY2gKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1
cm4gc3RyaW5nOworICAgIHJldHVybiBwb3NzaWJseURldGFjaGVkOwogfQogCi0KIHN0YXRpYyBR
VGV4dExpbmUgc2V0dXBMYXlvdXQoUVRleHRMYXlvdXQqIGxheW91dCwgY29uc3QgVGV4dFJ1biYg
c3R5bGUpCiB7CiAgICAgaW50IGZsYWdzID0gc3R5bGUucnRsKCkgPyBRdDo6VGV4dEZvcmNlUmln
aHRUb0xlZnQgOiBRdDo6VGV4dEZvcmNlTGVmdFRvUmlnaHQ7CkBAIC0xMDUsNyArMTEyLDcgQEAg
dm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjdHgsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXQKICAgICAgICAgICAgIHAtPnNldFBlbihRQ29sb3IoY3R4
LT5zdHJva2VDb2xvcigpKSk7CiAgICAgfQogCi0gICAgUVN0cmluZyBzdHJpbmcgPSBxc3RyaW5n
KHJ1bik7CisgICAgY29uc3QgUVN0cmluZyBzdHJpbmcgPSBmaXhTcGFjaW5nKHFzdHJpbmcocnVu
KSk7CiAKICAgICAvLyB0ZXh0IHNoYWRvdwogICAgIEludFNpemUgc2hhZG93U2l6ZTsKQEAgLTE3
NCw3ICsxODEsNyBAQCBmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuKSBjb25zdAogewogICAgIGlmICghcnVuLmxlbmd0aCgpKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICBRU3RyaW5nIHN0cmluZyA9IHFzdHJpbmcocnVuKTsKKyAgICBjb25zdCBR
U3RyaW5nIHN0cmluZyA9IGZpeFNwYWNpbmcocXN0cmluZyhydW4pKTsKICAgICBRVGV4dExheW91
dCBsYXlvdXQoc3RyaW5nLCBmb250KCkpOwogICAgIFFUZXh0TGluZSBsaW5lID0gc2V0dXBMYXlv
dXQoJmxheW91dCwgcnVuKTsKICAgICBpbnQgdyA9IGludChsaW5lLm5hdHVyYWxUZXh0V2lkdGgo
KSk7CkBAIC0xODcsNyArMTk0LDcgQEAgZmxvYXQgRm9udDo6ZmxvYXRXaWR0aEZvckNvbXBsZXhU
ZXh0KGNvbnN0IFRleHRSdW4mIHJ1bikgY29uc3QKIAogaW50IEZvbnQ6Om9mZnNldEZvclBvc2l0
aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgcG9zaXRpb24sIGJvb2wg
aW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0CiB7Ci0gICAgUVN0cmluZyBzdHJpbmcgPSBxc3Ry
aW5nKHJ1bik7CisgICAgY29uc3QgUVN0cmluZyBzdHJpbmcgPSBmaXhTcGFjaW5nKHFzdHJpbmco
cnVuKSk7CiAgICAgUVRleHRMYXlvdXQgbGF5b3V0KHN0cmluZywgZm9udCgpKTsKICAgICBRVGV4
dExpbmUgbGluZSA9IHNldHVwTGF5b3V0KCZsYXlvdXQsIHJ1bik7CiAgICAgcmV0dXJuIGxpbmUu
eFRvQ3Vyc29yKHBvc2l0aW9uKTsKQEAgLTE5NSw3ICsyMDIsNyBAQCBpbnQgRm9udDo6b2Zmc2V0
Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGludCBwb3NpdGlv
biwgYm9vbAogCiBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgSW50UG9pbnQmIHB0LCBpbnQgaCwgaW50IGZyb20sIGlu
dCB0bykgY29uc3QKIHsKLSAgICBRU3RyaW5nIHN0cmluZyA9IHFzdHJpbmcocnVuKTsKKyAgICBj
b25zdCBRU3RyaW5nIHN0cmluZyA9IGZpeFNwYWNpbmcocXN0cmluZyhydW4pKTsKICAgICBRVGV4
dExheW91dCBsYXlvdXQoc3RyaW5nLCBmb250KCkpOwogICAgIFFUZXh0TGluZSBsaW5lID0gc2V0
dXBMYXlvdXQoJmxheW91dCwgcnVuKTsKIAo=
</data>
<flag name="review"
          id="13924"
          type_id="1"
          status="+"
          setter="staikos"
    />
          </attachment>
      

    </bug>

</bugzilla>