Bug 127660

Summary: JSC: Pack unlinked instructions harder.
Product: WebKit Reporter: Andreas Kling <kling>
Component: JavaScriptCoreAssignee: Andreas Kling <kling>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, bunhere, commit-queue, fpizlo, ggaren, gyuyoung.kim, kling, oliver, rakuco
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch none

Description Andreas Kling 2014-01-26 14:51:16 PST
We shouldn't waste 32 bits per unlinked instruction when they are mostly just sitting around in the code cache.
Comment 1 Andreas Kling 2014-01-26 15:08:32 PST
Created attachment 222288 [details]
Patch
Comment 2 WebKit Commit Bot 2014-01-26 15:10:26 PST
Attachment 222288 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/UnlinkedInstructionStream.h:72:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Andreas Kling 2014-01-26 15:13:42 PST
Created attachment 222289 [details]
Patch

Forgot some build system stuff.
Comment 4 Andreas Kling 2014-01-26 20:05:48 PST
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, and AsmBench on HEYPRELADY (MacBookPro10,1).

VMs tested:
"TipOfTree" at /Users/akling/Source/Safari/Reference-OpenSource/WebKitBuild/Release/jsc
"MyChanges" at /Users/akling/Source/Safari/OpenSource/WebKitBuild/Release/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                        TipOfTree                 MyChanges                                     
SunSpider:
   3d-cube                                            5.0502+-0.1667     ?      5.2029+-0.2289        ? might be 1.0303x slower
   3d-morph                                           5.7098+-0.3108     ?      5.8830+-0.5824        ? might be 1.0303x slower
   3d-raytrace                                        6.4214+-0.4464     ?      6.5811+-0.8402        ? might be 1.0249x slower
   access-binary-trees                                1.5217+-0.1488     ?      1.5314+-0.0342        ?
   access-fannkuch                                    5.3005+-0.3849     ?      5.3159+-0.2503        ?
   access-nbody                                       2.6380+-0.1175     ?      2.7048+-0.1696        ? might be 1.0253x slower
   access-nsieve                                      3.2521+-0.1918            3.2502+-0.1509        
   bitops-3bit-bits-in-byte                           1.4509+-0.0606            1.4457+-0.0700        
   bitops-bits-in-byte                                2.8503+-0.2762     ?      2.8794+-0.2133        ? might be 1.0102x slower
   bitops-bitwise-and                                 2.1466+-0.4890            2.0448+-0.2221          might be 1.0498x faster
   bitops-nsieve-bits                                 3.4560+-0.1761     ?      3.4600+-0.1306        ?
   controlflow-recursive                              2.0340+-0.1588            1.9979+-0.2043          might be 1.0181x faster
   crypto-aes                                         3.7794+-0.0392     ?      3.8223+-0.1014        ? might be 1.0114x slower
   crypto-md5                                         2.3720+-0.2873            2.3168+-0.0320          might be 1.0238x faster
   crypto-sha1                                        2.1599+-0.0748     ?      2.3150+-0.3035        ? might be 1.0718x slower
   date-format-tofte                                  8.3636+-0.3943     ?      8.5512+-0.4809        ? might be 1.0224x slower
   date-format-xparb                                  5.6882+-0.0432     ?      5.9246+-0.5428        ? might be 1.0415x slower
   math-cordic                                        3.0510+-0.2277            2.9790+-0.1350          might be 1.0242x faster
   math-partial-sums                                  5.1506+-0.2474     ?      5.2997+-0.3540        ? might be 1.0289x slower
   math-spectral-norm                                 1.7593+-0.2015            1.6737+-0.0645          might be 1.0511x faster
   regexp-dna                                         7.9693+-0.4628     ?      8.4171+-2.6398        ? might be 1.0562x slower
   string-base64                                      4.0562+-0.1262     ?      4.3197+-0.7733        ? might be 1.0650x slower
   string-fasta                                       6.5498+-0.1120     ?      7.2180+-1.0664        ? might be 1.1020x slower
   string-tagcloud                                   11.5059+-3.1647           10.1659+-0.4011          might be 1.1318x faster
   string-unpack-code                                23.8005+-1.7389           22.8313+-0.7080          might be 1.0424x faster
   string-validate-input                              4.5990+-0.2513            4.5607+-0.0786        

   <arithmetic> *                                     5.1014+-0.0809     ?      5.1035+-0.1201        ? might be 1.0004x slower
   <geometric>                                        4.0238+-0.0279     ?      4.0506+-0.0762        ? might be 1.0067x slower
   <harmonic>                                         3.3449+-0.0191     ?      3.3558+-0.0715        ? might be 1.0032x slower

                                                        TipOfTree                 MyChanges                                     
