Bug 113271

Summary: ArrayMode should not consider SpecOther when refining the base
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: New BugsAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch ggaren: review+

Description Filip Pizlo 2013-03-25 20:49:23 PDT
ArrayMode should not consider SpecOther when refining the base
Comment 1 Filip Pizlo 2013-03-25 20:50:16 PDT
Created attachment 194993 [details]
Patch
Comment 2 Filip Pizlo 2013-03-25 20:50:59 PDT
Benchmark report for SunSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on bigmac (MacPro5,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/DumpRenderTree (r146839)
"FixPDFJS" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r146839)

Collected 12 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                  FixPDFJS                                     
SunSpider:
   3d-cube                                         8.7194+-0.3575     ?      8.8874+-0.2837        ? might be 1.0193x slower
   3d-morph                                        7.4164+-0.0478     ?      7.4720+-0.0927        ?
   3d-raytrace                                     9.8599+-0.1406            9.6505+-0.2125          might be 1.0217x faster
   access-binary-trees                             2.3283+-0.3028     ?      2.3369+-0.3059        ?
   access-fannkuch                                 6.5809+-0.0975            6.5529+-0.1005        
   access-nbody                                    3.9343+-0.0483     ?      3.9426+-0.0461        ?
   access-nsieve                                   4.2715+-0.0477            4.2528+-0.0545        
   bitops-3bit-bits-in-byte                        1.5277+-0.0196     ?      1.5428+-0.0389        ?
   bitops-bits-in-byte                             5.6538+-0.0813     ?      5.6635+-0.0635        ?
   bitops-bitwise-and                              2.0374+-0.0662            1.9969+-0.0671          might be 1.0203x faster
   bitops-nsieve-bits                              3.3884+-0.0145     ?      3.3922+-0.0275        ?
   controlflow-recursive                           2.4795+-0.0153     ?      2.4908+-0.0237        ?
   crypto-aes                                      7.3617+-0.2518            7.3141+-0.3328        
   crypto-md5                                      3.5604+-0.0954     ?      3.6578+-0.0377        ? might be 1.0273x slower
   crypto-sha1                                     2.9003+-0.0520     ?      2.9123+-0.0617        ?
   date-format-tofte                              13.9137+-0.9540     ?     13.9761+-0.9728        ?
   date-format-xparb                               8.9933+-0.7037            8.9142+-0.6806        
   math-cordic                                     3.3070+-0.0120     ?      3.3086+-0.0097        ?
   math-partial-sums                              10.0694+-0.0419     ?     10.0811+-0.0761        ?
   math-spectral-norm                              2.6570+-0.0210     ?      2.6593+-0.0213        ?
   regexp-dna                                     10.1167+-0.5000           10.0623+-0.4892        
   string-base64                                   4.7820+-0.4982     ?      4.8053+-0.5017        ?
   string-fasta                                    9.7680+-0.2485     ?      9.7691+-0.2166        ?
   string-tagcloud                                12.1651+-0.1932     ?     12.1922+-0.2831        ?
   string-unpack-code                             24.7303+-0.5499     ?     24.7866+-0.5419        ?
   string-validate-input                           8.1376+-0.2907     ?      8.1864+-0.3023        ?

   <arithmetic> *                                  6.9485+-0.1546     ?      6.9541+-0.1614        ? might be 1.0008x slower
   <geometric>                                     5.5506+-0.1029     ?      5.5575+-0.1087        ? might be 1.0012x slower
   <harmonic>                                      4.4464+-0.0758     ?      4.4533+-0.0783        ? might be 1.0016x slower

                                                     TipOfTree                  FixPDFJS                                     
V8Spider:
   crypto                                         76.1680+-0.5052     ?     76.2082+-0.6691        ?
   deltablue                                     106.4972+-1.3668          105.6677+-0.8049        
   earley-boyer                                   71.2198+-0.6612     ?     71.2512+-0.6157        ?
   raytrace                                       52.5987+-2.9965     ?     53.7477+-3.9989        ? might be 1.0218x slower
   regexp                                         84.3395+-0.3456           84.1934+-0.3265        
   richards                                      100.0107+-1.3305     ?    100.4569+-1.3734        ?
   splay                                          52.5728+-2.9462           52.2853+-2.8278        

   <arithmetic>                                   77.6295+-0.7323     ?     77.6872+-0.7247        ? might be 1.0007x slower
   <geometric> *                                  75.0365+-0.9023     ?     75.1426+-0.9082        ? might be 1.0014x slower
   <harmonic>                                     72.4242+-1.0918     ?     72.5671+-1.1070        ? might be 1.0020x slower

                                                     TipOfTree                  FixPDFJS                                     
