<?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>16302</bug_id>
          
          <creation_ts>2007-12-04 20:51:05 -0800</creation_ts>
          <short_desc>[GTK] Compiler flags for optimization</short_desc>
          <delta_ts>2013-09-11 04:37:53 -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>WebKitGTK</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>Gtk, Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>mjs</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>63306</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-04 20:51:05 -0800</bug_when>
    <thetext>There are some compiler flags which may help increase performance and reduce footprint in the GTK+ port.

Some appear straightforward, given that we make no use of exceptions or rtti in JSC, WebCore or WebKit (these mainly help reduce code size, but also improve performance):

    -fno-exceptions -fno-rtti

Others flags reported to yield benefits by the Apple WebKit team:

    -O3 makes a big difference over -O2
    -fomit-frame-pointer is a big win

Reportedly significant for JSC:

    -fstrict-aliasing

Some other flags I noticed, that may or may not be relevant:

    -fmessage-length=0 -fvisibility-inlines-hidden -fno-threadsafe-statics

Some of these flags shouldn&apos;t be used in Debug builds I&apos;m guessing.

-fomit-frame-pointer has a bad reputation -- we might have a hard time convincing distributions like Debian to leave it on. Numbers might help.

Is this an accurate summary? Any flags that I&apos;ve missed, or any that are redundant?

Is it worth using a different set of flags for JavaScriptCore and WebCore? It might be easier to just use the same flags for the lot with our current build system.