LongSpider:
   3d-cube                                         1331.0397+-10.4404        1329.6429+-8.8143        
   3d-morph                                         891.0615+-7.2715          888.8539+-1.6341        
   3d-raytrace                                      826.9677+-3.0821          826.6172+-11.3319       
   access-binary-trees                             1674.0854+-25.7291        1656.2063+-22.7639         might be 1.0108x faster
   access-fannkuch                                  396.3028+-0.7037     ?    396.9335+-3.3034        ?
   access-nbody                                     831.6067+-3.2756     ?    832.1808+-3.9046        ?
   access-nsieve                                    977.2501+-12.7065         975.0717+-18.2693       
   bitops-3bit-bits-in-byte                          96.5571+-0.1639     ?     97.6077+-1.2700        ? might be 1.0109x slower
   bitops-bits-in-byte                              182.1647+-4.8831          181.4155+-3.9378        
   bitops-nsieve-bits                               767.7944+-12.0940    ?    770.5960+-18.0940       ?
   controlflow-recursive                            777.3472+-12.9225         772.3230+-0.6563        
   crypto-aes                                      1052.8511+-13.2956    ?   1066.4101+-25.2130       ? might be 1.0129x slower
   crypto-md5                                       735.4764+-8.8551     ?    743.0698+-13.6513       ? might be 1.0103x slower
   crypto-sha1                                      985.3370+-10.3478    ?   1004.8170+-25.9099       ? might be 1.0198x slower
   date-format-tofte                                824.0000+-11.0361    ?    828.4603+-15.7943       ?
   date-format-xparb                                930.6128+-16.2599    ?    941.8796+-33.9491       ? might be 1.0121x slower
   math-cordic                                     1205.4415+-6.7944         1203.6714+-6.7154        
   math-partial-sums                                608.4153+-2.4295     ?    610.3924+-4.9196        ?
   math-spectral-norm                               916.6740+-8.5286          914.8400+-0.4555        
   string-base64                                    408.4973+-5.3542     ?    412.5107+-5.4294        ?
   string-fasta                                     607.2172+-5.0077     ?    611.0516+-7.4330        ?
   string-tagcloud                                  250.6883+-5.1330          242.2059+-3.6827          might be 1.0350x faster

   <arithmetic>                                     785.3358+-1.6626     ?    786.6708+-3.9072        ? might be 1.0017x slower
   <geometric> *                                    667.1314+-1.4678     ?    668.0546+-3.3522        ? might be 1.0014x slower
   <harmonic>                                       498.5600+-1.2857     ?    498.9940+-3.5501        ? might be 1.0009x slower

                                                        TipOfTree                 MyChanges                                     
V8Spider:
   crypto                                            48.4115+-2.2310           48.2100+-0.9341        
   deltablue                                         64.7512+-1.2655     ?     65.7610+-1.7302        ? might be 1.0156x slower
   earley-boyer                                      44.2818+-2.4311     ?     47.1703+-2.1900        ? might be 1.0652x slower
   raytrace                                          31.3949+-1.6566           30.9773+-2.6600          might be 1.0135x faster
   regexp                                            63.3703+-1.6748     ?     64.5823+-2.0995        ? might be 1.0191x slower
   richards                                          83.5972+-5.9838           82.1786+-3.5505          might be 1.0173x faster
   splay                                             32.5989+-1.5923           32.1121+-2.0927          might be 1.0152x faster

   <arithmetic>                                      52.6294+-1.6457     ?     52.9988+-1.0051        ? might be 1.0070x slower
   <geometric> *                                     49.7236+-1.5377     ?     50.0603+-1.1115        ? might be 1.0068x slower
   <harmonic>                                        46.9762+-1.5011     ?     47.1924+-1.2673        ? might be 1.0046x slower

                                                        TipOfTree                 MyChanges                                     
Octane and V8v7:
   encrypt                                           0.26980+-0.00345          0.26873+-0.00378       
   decrypt                                           4.90347+-0.04290    ?     4.91469+-0.03625       ?
   deltablue                                x2       0.35369+-0.00593    ?     0.35441+-0.00854       ?
   earley                                            0.56507+-0.00768    ?     0.57656+-0.00968       ? might be 1.0203x slower
   boyer                                             6.72510+-0.06267    ?     6.76921+-0.10567       ?
   raytrace                                 x2       2.90411+-0.06030          2.86051+-0.01177         might be 1.0152x faster
   regexp                                   x2      19.83612+-0.07292    ?    19.86762+-0.19120       ?
   richards                                 x2       0.25535+-0.00523    ?     0.25841+-0.00516       ? might be 1.0120x slower
   splay                                    x2       0.41181+-0.00392    ?     0.41327+-0.00835       ?
   navier-stokes                            x2       6.81620+-0.01056    ?     6.81967+-0.04555       ?
   closure                                           0.46594+-0.00126    !     0.49718+-0.00093       ! definitely 1.0670x slower
   jquery                                            7.24461+-0.02374    !     7.40717+-0.02237       ! definitely 1.0224x slower
   gbemu                                    x2      42.35524+-0.39571         42.21754+-0.43021       
   mandreel                                 x2      85.03469+-0.65288         84.63928+-0.40381       
   pdfjs                                    x2      62.61747+-0.16457    !    63.17598+-0.34325       ! definitely 1.0089x slower
   box2d                                    x2      21.00551+-0.15472    ?    21.11545+-0.55730       ?