Octane and V8v7:
   encrypt                                        0.40868+-0.00104          0.40837+-0.00087       
   decrypt                                        7.39159+-0.00719    ?     7.39634+-0.00836       ?
   deltablue                             x2       0.50211+-0.00464    ?     0.50268+-0.00469       ?
   earley                                         0.76299+-0.00288    ?     0.76860+-0.00679       ?
   boyer                                         10.81890+-0.05963         10.80231+-0.04423       
   raytrace                              x2       3.97296+-0.19891          3.87047+-0.05230         might be 1.0265x faster
   regexp                                x2      26.30124+-0.07741         26.21866+-0.06653       
   richards                              x2       0.25943+-0.00262    ?     0.25985+-0.00232       ?
   splay                                 x2       0.54754+-0.00464          0.53843+-0.00628         might be 1.0169x faster
   navier-stokes                         x2       9.04265+-0.00340    !     9.05758+-0.01075       ! definitely 1.0017x slower
   closure                                        0.25955+-0.03336          0.25917+-0.03338       
   jquery                                         3.72593+-0.43696    ?     3.73176+-0.44174       ?
   gbemu                                 x2     119.18939+-2.47291    ?   122.50912+-7.36538       ? might be 1.0279x slower
   mandreel                              x2     153.73848+-0.61717        153.36068+-0.25925       
   pdfjs                                 x2     102.54267+-0.29018    ^    94.14020+-0.33854       ^ definitely 1.0893x faster
   box2d                                 x2      30.96445+-0.21621    ?    30.97822+-0.19011       ?

V8v7:
   <arithmetic>                                   6.28963+-0.02756          6.26693+-0.01248         might be 1.0036x faster
   <geometric> *                                  2.06890+-0.01159          2.05940+-0.00552         might be 1.0046x faster
   <harmonic>                                     0.79462+-0.00384          0.79272+-0.00448         might be 1.0024x faster

Octane including V8v7:
   <arithmetic>                                  35.28806+-0.19669         34.85532+-0.58577         might be 1.0124x faster
   <geometric> *                                  6.17271+-0.04911          6.12560+-0.06047         might be 1.0077x faster
   <harmonic>                                     1.06127+-0.02157          1.05896+-0.02260         might be 1.0022x faster

                                                     TipOfTree                  FixPDFJS                                     
Kraken:
   ai-astar                                       429.292+-4.671      ?     431.855+-4.843         ?
   audio-beat-detection                           209.685+-1.528      ?     210.569+-2.615         ?
   audio-dft                                      261.268+-2.803            259.151+-1.862         
   audio-fft                                      121.743+-0.145            121.666+-0.273         
   audio-oscillator                               211.771+-0.450      ?     211.887+-0.425         ?
   imaging-darkroom                               243.373+-0.498            243.234+-0.450         
   imaging-desaturate                             133.507+-0.108            133.493+-0.097         
   imaging-gaussian-blur                          414.395+-0.154      ?     414.732+-0.354         ?
   json-parse-financial                            66.553+-0.298      ?      66.639+-0.304         ?
   json-stringify-tinderbox                        83.622+-0.435      !      85.085+-0.751         ! definitely 1.0175x slower
   stanford-crypto-aes                             99.934+-0.485      ?      99.956+-0.520         ?
   stanford-crypto-ccm                             97.122+-0.598      ?      97.549+-0.368         ?
   stanford-crypto-pbkdf2                         228.250+-1.131      ?     228.404+-1.568         ?
   stanford-crypto-sha256-iterative               103.481+-0.224      !     104.762+-0.360         ! definitely 1.0124x slower

   <arithmetic> *                                 193.143+-0.335      ?     193.499+-0.309         ? might be 1.0018x slower
   <geometric>                                    164.261+-0.192      !     164.710+-0.144         ! definitely 1.0027x slower
   <harmonic>                                     141.113+-0.141      !     141.670+-0.159         ! definitely 1.0040x slower

                                                     TipOfTree                  FixPDFJS                                     