(I&apos;ve successfully made a build with all those flags enabled.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63331</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-12-05 06:04:47 -0800</bug_when>
    <thetext>We build with -fomit-frame-pointer disabled on the Mac as it makes backtraces from production builds next-to-useless.  Our measurements show it&apos;d be approximately 5% speedup on the JS iBench though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63428</commentid>
    <comment_count>2</comment_count>
      <attachid>17742</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-06 00:27:46 -0800</bug_when>
    <thetext>Created attachment 17742
Optimization flags

The biggest problem with this patch is that -fstrict-aliasing in JavaScriptCore.pri ends up affecting the whole build and getting applied to WebCore, which is not correct. We only want it to apply to JSC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64028</commentid>
    <comment_count>3</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-12 08:29:55 -0800</bug_when>
    <thetext>-fno-exceptions -fno-rtti landed in r28651. Other flags still up for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927726</commentid>
    <comment_count>4</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-09-11 04:37:53 -0700</bug_when>
    <thetext>Old bug, I&apos;m closing it as it&apos;s no longer relevant, the flags discussed here are either already present or implicitly defined by -O2.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17742</attachid>
            <date>2007-12-06 00:27:46 -0800</date>
            <delta_ts>2010-06-10 15:19:04 -0700</delta_ts>
            <desc>Optimization flags</desc>
            <filename>opti-flags.patch</filename>
            <type>text/plain</type>
            <size>2775</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0LnByaQkocmV2aXNpb24gMjg0
ODMpCisrKyBXZWJLaXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSwzMSBAQAogICAg
ICMgVGhpcyBzZXQgb2Ygd2FybmluZ3MgaXMgYm9ycm93ZWQgZnJvbSB0aGUgTWFjIGJ1aWxkCiAg
ICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVdhbGwgLVcgLVdjYXN0LWFsaWduIC1XY2hhci1zdWJzY3Jp
cHRzIC1XZm9ybWF0LXNlY3VyaXR5IC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1XcG9pbnRl
ci1hcml0aCAtV3dyaXRlLXN0cmluZ3MgLVduby1mb3JtYXQteTJrIC1Xbm8tdW51c2VkLXBhcmFt
ZXRlciAtV3VuZGVmCiAKKyAgICAjIFVzZSBwaXBlcyByYXRoZXIgdGhhbiB0ZW1wb3JhcnkgZmls
ZXMuIE1pZ2h0IHNwZWVkIHVwIHRoZSBidWlsZC4KKyAgICBRTUFLRV9DWFhGTEFHUyArPSAtcGlw
ZQorCisgICAgIyBUaGVzZSBmbGFncyBhcmUgYmFzZWQgb24gb3B0aW1pemF0aW9uIGV4cGVyaWVu
Y2UgZnJvbSB0aGUgTWFjIHBvcnQ6CisKKyAgICAjIEhlbHBzIGNvZGUgc2l6ZSBzaWduaWZpY2Fu
dGx5IGFuZCBzcGVlZCBhIGxpdHRsZS4KKyAgICBRTUFLRV9DWFhGTEFHUyArPSAtZm5vLWV4Y2Vw
dGlvbnMgLWZuby1ydHRpCisKKyAgICBDT05GSUcocmVsZWFzZSkgeworICAgICAgICAjIC1PMyBt
YWtlcyBhIGJpZyBkaWZmZXJlbmNlIG92ZXIgLU8yLgorICAgICAgICBRTUFLRV9DWFhGTEFHUyAr
PSAtTzMKKworICAgICAgICAjIC1mb21pdC1mcmFtZS1wb2ludGVyIHByb3ZpZGVzICJhcHByb3hp
bWF0ZWx5IDUlIHNwZWVkdXAgb24gdGhlIEpTCisgICAgICAgICMgaUJlbmNoIiBhdCB0aGUgY29z
dCBvZiBtYWtpbmcgUmVsZWFzZSBiYWNrdHJhY2VzIG5leHQgdG8gdXNlbGVzcy4KKyAgICAgICAg
UU1BS0VfQ1hYRkxBR1MgKz0gLWZvbWl0LWZyYW1lLXBvaW50ZXIKKworICAgICAgICAjIEluIEFw
cGxlJ3MgdmVyc2lvbiBvZiBHQ0MsIC1mc3RyaWN0LWFsaWFzaW5nLCAtZnJlb3JkZXItYmxvY2tz
LCBhbmQKKyAgICAgICAgIyAtZnNjaGVkLWludGVyYmxvY2sgYXJlIGRpc2FibGVkIGJ5IGRlZmF1
bHQgd2hlbiBvcHRpbWl6aW5nLgorICAgICAgICAjIFdlIGVuYWJsZSAtZnN0cmljdC1hbGlhc2lu
ZyBvbmx5IGluIEphdmFTY3JpcHRDb3JlIGZvciBub3cuCisgICAgICAgICMgSWYgdXNlZCBmb3Ig
V2ViQ29yZSB3aXRoIEdDQyA0LjIgb3IgbGF0ZXIsIGl0IHdvdWxkIGNhdXNlIHRoZSBidWlsZCB0
byBmYWlsLgorCisgICAgICAgICMgVGhlc2UgZmxhZ3MgYXJlIGhlcmUgdG8gbWF0Y2ggdGhlIE1h
YyBwb3J0LiBTb21lIG9mIHRoZW0gbWF5IGJlIHJlZHVuZGFudC4KKyAgICAgICAgUU1BS0VfQ1hY
RkxBR1MgKz0gLWZtZXNzYWdlLWxlbmd0aD0wIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiAt
Zm5vLXRocmVhZHNhZmUtc3RhdGljcworICAgIH0KKwogICAgIERFUEVORFBBVEggKz0gJCRQV0Qv
SmF2YVNjcmlwdENvcmUvQVBJCiAgICAgSU5DTFVERVBBVEggKz0gJCRQV0QKIH0KSW5kZXg6IEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDI4NDgzKQorKysgSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksMTMgQEAKIHF0
LXBvcnQ6REVGSU5FUyArPSBCVUlMRElOR19RVF9fCiBndGstcG9ydDpERUZJTkVTICs9IEJVSUxE
SU5HX0dUS19fCiAKK2d0ay1wb3J0IHsKKyAgICAjIEpTQy1vbmx5IG9wdGltaXphdGlvbiBiYXNl
ZCBvbiBleHBlcmllbmNlIGZyb20gdGhlIE1hYyBwb3J0CisgICAgQ09ORklHKHJlbGVhc2UpIHsK
KyAgICAgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLWZzdHJpY3QtYWxpYXNpbmcKKyAgICB9Cit9CisK
IHdpbjMyLW1zdmMqOiBJTkNMVURFUEFUSCArPSAkJFBXRC9vcy13aW4zMgogCiBpc0VtcHR5KEdF
TkVSQVRFRF9TT1VSQ0VTX0RJUik6R0VORVJBVEVEX1NPVVJDRVNfRElSID0gdG1wCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJl
dmlzaW9uIDI4NDgzKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAt
MzQsOCArMzQsMTAgQEAKIGluY2x1ZGUoJCRPVVRQVVRfRElSL2NvbmZpZy5wcmkpCiAKIENPTkZJ
RyAtPSB3YXJuX29uCi0qLWcrKyo6UU1BS0VfQ1hYRkxBR1MgKz0gLVdyZXR1cm4tdHlwZSAtZm5v
LXN0cmljdC1hbGlhc2luZwotI1FNQUtFX0NYWEZMQUdTICs9IC1XYWxsIC1Xbm8tdW5kZWYgLVdu
by11bnVzZWQtcGFyYW1ldGVyCitxdC1wb3J0IHsKKyAgICAqLWcrKyo6UU1BS0VfQ1hYRkxBR1Mg
Kz0gLVdyZXR1cm4tdHlwZSAtZm5vLXN0cmljdC1hbGlhc2luZworICAgICNRTUFLRV9DWFhGTEFH
UyArPSAtV2FsbCAtV25vLXVuZGVmIC1Xbm8tdW51c2VkLXBhcmFtZXRlcgorfQogCiBDT05GSUco
cmVsZWFzZSk6IUNPTkZJRyhRVERJUl9idWlsZCkgewogICAgIGNvbnRhaW5zKFFUX0NPTkZJRywg
cmVkdWNlX2V4cG9ydHMpOkNPTkZJRyArPSBoaWRlX3N5bWJvbHMK
</data>

          </attachment>
      

    </bug>

</bugzilla>