V8v7:
   <arithmetic>                                      4.60112+-0.00654    ?     4.60481+-0.02063       ? might be 1.0008x slower
   <geometric> *                                     1.54661+-0.00533    ?     1.54988+-0.00399       ? might be 1.0021x slower
   <harmonic>                                        0.63349+-0.00599    ?     0.63682+-0.00435       ? might be 1.0053x slower

Octane including V8v7:
   <arithmetic>                                     19.35978+-0.05235    ?    19.37992+-0.11088       ? might be 1.0010x slower
   <geometric> *                                     4.47058+-0.00985    ?     4.49353+-0.01901       ? might be 1.0051x slower
   <harmonic>                                        0.93731+-0.00823    ?     0.94654+-0.00593       ? might be 1.0098x slower

                                                        TipOfTree                 MyChanges                                     
Kraken:
   ai-astar                                          247.423+-1.457            245.323+-3.802         
   audio-beat-detection                              137.772+-3.586      ?     140.676+-7.613         ? might be 1.0211x slower
   audio-dft                                         217.537+-6.621      ?     218.319+-6.750         ?
   audio-fft                                          82.429+-3.209      ?      82.885+-3.725         ?
   audio-oscillator                                  169.309+-4.111            169.234+-4.900         
   imaging-darkroom                                  181.349+-5.520            179.826+-5.175         
   imaging-desaturate                                 89.761+-3.343             88.889+-0.626         
   imaging-gaussian-blur                             199.923+-3.553      ?     200.816+-4.439         ?
   json-parse-financial                               49.267+-1.682             49.083+-2.285         
   json-stringify-tinderbox                           63.372+-2.290      ?      64.539+-2.361         ? might be 1.0184x slower
   stanford-crypto-aes                                57.290+-1.696      ?      57.427+-0.672         ?
   stanford-crypto-ccm                                66.276+-1.284      ?      67.241+-0.379         ? might be 1.0146x slower
   stanford-crypto-pbkdf2                            165.149+-2.100            162.374+-2.834           might be 1.0171x faster
   stanford-crypto-sha256-iterative                   58.922+-3.665             58.508+-1.761         

   <arithmetic> *                                    127.556+-0.922            127.510+-1.050           might be 1.0004x faster
   <geometric>                                       110.163+-0.486      ?     110.280+-0.840         ? might be 1.0011x slower
   <harmonic>                                         95.049+-0.437      ?      95.255+-0.876         ? might be 1.0022x slower

                                                        TipOfTree                 MyChanges                                     