JSBench:
   amazon                                          7.3333+-0.3128            7.2500+-0.2874          might be 1.0115x faster
   facebook                                       33.6667+-1.7206     ?     33.7500+-1.6728        ?
   google                                         67.2500+-1.7791     ?     67.5000+-1.3947        ?
   twitter                                         8.9167+-0.4248            8.6667+-0.4138          might be 1.0288x faster
   yahoo                                           3.0000+-0.2709     ?      3.1667+-0.2473        ? might be 1.0556x slower

   <arithmetic> *                                 24.0333+-0.7583     ?     24.0667+-0.6350        ? might be 1.0014x slower
   <geometric>                                    13.4439+-0.4665     ?     13.4981+-0.2645        ? might be 1.0040x slower
   <harmonic>                                      7.9392+-0.4473     ?      8.1007+-0.2442        ? might be 1.0203x slower

                                                     TipOfTree                  FixPDFJS                                     
JSRegress:
   adapt-to-double-divide                         18.5204+-0.0168     ?     18.5287+-0.0363        ?
   aliased-arguments-getbyval                      0.8153+-0.0222            0.7888+-0.0050          might be 1.0337x faster
   allocate-big-object                             3.5310+-1.2165            3.5291+-1.2191        
   arity-mismatch-inlining                         0.6692+-0.0097            0.6671+-0.0062        
   array-access-polymorphic-structure              7.9431+-1.8747            7.3183+-1.7233          might be 1.0854x faster
   array-with-double-add                           4.7721+-0.0167     ?      4.7722+-0.0223        ?
   array-with-double-increment                     3.2486+-0.0130     ?      3.2571+-0.0213        ?
   array-with-double-mul-add                       6.5212+-0.0285     ?      6.5498+-0.0318        ?
   array-with-double-sum                           6.4172+-0.0123     ?      6.4335+-0.0193        ?
   array-with-int32-add-sub                        8.6201+-0.0209     ?      8.6277+-0.0372        ?
   array-with-int32-or-double-sum                  6.5048+-0.0311            6.4908+-0.0185        
   big-int-mul                                     4.0345+-0.0258            4.0172+-0.0161        
   boolean-test                                    3.5094+-0.0056     ?      3.5268+-0.0280        ?
   cast-int-to-double                             11.4153+-0.0698     ?     11.4330+-0.0797        ?
   cell-argument                                  11.8531+-0.0188     ?     11.8794+-0.0249        ?
   cfg-simplify                                    3.1780+-0.0389     ?      3.1842+-0.0440        ?
   cmpeq-obj-to-obj-other                          9.1757+-0.1251            9.1203+-0.1858        
   constant-test                                   6.9631+-0.0857     ?      7.0326+-0.1066        ?
   direct-arguments-getbyval                       0.7340+-0.0090            0.7259+-0.0050          might be 1.0112x faster
   double-pollution-getbyval                       8.7963+-0.0177     ?      8.7999+-0.0227        ?
   double-pollution-putbyoffset                    4.7517+-0.5654            4.7274+-0.5536        
   empty-string-plus-int                          11.3521+-0.5940     ?     11.3941+-0.5515        ?
   external-arguments-getbyval                     2.2129+-0.2233            2.1815+-0.1992          might be 1.0144x faster
   external-arguments-putbyval                     3.4495+-0.3138            3.2642+-0.3082          might be 1.0568x faster
   Float32Array-matrix-mult                       12.9437+-0.6502           12.7853+-0.6657          might be 1.0124x faster
   fold-double-to-int                             18.1231+-0.2419     ?     18.4805+-0.2804        ? might be 1.0197x slower
   function-dot-apply                              2.6345+-0.0452            2.6177+-0.0295        
   function-test                                   4.0306+-0.0582     ?      4.0400+-0.0345        ?
   get-by-id-chain-from-try-block                  6.1169+-0.0391     ?      6.1287+-0.0438        ?
   HashMap-put-get-iterate-keys                   72.3190+-1.0572           71.3242+-0.6887          might be 1.0139x faster
   HashMap-put-get-iterate                        74.4138+-0.7485     ?     74.9425+-1.2883        ?
   HashMap-string-put-get-iterate                 66.1745+-0.8176           66.1181+-0.7792        
   indexed-properties-in-objects                   3.6581+-0.0127     !      3.7523+-0.0812        ! definitely 1.0257x slower
   inline-arguments-access                         1.0788+-0.0149            1.0769+-0.0185        
   inline-arguments-local-escape                  21.0843+-0.1093     ?     21.2298+-0.1564        ?
   inline-get-scoped-var                           5.3112+-0.0177            5.3108+-0.0158        
   inlined-put-by-id-transition                   13.6362+-0.2522     ?     13.8790+-0.2708        ? might be 1.0178x slower
   int-or-other-abs-then-get-by-val                7.2621+-0.0212            7.2599+-0.0191        
   int-or-other-abs-zero-then-get-by-val          30.2386+-0.1080           30.1170+-0.0311        
   int-or-other-add-then-get-by-val                8.4369+-0.0170            8.4241+-0.0166        
   int-or-other-add                                8.6735+-0.0444     ?      8.6980+-0.0489        ?
   int-or-other-div-then-get-by-val                6.5853+-0.0228            6.5783+-0.0161        
   int-or-other-max-then-get-by-val                8.0964+-0.2039     ?      8.2359+-0.1530        ? might be 1.0172x slower
   int-or-other-min-then-get-by-val                6.7410+-0.0147     ?      6.7483+-0.0196        ?
   int-or-other-mod-then-get-by-val                6.5410+-0.0208     ?      6.5477+-0.0227        ?
   int-or-other-mul-then-get-by-val                5.9168+-0.0483            5.8992+-0.0099        
   int-or-other-neg-then-get-by-val                6.5566+-0.0331     ?      6.5685+-0.0350        ?
   int-or-other-neg-zero-then-get-by-val          30.1852+-0.0751     ?     30.2878+-0.1462        ?
   int-or-other-sub-then-get-by-val                8.4229+-0.0110            8.4192+-0.0118        
   int-or-other-sub                                6.7348+-0.0170     ?      6.7411+-0.0253        ?
   int-overflow-local                             10.6644+-0.0492     ?     10.6803+-0.0836        ?
   Int16Array-bubble-sort                         62.8989+-0.2979     ?     63.4903+-1.4327        ?
   Int16Array-load-int-mul                         1.5773+-0.0120            1.5620+-0.0092        
   Int8Array-load                                  4.4679+-0.0163     ?      4.5739+-0.1408        ? might be 1.0237x slower
   integer-divide                                 12.6267+-0.0223     ?     12.6367+-0.0437        ?
   integer-modulo                                  1.8732+-0.0339            1.8505+-0.0397          might be 1.0123x faster
   make-indexed-storage                            3.8242+-0.5907            3.8147+-0.5796        
   method-on-number                               19.1875+-0.1662     ?     19.4506+-0.3449        ? might be 1.0137x slower
   nested-function-parsing-random                320.7347+-10.3321    ?    321.6923+-10.6408       ?
   nested-function-parsing                        48.1467+-3.1472           48.0299+-3.0855        
   new-array-buffer-dead                           3.0781+-0.1195            3.0519+-0.1077        
   new-array-buffer-push                          13.0079+-2.1424           12.9491+-2.1205        
   new-array-dead                                 23.4230+-0.0887           23.3869+-0.0224        
   new-array-push                                 10.2324+-1.6076     ?     10.2486+-1.5882        ?
   number-test                                     3.4312+-0.0149     ?      3.4472+-0.0351        ?
   object-closure-call                             7.2448+-0.1957            7.1923+-0.1863        
   object-test                                     3.9523+-0.0346            3.9220+-0.0224        
   poly-stricteq                                  76.2796+-0.9453           75.8803+-0.8300        
   polymorphic-structure                          16.5586+-0.0302           16.5406+-0.0182        
   polyvariant-monomorphic-get-by-id              10.3056+-0.0207           10.3007+-0.0198        
   rare-osr-exit-on-local                         16.9909+-0.0526           16.9561+-0.0231        
   register-pressure-from-osr                     26.0511+-0.0320           26.0297+-0.0337        
   simple-activation-demo                         28.7301+-0.2071           28.6893+-0.2426        
   slow-array-profile-convergence                  3.9445+-0.2385            3.8212+-0.2398          might be 1.0323x faster
   slow-convergence                                3.1784+-0.0260            3.1525+-0.0181        
   sparse-conditional                              1.1085+-0.0115     ?      1.1098+-0.0085        ?
   splice-to-remove                               41.4093+-0.1445     ?     41.4725+-0.1739        ?
   string-concat-object                            4.2350+-1.3179            4.2094+-1.2839        
   string-concat-pair-object                       4.1496+-1.2998     ?      4.1592+-1.3101        ?
   string-concat-pair-simple                      16.7792+-0.5746           16.4557+-0.5411          might be 1.0197x faster
   string-concat-simple                           16.6203+-0.6322     ?     16.7352+-0.5003        ?
   string-cons-repeat                             12.4288+-0.8740           12.2673+-0.9033          might be 1.0132x faster
   string-cons-tower                              30.9873+-18.1893    ?     31.2065+-18.4091       ?
   string-hash                                     2.1684+-0.0088            2.1635+-0.0056        
   string-repeat-arith                            36.6808+-0.1369     ?     36.8630+-0.3285        ?
   string-sub                                     73.3139+-0.6608     ?     74.3692+-1.1511        ? might be 1.0144x slower
   string-test                                     3.4066+-0.0063     !      3.4747+-0.0552        ! definitely 1.0200x slower
   structure-hoist-over-transitions                3.3830+-0.5666            3.3552+-0.5668        
   tear-off-arguments-simple                       1.4930+-0.0164     ?      1.5074+-0.0129        ?
   tear-off-arguments                              2.7539+-0.0200            2.7523+-0.0211        
   temporal-structure                             17.4343+-0.2897           17.2733+-0.0168        
   to-int32-boolean                               25.3490+-0.0584     ?     25.3621+-0.0467        ?
   undefined-test                                  3.6365+-0.0222            3.6320+-0.0154        

   <arithmetic>                                   17.4264+-0.3179     ?     17.4428+-0.3919        ? might be 1.0009x slower
   <geometric> *                                   8.1077+-0.1529            8.0957+-0.1847          might be 1.0015x faster
   <harmonic>                                      4.5224+-0.0667            4.5018+-0.0750          might be 1.0046x faster

                                                     TipOfTree                  FixPDFJS                                     