JSRegress:
   adapt-to-double-divide                            19.0643+-2.4485           17.7910+-0.3213          might be 1.0716x faster
   aliased-arguments-getbyval                         0.8047+-0.1602            0.7741+-0.1703          might be 1.0395x faster
   allocate-big-object                                2.2733+-0.3926            2.2582+-0.3377        
   arity-mismatch-inlining                            0.7634+-0.1809            0.6802+-0.0184          might be 1.1223x faster
   array-access-polymorphic-structure                 6.6183+-1.4968            6.0918+-0.1674          might be 1.0864x faster
   array-nonarray-polymorhpic-access                 37.3354+-6.3317           35.4532+-0.3560          might be 1.0531x faster
   array-with-double-add                              3.7630+-0.3380     ?      3.8455+-0.4911        ? might be 1.0219x slower
   array-with-double-increment                        2.9385+-0.1279            2.9161+-0.1231        
   array-with-double-mul-add                          4.0577+-0.3824            3.9828+-0.0865          might be 1.0188x faster
   array-with-double-sum                              4.0820+-0.3525            3.9883+-0.0928          might be 1.0235x faster
   array-with-int32-add-sub                           6.0158+-0.1406     ?      6.6147+-1.8689        ? might be 1.0996x slower
   array-with-int32-or-double-sum                     4.0344+-0.1124     ?      4.1870+-0.3356        ? might be 1.0378x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     71.1955+-2.9832     ?     71.2150+-2.5292        ?
   ArrayBuffer-DataView-alloc-long-lived             22.4315+-2.5128           20.6216+-0.9323          might be 1.0878x faster
   ArrayBuffer-Int32Array-byteOffset                  3.5903+-0.1505            3.5247+-0.0965          might be 1.0186x faster
   ArrayBuffer-Int8Array-alloc-huge-long-lived   
                                                    142.2330+-3.8913          139.8743+-3.0210          might be 1.0169x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented   
                                                    106.2190+-9.1480          105.0285+-3.4971          might be 1.0113x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     71.3640+-1.8079           70.6540+-1.8081          might be 1.0100x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     32.0504+-2.9117     ?     33.4604+-2.3939        ? might be 1.0440x slower
   ArrayBuffer-Int8Array-alloc-long-lived            19.6492+-0.8609     ?     19.7438+-1.3547        ?
   ArrayBuffer-Int8Array-alloc                       17.5317+-1.4564     ?     18.3716+-3.4460        ? might be 1.0479x slower
   asmjs_bool_bug                                     5.6671+-0.3009            5.4401+-0.1501          might be 1.0417x faster
   basic-set                                         14.3934+-1.0341     ?     16.2729+-1.2562        ? might be 1.1306x slower
   big-int-mul                                        3.3154+-0.0540     ?      3.3458+-0.2379        ?
   boolean-test                                       2.8478+-0.1197     ?      2.8805+-0.2255        ? might be 1.0115x slower
   branch-fold                                        3.6855+-0.2400     ?      3.6879+-0.1236        ?
   by-val-generic                                     9.0688+-2.2636            8.7398+-2.3290          might be 1.0376x faster
   captured-assignments                               0.4037+-0.0298            0.3879+-0.0291          might be 1.0406x faster
   cast-int-to-double                                 9.6200+-2.4929            8.7999+-0.1470          might be 1.0932x faster
   cell-argument                                     11.1727+-0.3627     ?     11.7582+-2.4957        ? might be 1.0524x slower
   cfg-simplify                                       2.7241+-0.0722     ?      2.7806+-0.3189        ? might be 1.0208x slower
   chain-custom-getter                              109.2890+-0.9319          107.2367+-1.6183          might be 1.0191x faster
   chain-getter-access                              333.6516+-6.9151     ?    342.9740+-2.7712        ? might be 1.0279x slower
   cmpeq-obj-to-obj-other                             8.4207+-0.3507     ?      9.0222+-2.6890        ? might be 1.0714x slower
   constant-test                                      4.6151+-0.1200     ?      5.2151+-1.5007        ? might be 1.1300x slower
   DataView-custom-properties                        76.6923+-2.4670     ?     77.4172+-4.0786        ?
   delay-tear-off-arguments-strictmode                2.6387+-0.2734     ?      2.8135+-0.4955        ? might be 1.0662x slower
   destructuring-arguments-length                   127.2654+-2.4530          123.1418+-3.0138          might be 1.0335x faster
   destructuring-arguments                            5.0906+-0.2031            4.9603+-0.1539          might be 1.0263x faster
   destructuring-swap                                 4.6078+-0.1535     ?      4.6895+-0.2607        ? might be 1.0177x slower
   direct-arguments-getbyval                          0.6378+-0.0135            0.6227+-0.0344          might be 1.0241x faster
   double-get-by-val-out-of-bounds                    4.5848+-0.1610     ?      4.6245+-0.0704        ?
   double-pollution-getbyval                          8.5287+-0.3781     !     11.0607+-1.3252        ! definitely 1.2969x slower
   double-pollution-putbyoffset                       3.8547+-0.0661     ?      3.9271+-0.1862        ? might be 1.0188x slower
   double-to-int32-typed-array-no-inline              1.9392+-0.2893     ?      1.9420+-0.2958        ?
   double-to-int32-typed-array                        1.5598+-0.0657     ?      1.7742+-0.3513        ? might be 1.1375x slower
   double-to-uint32-typed-array-no-inline             1.8959+-0.1881            1.8724+-0.0842          might be 1.0126x faster
   double-to-uint32-typed-array                       1.6122+-0.0791     ?      1.6547+-0.0425        ? might be 1.0263x slower
   empty-string-plus-int                              8.3860+-2.0726            8.1473+-1.9780          might be 1.0293x faster
   emscripten-cube2hash                              41.0389+-1.1584     ?     42.5778+-2.5474        ? might be 1.0375x slower
   emscripten-memops                               4320.9244+-10.6652        4320.1749+-12.6686       
   external-arguments-getbyval                        1.5573+-0.1161     ?      1.7086+-0.1986        ? might be 1.0971x slower
   external-arguments-putbyval                        2.2782+-0.1546     ?      2.3138+-0.2556        ? might be 1.0156x slower
   fixed-typed-array-storage-var-index                1.1679+-0.2017            1.1015+-0.1257          might be 1.0603x faster
   fixed-typed-array-storage                          0.7225+-0.0387            0.7042+-0.0148          might be 1.0260x faster
   Float32Array-matrix-mult                           4.4455+-0.1130     ?      4.5610+-0.1132        ? might be 1.0260x slower
   Float32Array-to-Float64Array-set                  60.1395+-2.8896           58.5782+-0.9789          might be 1.0267x faster
   Float64Array-alloc-long-lived                     72.2607+-1.5569           71.7206+-2.6927        
   Float64Array-to-Int16Array-set                    72.5355+-3.5275           70.2886+-3.2971          might be 1.0320x faster
   fold-double-to-int                                13.3962+-2.6575           12.4515+-0.3277          might be 1.0759x faster
   for-of-iterate-array-entries                       6.6997+-0.7781     ?      7.2636+-1.8320        ? might be 1.0842x slower
   for-of-iterate-array-keys                          2.5923+-0.4918            2.5692+-0.2757        
   for-of-iterate-array-values                        2.2352+-0.1044            2.2317+-0.1356        
   function-dot-apply                                 2.1788+-0.1704     ?      2.2745+-0.3835        ? might be 1.0439x slower
   function-test                                      3.2081+-0.0869            3.1623+-0.1631          might be 1.0145x faster
   get-by-id-chain-from-try-block                     5.9080+-0.1921     ?      6.9478+-1.9965        ? might be 1.1760x slower
   get-by-id-proto-or-self                           15.4058+-1.5561           14.9713+-1.9166          might be 1.0290x faster
   get-by-id-self-or-proto                           17.4856+-4.1886           16.4359+-4.9508          might be 1.0639x faster
   get-by-val-out-of-bounds                           4.4477+-0.2233     ?      4.5432+-0.4250        ? might be 1.0215x slower
   get_callee_monomorphic                             4.0145+-0.4086     ?      4.1547+-0.5432        ? might be 1.0349x slower
   get_callee_polymorphic                             3.3413+-0.1131     ?      3.6907+-1.3044        ? might be 1.1046x slower
   global-var-const-infer-fire-from-opt               0.7985+-0.0521     ?      0.8355+-0.2238        ? might be 1.0463x slower
   global-var-const-infer                             0.6025+-0.0169     ?      0.6122+-0.0492        ? might be 1.0161x slower
   HashMap-put-get-iterate-keys                      28.4797+-1.6625     ?     30.5260+-3.1116        ? might be 1.0719x slower
   HashMap-put-get-iterate                           39.9660+-4.2109           37.3801+-0.5880          might be 1.0692x faster
   HashMap-string-put-get-iterate                    35.9931+-4.0654     ?     37.9866+-5.4384        ? might be 1.0554x slower
   imul-double-only                                  11.3310+-0.3418           11.2543+-0.1123        
   imul-int-only                                      9.7369+-0.1252     ?     10.0705+-0.5127        ? might be 1.0343x slower
   imul-mixed                                        14.3497+-1.1261           13.9634+-0.3285          might be 1.0277x faster
   in-four-cases                                     17.3262+-0.2282     ?     18.0573+-3.3903        ? might be 1.0422x slower
   in-one-case-false                                  8.5057+-0.6531            8.1129+-0.3793          might be 1.0484x faster
   in-one-case-true                                   8.0845+-0.3039     ?      9.2141+-2.8694        ? might be 1.1397x slower
   in-two-cases                                       8.5458+-0.7115     ?      8.7454+-0.5018        ? might be 1.0234x slower
   indexed-properties-in-objects                      2.7676+-0.1143            2.6603+-0.0702          might be 1.0403x faster
   infer-closure-const-then-mov-no-inline            12.1060+-2.8506           11.0573+-0.2380          might be 1.0948x faster
   infer-closure-const-then-mov                      20.5540+-3.3431     ?     20.6187+-2.9105        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.9375+-2.9212     ?     12.3274+-2.8341        ? might be 1.0327x slower
   infer-closure-const-then-put-to-scope             21.8419+-2.0421           21.1550+-1.0907          might be 1.0325x faster
   infer-closure-const-then-reenter-no-inline   
                                                     55.6151+-1.7746           54.5540+-0.5336          might be 1.0194x faster
   infer-closure-const-then-reenter                  22.3059+-1.2958     ?     22.8689+-2.7504        ? might be 1.0252x slower
   infer-one-time-closure-ten-vars                   18.1428+-0.2065     ?     18.9788+-2.6970        ? might be 1.0461x slower
   infer-one-time-closure-two-vars                   18.0153+-0.2690           17.8758+-0.3237        
   infer-one-time-closure                            17.8372+-0.2720           17.7958+-0.2032        
   infer-one-time-deep-closure                       35.9183+-2.9124     ?     37.8370+-3.9282        ? might be 1.0534x slower
   inline-arguments-access                            1.2737+-0.2254            1.2604+-0.2664          might be 1.0106x faster
   inline-arguments-aliased-access                    1.3160+-0.2128            1.2715+-0.1834          might be 1.0349x faster
   inline-arguments-local-escape                     17.0601+-0.2691     ?     18.9026+-2.9976        ? might be 1.1080x slower
   inline-get-scoped-var                              3.9607+-0.2783     ?      4.0435+-0.4166        ? might be 1.0209x slower
   inlined-put-by-id-transition                       9.8334+-1.2369            9.7006+-1.1135          might be 1.0137x faster
   int-or-other-abs-then-get-by-val                   5.9720+-0.1746     ?      6.1110+-0.2921        ? might be 1.0233x slower
   int-or-other-abs-zero-then-get-by-val             22.2432+-2.4127           22.1810+-3.0282        
   int-or-other-add-then-get-by-val                   8.0732+-2.4156            7.7125+-0.6444          might be 1.0468x faster
   int-or-other-add                                   6.5783+-0.2560            6.5714+-0.1780        
   int-or-other-div-then-get-by-val                   4.5491+-0.2054            4.5182+-0.2665        
   int-or-other-max-then-get-by-val                   5.4526+-0.1385     ?      6.0558+-1.5664        ? might be 1.1106x slower
   int-or-other-min-then-get-by-val                   5.3677+-0.1627     ?      5.5087+-0.3944        ? might be 1.0263x slower
   int-or-other-mod-then-get-by-val                   4.2554+-0.1313     ?      4.2787+-0.1180        ?
   int-or-other-mul-then-get-by-val                   4.3909+-0.1186     ?      4.4705+-0.1308        ? might be 1.0181x slower
   int-or-other-neg-then-get-by-val                   5.2650+-0.3194            5.2410+-0.0714        
   int-or-other-neg-zero-then-get-by-val             21.3116+-2.6298           20.3600+-0.4256          might be 1.0467x faster
   int-or-other-sub-then-get-by-val                   6.8872+-0.2119     ?      7.0075+-0.2306        ? might be 1.0175x slower
   int-or-other-sub                                   5.2017+-0.3735            4.9910+-0.2019          might be 1.0422x faster
   int-overflow-local                                 4.0749+-0.1609            4.0285+-0.1285          might be 1.0115x faster
   Int16Array-alloc-long-lived                       47.3671+-1.1331     ?     49.2104+-0.8666        ? might be 1.0389x slower
   Int16Array-bubble-sort-with-byteLength            21.1370+-0.3208     ?     21.1841+-0.2038        ?
   Int16Array-bubble-sort                            21.3785+-1.4739           20.7211+-0.3812          might be 1.0317x faster
   Int16Array-load-int-mul                            1.2917+-0.0739     ?      1.3767+-0.1490        ? might be 1.0658x slower
   Int16Array-to-Int32Array-set                      53.7535+-3.7120           52.8567+-2.9028          might be 1.0170x faster
   Int32Array-alloc-huge-long-lived                 221.5239+-15.1140         217.2361+-1.9562          might be 1.0197x faster
   Int32Array-alloc-huge                            218.0760+-6.8656     ?    218.9402+-5.0357        ?
   Int32Array-alloc-large-long-lived                607.4730+-8.3214          606.1062+-1.7529        
   Int32Array-alloc-large                            28.6589+-1.9991     ?     29.2888+-2.6520        ? might be 1.0220x slower
   Int32Array-alloc-long-lived                       55.1899+-1.7595     ?     56.1160+-3.2243        ? might be 1.0168x slower
   Int32Array-alloc                                   2.8532+-0.1063     ?      3.2123+-0.6214        ? might be 1.1259x slower
   Int32Array-Int8Array-view-alloc                    9.9968+-0.9067     ?     11.8929+-2.1921        ? might be 1.1897x slower
   int52-spill                                        8.3995+-0.7534            8.1963+-0.3113          might be 1.0248x faster
   Int8Array-alloc-long-lived                        49.6233+-1.0090           47.1073+-2.1023          might be 1.0534x faster
   Int8Array-load-with-byteLength                     3.1722+-0.2184            3.1287+-0.1155          might be 1.0139x faster
   Int8Array-load                                     3.1765+-0.0822            3.1033+-0.1240          might be 1.0236x faster
   integer-divide                                    10.5627+-0.1970           10.4595+-0.1991        
   integer-modulo                                     1.4015+-0.0611     ?      1.4321+-0.0221        ? might be 1.0219x slower
   large-int-captured                                 7.5948+-2.4374            6.9940+-0.5053          might be 1.0859x faster
   large-int-neg                                     17.0217+-0.4062           17.0026+-0.2573        
   large-int                                         16.0642+-2.9937     ?     16.6019+-3.5124        ? might be 1.0335x slower
   logical-not                                        8.0212+-0.2864            7.8663+-0.1590          might be 1.0197x faster
   lots-of-fields                                     8.3532+-2.0845            7.5677+-0.1484          might be 1.1038x faster
   make-indexed-storage                               2.7062+-0.2888     ?      2.9713+-0.4922        ? might be 1.0979x slower
   make-rope-cse                                      4.6563+-1.0917            4.2307+-0.7381          might be 1.1006x faster
   marsaglia-larger-ints                             71.4597+-1.4902     ?     71.4827+-2.5766        ?
   marsaglia-osr-entry                               31.0492+-2.5761           30.4245+-1.2845          might be 1.0205x faster
   marsaglia                                        291.7380+-0.5297     ?    291.9322+-0.7988        ?
   method-on-number                                  19.9130+-0.4224     ?     20.0267+-3.0262        ?
   negative-zero-divide                               0.3158+-0.0640     ?      0.3825+-0.1827        ? might be 1.2112x slower
   negative-zero-modulo                               0.3488+-0.1189            0.3209+-0.0572          might be 1.0871x faster
   negative-zero-negate                               0.2687+-0.0095     ?      0.3370+-0.0989        ? might be 1.2539x slower
   nested-function-parsing-random                   246.3818+-1.6119          243.8637+-3.5597          might be 1.0103x faster
   nested-function-parsing                           28.8943+-3.4009           28.1544+-0.2073          might be 1.0263x faster
   new-array-buffer-dead                              2.8182+-0.1821            2.5924+-0.2978          might be 1.0871x faster
   new-array-buffer-push                              7.1273+-0.6789     ?      7.3392+-1.3928        ? might be 1.0297x slower
   new-array-dead                                    23.6634+-3.1523           23.5361+-3.3913        
   new-array-push                                     7.1984+-0.7510            6.8372+-0.4582          might be 1.0528x faster
   number-test                                        3.0945+-0.3621            2.7761+-0.0643          might be 1.1147x faster
   object-closure-call                               11.4540+-1.6812           11.2377+-1.8242          might be 1.0192x faster
   object-test                                        3.1586+-0.2161            3.0215+-0.0628          might be 1.0454x faster
   poly-stricteq                                     55.7905+-1.3737     ?     55.9507+-1.6169        ?
   polymorphic-structure                             14.1788+-0.9588           13.9550+-0.6816          might be 1.0160x faster
   polyvariant-monomorphic-get-by-id                  7.5684+-0.3189            7.5028+-0.0746        
   proto-custom-getter                              111.3323+-0.2173     ^    107.6988+-3.3748        ^ definitely 1.0337x faster
   proto-getter-access                              333.2038+-5.9429     !    347.4670+-2.8912        ! definitely 1.0428x slower
   put-by-id                                         13.1747+-0.7753     ?     14.4938+-1.7711        ? might be 1.1001x slower
   put-by-val-large-index-blank-indexing-type   
                                                     13.9163+-0.4116     ?     14.0742+-0.9195        ? might be 1.0113x slower
   put-by-val-machine-int                             2.3439+-0.1911            2.3143+-0.1427          might be 1.0128x faster
   rare-osr-exit-on-local                            15.0012+-2.3277     ?     15.2775+-2.8436        ? might be 1.0184x slower
   register-pressure-from-osr                        22.1317+-2.5191     ?     22.2966+-3.1448        ?
   simple-activation-demo                            25.6119+-1.0188           25.3549+-0.1466          might be 1.0101x faster
   simple-custom-getter                             346.1434+-6.3540     ^    329.8716+-0.2838        ^ definitely 1.0493x faster
   simple-getter-access                             533.4545+-19.5684    !    559.8868+-5.2743        ! definitely 1.0495x slower
   slow-array-profile-convergence                     2.7469+-0.1215            2.6853+-0.3038          might be 1.0229x faster
   slow-convergence                                   2.9011+-0.2291     ?      2.9367+-0.1738        ? might be 1.0123x slower
   sparse-conditional                                 1.0612+-0.1288     ?      1.0634+-0.2490        ?
   splice-to-remove                                  46.8359+-2.8047           45.7555+-1.6908          might be 1.0236x faster
   stepanov_container                              6818.0985+-77.2564        6785.5857+-52.2474       
   string-concat-object                               2.3218+-0.7701            2.1712+-0.0664          might be 1.0694x faster
   string-concat-pair-object                          2.3477+-0.5487            2.2142+-0.3647          might be 1.0603x faster
   string-concat-pair-simple                         11.1509+-1.0624     ?     11.5777+-1.4982        ? might be 1.0383x slower
   string-concat-simple                              11.0312+-0.6034     ?     11.9536+-2.0332        ? might be 1.0836x slower
   string-cons-repeat                                 7.8978+-2.1178     ?      8.1193+-1.7269        ? might be 1.0280x slower
   string-cons-tower                                  8.2175+-1.7942     ?      8.3076+-0.5922        ? might be 1.0110x slower
   string-equality                                   29.4535+-1.2556           29.3443+-1.5807        
   string-get-by-val-big-char                         9.6450+-2.2453     ?      9.9984+-2.6096        ? might be 1.0366x slower
   string-get-by-val-out-of-bounds-insane             3.4509+-0.0515            3.4196+-0.1444        
   string-get-by-val-out-of-bounds                    3.3997+-0.1689     ?      3.4746+-0.2054        ? might be 1.0220x slower
   string-get-by-val                                  2.9084+-0.0596            2.9061+-0.0961        
   string-hash                                        1.9550+-0.3538            1.7257+-0.0292          might be 1.1329x faster
   string-long-ident-equality                        25.8592+-0.2704     ?     27.9686+-3.3849        ? might be 1.0816x slower
   string-repeat-arith                               34.5153+-0.8555     ?     34.5753+-4.6632        ?
   string-sub                                        70.8018+-1.0125           69.7048+-2.5170          might be 1.0157x faster
   string-test                                        2.9393+-1.0634            2.7908+-0.4275          might be 1.0532x faster
   string-var-equality                               41.8027+-1.5617     ?     42.9047+-1.0778        ? might be 1.0264x slower
   structure-hoist-over-transitions                   2.1802+-0.0408     ?      2.3254+-0.3377        ? might be 1.0666x slower
   switch-char-constant                               2.1893+-0.0484     ?      2.2045+-0.0401        ?
   switch-char                                        5.2383+-0.1808     ?      5.4557+-0.5830        ? might be 1.0415x slower
   switch-constant                                    7.8755+-1.5760     ?      7.9218+-1.4517        ?
   switch-string-basic-big-var                       14.6241+-0.9612     ?     15.3441+-2.3267        ? might be 1.0492x slower
   switch-string-basic-big                           14.0445+-0.4628           13.8931+-0.5361          might be 1.0109x faster
   switch-string-basic-var                           15.8680+-2.7597           15.1758+-2.5884          might be 1.0456x faster
   switch-string-basic                               14.0864+-2.6111           13.0295+-0.1450          might be 1.0811x faster
   switch-string-big-length-tower-var                20.6638+-1.1557           20.2758+-0.5374          might be 1.0191x faster
   switch-string-length-tower-var                    16.4912+-3.1895           14.6815+-0.2188          might be 1.1233x faster
   switch-string-length-tower                        12.5461+-0.2059     ?     13.5542+-2.3456        ? might be 1.0804x slower
   switch-string-short                               12.6026+-0.6044           12.5006+-0.2366        
   switch                                            11.8964+-2.3153           11.4207+-1.8808          might be 1.0416x faster
   tear-off-arguments-simple                          1.7640+-0.1987            1.7557+-0.1764        
   tear-off-arguments                                 2.5959+-0.2392            2.5400+-0.1216          might be 1.0220x faster
   temporal-structure                                12.4258+-0.3062           12.3720+-0.2250        
   to-int32-boolean                                  14.9543+-3.3343           13.1193+-0.2044          might be 1.1399x faster
   undefined-test                                     2.8420+-0.2067            2.8027+-0.0935          might be 1.0140x faster
   weird-inlining-const-prop                          1.6951+-0.0741     ?      1.7089+-0.1699        ?

   <arithmetic>                                      84.4621+-0.1932           84.3744+-0.3074          might be 1.0010x faster
   <geometric> *                                      9.8515+-0.0918     ?      9.8874+-0.1019        ? might be 1.0036x slower
   <harmonic>                                         3.6997+-0.0212     ?      3.7497+-0.1067        ? might be 1.0135x slower

                                                        TipOfTree                 MyChanges                                     
AsmBench:
   bigfib.cpp                                      1248.4705+-6.8083         1247.2555+-9.3131        
   cray.c                                            37.1717+-0.9697     ?     38.5981+-2.3026        ? might be 1.0384x slower
   dry.c                                            939.2240+-14.1563         935.5952+-4.7061        
   FloatMM.c                                       1663.2938+-3.5045     ?   1666.0802+-3.6270        ?
   gcc-loops.cpp                                   2372.7313+-20.6483    ?   2377.0404+-13.0890       ?
   n-body.c                                        1735.6244+-3.3702     ?   1736.4311+-5.2138        ?
   Quicksort.c                                       77.3410+-3.5072     ?     77.9052+-2.7692        ?
   stepanov_container.cpp                          6749.6179+-44.9493    ?   6775.2678+-51.9562       ?
   Towers.c                                          53.5237+-1.3089           52.7960+-1.7392          might be 1.0138x faster

   <arithmetic>                                    1652.9998+-3.7222     ?   1656.3299+-4.8204        ? might be 1.0020x slower
   <geometric> *                                    587.4966+-3.3977     ?    589.7032+-0.6627        ? might be 1.0038x slower
   <harmonic>                                       144.8312+-1.9752     ?    146.7303+-1.2597        ? might be 1.0131x slower

                                                        TipOfTree                 MyChanges                                     