DSP:
   filtrr-posterize-tint                          45.1065+-0.9541     ?     45.4209+-1.0588        ?
   filtrr-tint-contrast-sat-bright                63.9202+-1.9926           62.7818+-0.8695          might be 1.0181x faster
   filtrr-tint-sat-adj-contr-mult                 76.1076+-3.2170           74.8845+-2.0003          might be 1.0163x faster
   filtrr-blur-overlay-sat-contr                 186.2033+-4.6743     ?    193.7603+-5.8286        ? might be 1.0406x slower
   filtrr-sat-blur-mult-sharpen-contr            231.7124+-4.8430          231.4832+-4.8585        
   filtrr-sepia-bias                              32.5811+-1.8318     ?     32.9171+-1.8993        ? might be 1.0103x slower
   route9-vp8                            x5     1022.2841+-28.9369    ?   1041.8310+-7.7569        ? might be 1.0191x slower
   starfield                             x5     1134.1074+-4.0901     ?   1136.3058+-3.6932        ?
   zynaps-quake3                         x5     1181.0264+-34.9056    ?   1198.0488+-24.2192       ? might be 1.0144x slower
   zynaps-mandelbrot                     x5      997.4647+-3.5204          976.7595+-17.7288         might be 1.0212x faster

   <arithmetic>                                  858.0786+-6.4312     ?    861.7682+-7.9796        ? might be 1.0043x slower
   <geometric> *                                 596.1279+-4.2484     ?    598.4000+-3.5062        ? might be 1.0038x slower
   <harmonic>                                    236.2162+-6.2263     ?    236.7055+-5.4410        ? might be 1.0021x slower

                                                     TipOfTree                  FixPDFJS                                     
All benchmarks:
   <arithmetic>                                  144.1442+-0.8613     ?    144.6108+-1.0457        ? might be 1.0032x slower
   <geometric>                                    17.8066+-0.1941           17.7937+-0.2259          might be 1.0007x faster
   <harmonic>                                      3.7973+-0.0337            3.7882+-0.0360          might be 1.0024x faster

                                                     TipOfTree                  FixPDFJS                                     
Geomean of preferred means:
   <scaled-result>                                35.5723+-0.3075     ?     35.5735+-0.3155        ? might be 1.0000x slower
Comment 3 Geoffrey Garen 2013-03-25 21:10:41 PDT
Comment on attachment 194993 [details]
Patch

r=me
Comment 4 Filip Pizlo 2013-03-26 09:23:46 PDT
Landed in http://trac.webkit.org/changeset/146887