All benchmarks:
   <arithmetic>                                     168.3098+-0.0909     ?    168.4497+-0.3546        ? might be 1.0008x slower
   <geometric>                                       14.9840+-0.0831     ?     15.0411+-0.0873        ? might be 1.0038x slower
   <harmonic>                                         3.3863+-0.0193     ?      3.4251+-0.0633        ? might be 1.0114x slower

                                                        TipOfTree                 MyChanges                                     
Geomean of preferred means:
   <scaled-result>                                   47.6580+-0.1175     ?     47.7992+-0.1135        ? might be 1.0030x slower
Comment 5 Filip Pizlo 2014-01-26 20:39:30 PST
Performance looks good, everything appears neutral.
Comment 6 Filip Pizlo 2014-01-26 20:43:42 PST
Comment on attachment 222289 [details]
Patch

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

R=me.  I like this a lot.  Please consider removing the NDEBUG guards, since in JSC we tend to make debug support code available in release builds to enable easy release debugging.

> Source/JavaScriptCore/bytecode/UnlinkedInstructionStream.cpp:180
> +#ifndef NDEBUG

I would remove the #ifndef NDEBUG guard for this.  It's very common to do "debugging" on JSC in release mode, and we don't generally have NDEBUG guards on debug support.
Comment 7 Andreas Kling 2014-01-26 20:57:27 PST
(In reply to comment #6)
> (From update of attachment 222289 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=222289&action=review
> 
> R=me.  I like this a lot.

Glad you like it!

> > Source/JavaScriptCore/bytecode/UnlinkedInstructionStream.cpp:180
> > +#ifndef NDEBUG
> 
> I would remove the #ifndef NDEBUG guard for this.  It's very common to do "debugging" on JSC in release mode, and we don't generally have NDEBUG guards on debug support.

I put this behind NDEBUG to avoid fattening UnlinkedInstructionStream by 8 bytes (m_unpackedInstructionsForDebugging).

Since the only user of this functionality is behind NDEBUG as well, I'm gonna leave it like that for now.
Comment 8 WebKit Commit Bot 2014-01-26 21:40:58 PST
Comment on attachment 222289 [details]
Patch

Clearing flags on attachment: 222289

Committed r162825: <http://trac.webkit.org/changeset/162825>
Comment 9 WebKit Commit Bot 2014-01-26 21:41:01 PST
All reviewed patches have been landed.  Closing bug.