Bug 124824

Summary: Create a new SymbolTable every time code is loaded so that the watchpoints don't get reused
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, commit-queue, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 124812    
Attachments:
Description Flags
the patch
none
the patch oliver: review+

Description Filip Pizlo 2013-11-24 20:39:59 PST
Patch forthcoming.
Comment 1 Filip Pizlo 2013-11-24 20:42:00 PST
Created attachment 217771 [details]
the patch
Comment 2 WebKit Commit Bot 2013-11-24 20:44:13 PST
Attachment 217771 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/SymbolTable.cpp', u'Source/JavaScriptCore/runtime/SymbolTable.h']" exit_code: 1
Source/JavaScriptCore/runtime/Executable.h:642:  The parameter name "kind" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Filip Pizlo 2013-11-24 20:46:20 PST
(In reply to comment #2)
> Attachment 217771 [details] did not pass style-queue:
> 
> Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Executable.h', u'Source/JavaScriptCore/runtime/SymbolTable.cpp', u'Source/JavaScriptCore/runtime/SymbolTable.h']" exit_code: 1
> Source/JavaScriptCore/runtime/Executable.h:642:  The parameter name "kind" adds no information, so it should be removed.  [readability/parameter_name] [5]

OK.

> Total errors found: 1 in 7 files
> 
> 
> If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 4 Filip Pizlo 2013-11-25 16:56:51 PST
jsc performance:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r159740)
"CopySymTab" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/jsc (r159740)

Collected 10 samples per benchmark/VM, with 10 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                 CopySymTab                                    
SunSpider:
   3d-cube                                            7.6446+-0.0549     !      7.7753+-0.0604        ! definitely 1.0171x slower
   3d-morph                                           8.7776+-0.0969     ?      8.7794+-0.0723        ?
   3d-raytrace                                        8.7102+-0.1080     ?      8.8419+-0.1262        ? might be 1.0151x slower
   access-binary-trees                                1.9945+-0.0098     ?      2.0053+-0.0160        ?
   access-fannkuch                                    7.9058+-0.0845     ?      7.9517+-0.0668        ?
   access-nbody                                       4.2179+-0.0087     ?      4.2623+-0.0746        ? might be 1.0105x slower
   access-nsieve                                      5.0074+-0.0472            5.0014+-0.1412        
   bitops-3bit-bits-in-byte                           1.7985+-0.0101     ?      1.8044+-0.0048        ?
   bitops-bits-in-byte                                7.1964+-0.1204     ?      7.2851+-0.0814        ? might be 1.0123x slower
   bitops-bitwise-and                                 2.9309+-0.0338            2.8896+-0.0413          might be 1.0143x faster
   bitops-nsieve-bits                                 4.5968+-0.0050     ?      4.6307+-0.0385        ?
   controlflow-recursive                              3.1268+-0.0138            3.1238+-0.0072        
   crypto-aes                                         5.4596+-0.0594     ?      5.4695+-0.0313        ?
   crypto-md5                                         3.1345+-0.0240     ?      3.1566+-0.0342        ?
   crypto-sha1                                        2.9513+-0.0129            2.9503+-0.0056        
   date-format-tofte                                 11.3048+-0.1305           11.1911+-0.1828          might be 1.0102x faster
   date-format-xparb                                  8.4759+-0.1096     ?      8.5363+-0.1033        ?
   math-cordic                                        4.2083+-0.0105     ?      4.2216+-0.0190        ?
   math-partial-sums                                 10.2356+-0.0753           10.2171+-0.0582        
   math-spectral-norm                                 2.7158+-0.0086     ?      2.7499+-0.0528        ? might be 1.0126x slower
   regexp-dna                                        12.9231+-0.1286           12.9173+-0.0874        
   string-base64                                      5.4523+-0.0451            5.4457+-0.0315        
   string-fasta                                      10.2019+-0.1699           10.1619+-0.0809        
   string-tagcloud                                   14.9225+-0.0729           14.8579+-0.1062        
   string-unpack-code                                29.8445+-0.0855     !     32.1630+-0.4239        ! definitely 1.0777x slower
   string-validate-input                              6.9009+-0.0348     !      6.9800+-0.0385        ! definitely 1.0115x slower

   <arithmetic> *                                     7.4092+-0.0107     !      7.5142+-0.0112        ! definitely 1.0142x slower
   <geometric>                                        5.9420+-0.0080     !      5.9775+-0.0095        ! definitely 1.0060x slower
   <harmonic>                                         4.8566+-0.0075     !      4.8745+-0.0095        ! definitely 1.0037x slower

                                                        TipOfTree                 CopySymTab                                    
LongSpider:
   3d-cube                                         2703.9365+-3.9136         2696.0858+-5.0703        
   3d-morph                                        1498.4985+-0.7594     ?   1509.9048+-19.5227       ?
   3d-raytrace                                     1520.3677+-21.2682        1513.0964+-23.3779       
   access-binary-trees                             2231.7467+-13.6419        2214.9558+-10.3532       
   access-fannkuch                                  668.1980+-0.5733          668.1774+-0.4200        
   access-nbody                                    1495.6409+-1.0396         1495.5843+-0.5606        
   access-nsieve                                   1571.4964+-19.5330        1562.5011+-3.0108        
   bitops-3bit-bits-in-byte                         121.5510+-0.3188          121.3406+-0.0730        
   bitops-bits-in-byte                              636.9204+-2.5221     ?    637.7132+-2.3492        ?
   bitops-nsieve-bits                              1051.3298+-5.3181         1046.6471+-0.6273        
   controlflow-recursive                           1490.2872+-1.2752         1490.2179+-1.1549        
   crypto-aes                                      1646.1164+-9.4504     ?   1654.8371+-13.8756       ?
   crypto-md5                                      1183.8359+-0.9811     ?   1196.0458+-24.8614       ? might be 1.0103x slower
   crypto-sha1                                     1618.6957+-5.2373     ?   1621.8124+-5.3680        ?
   date-format-tofte                               1174.3958+-7.8118     ?   1177.0419+-19.5596       ?
   date-format-xparb                               1521.6439+-97.2078        1477.6711+-21.8617         might be 1.0298x faster
   math-cordic                                     1734.7163+-1.1729         1734.4026+-3.4767        
   math-partial-sums                               1314.0044+-1.1408         1312.9203+-1.2681        
   math-spectral-norm                              1825.9652+-0.6124     ?   1826.0428+-0.4979        ?
   string-base64                                    505.7064+-1.4969          504.5364+-2.2468        
   string-fasta                                     988.4855+-2.1942     ?    993.1136+-4.5240        ?
   string-tagcloud                                  376.2648+-0.9510     !    382.0128+-3.8524        ! definitely 1.0153x slower

   <arithmetic>                                    1312.7183+-4.5401         1310.7573+-1.6146          might be 1.0015x faster
   <geometric> *                                   1117.4803+-3.2195         1117.0129+-1.5836          might be 1.0004x faster
   <harmonic>                                       800.6037+-1.3192     ?    801.0247+-1.1428        ? might be 1.0005x slower

                                                        TipOfTree                 CopySymTab                                    
V8Spider:
   crypto                                            79.3742+-0.0903           79.2813+-0.1754        
   deltablue                                         98.8394+-0.8073     ?     99.0392+-1.4672        ?
   earley-boyer                                      70.9971+-0.4408     ?     71.0537+-0.1354        ?
   raytrace                                          39.8418+-0.4467           39.6886+-0.1621        
   regexp                                           100.5406+-0.3455     ^     99.5463+-0.4721        ^ definitely 1.0100x faster
   richards                                         134.9759+-3.4570     ?    134.9973+-1.8001        ?
   splay                                             46.0867+-0.8246           45.8702+-0.3601        

   <arithmetic>                                      81.5223+-0.5395           81.3538+-0.3345          might be 1.0021x faster
   <geometric> *                                     75.4092+-0.3646           75.2352+-0.2476          might be 1.0023x faster
   <harmonic>                                        69.3224+-0.3197           69.1410+-0.1995          might be 1.0026x faster

                                                        TipOfTree                 CopySymTab                                    
Octane and V8v7:
   encrypt                                           0.46490+-0.00039    ?     0.46510+-0.00027       ?
   decrypt                                           8.58993+-0.04503          8.56601+-0.01044       
   deltablue                                x2       0.56931+-0.00901          0.56378+-0.00528       
   earley                                            0.85503+-0.00660          0.84850+-0.00606       
   boyer                                            12.26305+-0.02073    ?    12.27083+-0.03787       ?
   raytrace                                 x2       4.26565+-0.01793    ?     4.33576+-0.06432       ? might be 1.0164x slower
   regexp                                   x2      33.39911+-0.20821         33.21733+-0.06631       
   richards                                 x2       0.43006+-0.01030    ?     0.43031+-0.00894       ?
   splay                                    x2       0.63560+-0.00393          0.62962+-0.00325       
   navier-stokes                            x2      10.92651+-0.00282         10.92557+-0.00413       
   closure                                           0.42107+-0.00422    ?     0.42716+-0.00464       ? might be 1.0145x slower
   jquery                                            6.07371+-0.08052    ?     6.14573+-0.02120       ? might be 1.0119x slower
   gbemu                                    x2      71.90979+-0.95683    ?    72.68570+-0.82886       ? might be 1.0108x slower
   mandreel                                 x2     144.29540+-0.15608    ?   144.53761+-0.23425       ?
   pdfjs                                    x2     100.68831+-0.21031    ?   100.75017+-0.23062       ?
   box2d                                    x2      35.37824+-0.48276    ?    35.42703+-0.20452       ?

V8v7:
   <arithmetic>                                      7.66409+-0.02796          7.64720+-0.01120         might be 1.0022x faster
   <geometric> *                                     2.50823+-0.01254          2.50429+-0.00621         might be 1.0016x faster
   <harmonic>                                        1.02931+-0.01023          1.02521+-0.00671         might be 1.0040x faster

Octane including V8v7:
   <arithmetic>                                     32.06399+-0.08361    ?    32.14343+-0.06447       ? might be 1.0025x slower
   <geometric> *                                     6.97537+-0.02164    ?     6.98354+-0.01401       ? might be 1.0012x slower
   <harmonic>                                        1.42833+-0.01152          1.42632+-0.00799         might be 1.0014x faster

                                                        TipOfTree                 CopySymTab                                    
Kraken:
   ai-astar                                          493.562+-0.625      ?     494.040+-0.598         ?
   audio-beat-detection                              236.397+-1.071            235.890+-0.507         
   audio-dft                                         291.503+-1.476            290.523+-1.200         
   audio-fft                                         143.164+-0.106            143.141+-0.153         
   audio-oscillator                                  244.927+-0.297            244.827+-0.382         
   imaging-darkroom                                  287.811+-1.714            285.959+-0.648         
   imaging-desaturate                                158.347+-0.159      ?     158.496+-0.265         ?
   imaging-gaussian-blur                             362.772+-0.342      ?     362.804+-0.234         ?
   json-parse-financial                               80.366+-0.279      ?      80.444+-0.333         ?
   json-stringify-tinderbox                          105.913+-0.423      !     106.609+-0.259         ! definitely 1.0066x slower
   stanford-crypto-aes                                90.366+-0.466      ?      90.796+-1.359         ?
   stanford-crypto-ccm                               101.378+-0.964            100.732+-0.688         
   stanford-crypto-pbkdf2                            261.362+-2.210      ?     261.749+-1.749         ?
   stanford-crypto-sha256-iterative                  114.532+-0.227      !     115.352+-0.222         ! definitely 1.0072x slower

   <arithmetic> *                                    212.314+-0.174            212.240+-0.189           might be 1.0003x faster
   <geometric>                                       182.656+-0.124      ?     182.707+-0.250         ? might be 1.0003x slower
   <harmonic>                                        157.877+-0.165      ?     158.039+-0.355         ? might be 1.0010x slower

                                                        TipOfTree                 CopySymTab                                    
JSRegress:
   adapt-to-double-divide                            22.6738+-0.1076     ?     22.7295+-0.1140        ?
   aliased-arguments-getbyval                         0.9550+-0.0032            0.9540+-0.0035        
   allocate-big-object                                2.7481+-0.1447            2.6269+-0.0054          might be 1.0462x faster
   arity-mismatch-inlining                            0.8898+-0.0088            0.8860+-0.0045        
   array-access-polymorphic-structure                 9.7167+-0.1347     ?      9.8668+-0.1998        ? might be 1.0154x slower
   array-nonarray-polymorhpic-access                 56.2996+-0.2563     ?     56.4088+-0.2159        ?
   array-with-double-add                              5.7469+-0.0558            5.7365+-0.0453        
   array-with-double-increment                        4.3510+-0.0044     ?      4.3516+-0.0140        ?
   array-with-double-mul-add                          6.8311+-0.0616     ?      6.8337+-0.0644        ?
   array-with-double-sum                              7.9807+-0.1048     ?      8.0552+-0.0549        ?
   array-with-int32-add-sub                          10.3631+-0.0788     ?     10.4473+-0.1022        ?
   array-with-int32-or-double-sum                     8.0103+-0.0726     ?      8.0577+-0.0915        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    121.4699+-1.2856          121.3552+-1.0574        
   ArrayBuffer-DataView-alloc-long-lived             34.2373+-0.4068     ^     32.8394+-0.4101        ^ definitely 1.0426x faster
   ArrayBuffer-Int32Array-byteOffset                  7.0070+-0.0132            7.0052+-0.0688        
   ArrayBuffer-Int8Array-alloc-huge-long-lived   
                                                    218.1896+-3.8030          217.3133+-1.4975        
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented   
                                                    165.6263+-1.0750     !    168.6699+-1.0239        ! definitely 1.0184x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    119.8438+-1.4439     ?    119.9742+-0.9531        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     49.3155+-0.5233     !     50.9245+-0.1759        ! definitely 1.0326x slower
   ArrayBuffer-Int8Array-alloc-long-lived            31.6004+-0.6773     ?     32.2603+-0.3235        ? might be 1.0209x slower
   ArrayBuffer-Int8Array-alloc                       29.0372+-0.4873           28.5876+-0.1139          might be 1.0157x faster
   asmjs_bool_bug                                    10.1845+-0.1494           10.0810+-0.1432          might be 1.0103x faster
   basic-set                                         21.8917+-0.2788           21.8488+-0.1341        
   big-int-mul                                        5.6254+-0.0551     ?      5.6553+-0.0909        ?
   boolean-test                                       4.4073+-0.0348     ?      4.4343+-0.0226        ?
   branch-fold                                        4.9553+-0.0059     ?      4.9826+-0.0346        ?
   cast-int-to-double                                12.4246+-0.1070     ?     12.4270+-0.1676        ?
   cell-argument                                     15.7176+-0.3044           15.6193+-0.0632        
   cfg-simplify                                       3.9454+-0.0060     ?      3.9586+-0.0135        ?
   cmpeq-obj-to-obj-other                            12.4455+-0.4792     ?     12.5342+-0.6438        ?
   constant-test                                      8.8498+-0.0657            8.8292+-0.0611        
   DataView-custom-properties                       129.8367+-1.0360          129.7806+-1.0252        
   delay-tear-off-arguments-strictmode                3.5241+-0.0194            3.5101+-0.0059        
   destructuring-arguments-length                   178.4334+-10.4585         177.9164+-4.4094        
   destructuring-arguments                            8.7400+-0.1304     ?      8.8702+-0.0723        ? might be 1.0149x slower
   destructuring-swap                                 8.5312+-0.0784            8.5006+-0.0843        
   direct-arguments-getbyval                          0.8386+-0.0150            0.8382+-0.0045        
   double-pollution-getbyval                         10.9599+-0.1023     ?     11.0982+-0.0865        ? might be 1.0126x slower
   double-pollution-putbyoffset                       5.8211+-0.0304     ?      5.8720+-0.0767        ?
   empty-string-plus-int                             10.8140+-0.0749     ?     10.9906+-0.2523        ? might be 1.0163x slower
   emscripten-cube2hash                              52.4484+-0.6048           52.2386+-0.1912        
   emscripten-memops                               9236.7609+-24.0261    ?   9314.5563+-104.0125      ?
   external-arguments-getbyval                        2.0034+-0.0105     !      2.0276+-0.0078        ! definitely 1.0121x slower
   external-arguments-putbyval                        3.0412+-0.0068     ?      3.0473+-0.0166        ?
   Float32Array-matrix-mult                           6.3783+-0.0321     ?      6.3784+-0.0357        ?
   Float32Array-to-Float64Array-set                  95.0340+-0.7200           93.7558+-1.1503          might be 1.0136x faster
   Float64Array-alloc-long-lived                    101.4129+-0.3468     ?    101.7143+-0.4884        ?
   Float64Array-to-Int16Array-set                   116.6842+-0.8872     !    120.8914+-1.7272        ! definitely 1.0361x slower
   fold-double-to-int                                25.4479+-0.0837           25.4289+-0.0741        
   for-of-iterate-array-entries                       8.5730+-0.0827     ?      8.5979+-0.1049        ?
   for-of-iterate-array-keys                          3.4723+-0.0567     ?      3.5046+-0.1206        ?
   for-of-iterate-array-values                        2.9668+-0.0582            2.9480+-0.0485        
   function-dot-apply                                 3.1554+-0.0059     ?      3.1579+-0.0060        ?
   function-test                                      5.0758+-0.0306            5.0532+-0.0460        
   get-by-id-chain-from-try-block                     7.5541+-0.0762     ?      7.5686+-0.0315        ?
   get-by-id-proto-or-self                           26.0444+-0.2097           25.7240+-0.1991          might be 1.0125x faster
   get-by-id-self-or-proto                           24.3202+-0.5321           23.9964+-0.6173          might be 1.0135x faster
   get_callee_monomorphic                             4.6968+-0.0314     ?      4.7630+-0.1247        ? might be 1.0141x slower
   get_callee_polymorphic                             4.4840+-0.0074     ?      4.4984+-0.0080        ?
   global-var-const-infer-fire-from-opt               0.9519+-0.0117            0.9518+-0.0075        
   global-var-const-infer                             0.7567+-0.0044     ?      0.7638+-0.0273        ?
   HashMap-put-get-iterate-keys                      44.4190+-0.1696     ?     44.4615+-0.1449        ?
   HashMap-put-get-iterate                           62.3563+-0.2562           62.3096+-0.4045        
   HashMap-string-put-get-iterate                    55.4783+-0.3090     ?     55.6311+-0.2245        ?
   imul-double-only                                  17.8313+-0.2129           17.6851+-0.0979        
   imul-int-only                                     15.0123+-0.2841     ?     15.2668+-0.3885        ? might be 1.0170x slower
   imul-mixed                                        22.2307+-0.1204     ?     22.6773+-0.7896        ? might be 1.0201x slower
   in-four-cases                                     25.7975+-0.1020     ?     25.9270+-0.1185        ?
   in-one-case-false                                 12.1086+-0.0781     ?     12.2128+-0.1325        ?
   in-one-case-true                                  12.0606+-0.1190     ?     12.0739+-0.0998        ?
   in-two-cases                                      12.8492+-0.0923     ?     12.9379+-0.1713        ?
   indexed-properties-in-objects                      4.7330+-0.0226            4.7254+-0.0080        
   inline-arguments-access                            1.5146+-0.0036     ?      1.5216+-0.0051        ?
   inline-arguments-local-escape                     22.5431+-0.2095     !     23.5784+-0.4177        ! definitely 1.0459x slower
   inline-get-scoped-var                              7.0045+-0.1320     ?      7.0270+-0.0675        ?
   inlined-put-by-id-transition                      15.2213+-0.2674           15.1508+-0.3592        
   int-or-other-abs-then-get-by-val                   9.3354+-0.1171     ?      9.4058+-0.0757        ?
   int-or-other-abs-zero-then-get-by-val             37.4988+-0.1567     ?     37.7756+-0.4762        ?
   int-or-other-add-then-get-by-val                   9.7726+-0.1110            9.7341+-0.0796        
   int-or-other-add                                  11.0171+-0.0924           10.9997+-0.0344        
   int-or-other-div-then-get-by-val                   6.3112+-0.0530     ?      6.3152+-0.0600        ?
   int-or-other-max-then-get-by-val                   8.8731+-0.1842            8.8615+-0.1376        
   int-or-other-min-then-get-by-val                   7.1415+-0.0175     ?      7.1691+-0.0496        ?
   int-or-other-mod-then-get-by-val                   6.1358+-0.0670            6.0563+-0.0937          might be 1.0131x faster
   int-or-other-mul-then-get-by-val                   6.3711+-0.0986     ?      6.3750+-0.0978        ?
   int-or-other-neg-then-get-by-val                   7.8438+-0.0830     ?      7.9270+-0.1029        ? might be 1.0106x slower
   int-or-other-neg-zero-then-get-by-val             37.0981+-0.1623           37.0328+-0.0641        
   int-or-other-sub-then-get-by-val                  10.0924+-0.1088     ?     10.1872+-0.1204        ?
   int-or-other-sub                                   8.0549+-0.0889     ?      8.0561+-0.0359        ?
   int-overflow-local                                 6.6465+-0.0886     ?      6.6731+-0.0909        ?
   Int16Array-alloc-long-lived                       66.9204+-0.3540           66.4938+-0.3432        
   Int16Array-bubble-sort-with-byteLength            48.9942+-0.0339     ?     49.0548+-0.0678        ?
   Int16Array-bubble-sort                            48.5194+-0.0901           48.4210+-0.1095        
   Int16Array-load-int-mul                            2.0574+-0.0167            2.0568+-0.0052        
   Int16Array-to-Int32Array-set                      89.2849+-1.1691     !     94.8997+-0.6480        ! definitely 1.0629x slower
   Int32Array-alloc-huge-long-lived                 704.8188+-2.8104     ?    706.5034+-2.8165        ?
   Int32Array-alloc-huge                            803.0271+-5.6413     ?    806.8682+-6.8993        ?
   Int32Array-alloc-large-long-lived                979.4896+-10.2983    ?    988.6956+-15.9532       ?
   Int32Array-alloc-large                            44.7486+-0.7813     ?     45.1807+-1.0248        ?
   Int32Array-alloc-long-lived                       79.6007+-0.6703           79.0919+-0.5269        
   Int32Array-alloc                                   4.5050+-0.0159     ?      4.5085+-0.0211        ?
   Int32Array-Int8Array-view-alloc                   15.0732+-0.1283     !     15.6232+-0.1286        ! definitely 1.0365x slower
   int52-spill                                       12.2800+-0.1114     ?     12.3218+-0.1658        ?
   Int8Array-alloc-long-lived                        65.9000+-0.4908     ?     66.1041+-0.5652        ?
   Int8Array-load-with-byteLength                     5.0251+-0.0587     ?      5.0402+-0.0418        ?
   Int8Array-load                                     5.0750+-0.0065     ?      5.0760+-0.0078        ?
   integer-divide                                    15.4277+-0.0996     ?     15.5555+-0.0849        ?
   integer-modulo                                     2.1018+-0.0075     ?      2.1167+-0.0156        ?
   large-int-captured                                 9.1190+-0.1829            8.9242+-0.1097          might be 1.0218x faster
   large-int-neg                                     26.0325+-0.2833     ?     26.1159+-0.2832        ?
   large-int                                         23.4423+-0.1407           23.3591+-0.1641        
   lots-of-fields                                    10.9278+-0.0801     ?     10.9352+-0.1457        ?
   make-indexed-storage                               4.2649+-0.0177            4.2546+-0.0499        
   make-rope-cse                                      5.9799+-0.0984            5.9572+-0.0733        
   marsaglia-larger-ints                            119.2078+-0.2099     ?    119.2803+-0.2069        ?
   marsaglia-osr-entry                               52.6343+-0.1063     ?     52.6579+-0.0964        ?
   marsaglia                                        519.5093+-0.2671     ?    525.3444+-8.5788        ? might be 1.0112x slower
   method-on-number                                  31.0559+-0.6598     ?     31.1521+-0.6116        ?
   negative-zero-divide                               0.3990+-0.0027     !      0.4047+-0.0024        ! definitely 1.0141x slower
   negative-zero-modulo                               0.3829+-0.0039     ?      0.3849+-0.0011        ?
   negative-zero-negate                               0.3680+-0.0021            0.3676+-0.0014        
   nested-function-parsing-random                   383.1705+-5.1880     !    394.5169+-0.8431        ! definitely 1.0296x slower
   nested-function-parsing                           48.0309+-0.2717     !     55.0368+-0.1250        ! definitely 1.1459x slower
   new-array-buffer-dead                              3.7309+-0.0199     ?      3.7667+-0.0519        ?
   new-array-buffer-push                             10.6798+-0.1416           10.5029+-0.1451          might be 1.0168x faster
   new-array-dead                                    28.5472+-0.0380     ?     28.5700+-0.0847        ?
   new-array-push                                     6.9491+-0.0626            6.9128+-0.0641        
   number-test                                        4.3643+-0.0294            4.3404+-0.0623        
   object-closure-call                               13.3235+-0.0998           13.2678+-0.1576        
   object-test                                        4.7271+-0.0275     ?      4.7883+-0.0368        ? might be 1.0130x slower
   poly-stricteq                                     80.0454+-1.0356           79.7248+-0.1938        
   polymorphic-structure                             21.2336+-0.2367           21.0954+-0.1143        
   polyvariant-monomorphic-get-by-id                 12.0064+-0.1026           11.9256+-0.1213        
   put-by-id                                         19.4429+-0.2885           19.3498+-0.2084        
   put-by-val-large-index-blank-indexing-type   
                                                     11.1362+-0.2852           11.0053+-0.1193          might be 1.0119x faster
   rare-osr-exit-on-local                            20.3312+-0.0918           20.2230+-0.0746        
   register-pressure-from-osr                        32.1255+-0.1056           32.0730+-0.0951        
   simple-activation-demo                            35.1407+-0.1172           35.0908+-0.1277        
   slow-array-profile-convergence                     4.0181+-0.0129     ?      4.1250+-0.1671        ? might be 1.0266x slower
   slow-convergence                                   3.4422+-0.0188     ?      3.4466+-0.0160        ?
   sparse-conditional                                 1.3390+-0.0052     ?      1.3608+-0.0285        ? might be 1.0163x slower
   splice-to-remove                                  77.2877+-0.1484           76.7539+-0.4951        
   stepanov_container                             11661.5611+-27.3738       11654.1931+-19.5018       
   string-concat-object                               2.9956+-0.0203            2.9876+-0.0136        
   string-concat-pair-object                          2.9229+-0.0224     ?      2.9416+-0.0276        ?
   string-concat-pair-simple                         17.0307+-0.4870     ?     17.1312+-0.4229        ?
   string-concat-simple                              17.2815+-0.3579           17.2306+-0.2329        
   string-cons-repeat                                10.5547+-0.0370           10.5227+-0.0374        
   string-cons-tower                                 11.0775+-0.0475     ?     11.1173+-0.0688        ?
   string-equality                                   43.3584+-0.0727     ?     43.5829+-0.5524        ?
   string-get-by-val-big-char                        13.5242+-0.2440           13.5077+-0.1110        
   string-get-by-val-out-of-bounds-insane             5.7505+-0.0370     !      5.8659+-0.0717        ! definitely 1.0201x slower
   string-get-by-val-out-of-bounds                    5.3169+-0.0157            5.2930+-0.0456        
   string-get-by-val                                  4.8342+-0.0785     ?      4.8914+-0.0069        ? might be 1.0118x slower
   string-hash                                        2.7413+-0.0038     ?      2.7481+-0.0064        ?
   string-long-ident-equality                        38.3496+-0.4331     ?     38.3662+-0.3604        ?
   string-repeat-arith                               48.4500+-0.2530     ?     50.6536+-3.4016        ? might be 1.0455x slower
   string-sub                                        98.3003+-0.7610     ?     98.4983+-0.6022        ?
   string-test                                        4.3055+-0.0033     ?      4.3232+-0.0205        ?
   string-var-equality                               87.3749+-1.6011           87.1581+-1.1450        
   structure-hoist-over-transitions                   3.4162+-0.0946            3.3849+-0.0243        
   switch-char-constant                               3.4649+-0.0080     ?      3.4663+-0.0053        ?
   switch-char                                        8.1255+-0.0480     ?      8.1506+-0.0753        ?
   switch-constant                                    9.2529+-0.1217            9.1823+-0.1073        
   switch-string-basic-big-var                       20.2157+-0.1381     ?     20.2786+-0.1643        ?
   switch-string-basic-big                           21.4789+-0.1534           21.4284+-0.1315        
   switch-string-basic-var                           20.2608+-0.1257           20.2321+-0.0780        
   switch-string-basic                               22.1992+-1.0078     ?     22.7021+-0.3837        ? might be 1.0227x slower
   switch-string-big-length-tower-var                29.8602+-0.1003           29.8262+-0.0917        
   switch-string-length-tower-var                    21.7370+-0.0361     ?     21.8118+-0.1420        ?
   switch-string-length-tower                        17.0878+-0.2047           17.0022+-0.0950        
   switch-string-short                               16.9707+-0.2338     ?     17.0779+-0.1836        ?
   switch                                            15.6451+-0.0783     ?     15.6476+-0.2297        ?
   tear-off-arguments-simple                          2.1984+-0.0044     ?      2.2038+-0.0066        ?
   tear-off-arguments                                 3.5340+-0.0079     ?      3.5401+-0.0064        ?
   temporal-structure                                16.9815+-0.1438           16.9708+-0.1388        
   to-int32-boolean                                  22.2277+-0.3165     ?     22.2281+-0.0932        ?
   undefined-test                                     4.5720+-0.0490            4.5351+-0.0302        
   weird-inlining-const-prop                          2.2915+-0.0110     ?      2.2949+-0.0101        ?

   <arithmetic>                                     159.5528+-0.1944     ?    160.2489+-0.6398        ? might be 1.0044x slower
   <geometric> *                                     14.1254+-0.0115     !     14.1733+-0.0146        ! definitely 1.0034x slower
   <harmonic>                                         5.2329+-0.0075     !      5.2477+-0.0064        ! definitely 1.0028x slower

                                                        TipOfTree                 CopySymTab                                    
All benchmarks:
   <arithmetic>                                     226.3106+-0.4215     ?    226.6173+-0.3927        ? might be 1.0014x slower
   <geometric>                                       20.5605+-0.0157     !     20.6183+-0.0141        ! definitely 1.0028x slower
   <harmonic>                                         4.7256+-0.0135     ?      4.7330+-0.0086        ? might be 1.0016x slower

                                                        TipOfTree                 CopySymTab                                    
Geomean of preferred means:
   <scaled-result>                                   48.5282+-0.0623     !     48.6543+-0.0295        ! definitely 1.0026x slower
Comment 5 Filip Pizlo 2013-11-25 16:57:07 PST
DumpRenderTree performance:

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSBench, JSRegress, and DSP on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r159740)
"CopySymTab" at /Volumes/Data/fromMiniMe/secondary/OpenSource/WebKitBuild/Release/DumpRenderTree (r159740)

Collected 10 samples per benchmark/VM, with 10 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                 CopySymTab                                    
SunSpider:
   3d-cube                                            8.4013+-0.3407            8.3220+-0.1914        
   3d-morph                                           8.7313+-0.0390            8.7237+-0.0300        
   3d-raytrace                                        8.9976+-0.0830     ?      9.1741+-0.1630        ? might be 1.0196x slower
   access-binary-trees                                2.1437+-0.0217            2.1346+-0.0236        
   access-fannkuch                                    7.7092+-0.0442     ?      7.7482+-0.0283        ?
   access-nbody                                       4.0704+-0.0278     ?      4.1047+-0.0262        ?
   access-nsieve                                      4.8898+-0.1197            4.8280+-0.0353          might be 1.0128x faster
   bitops-3bit-bits-in-byte                           1.7560+-0.0324     ?      1.7612+-0.0251        ?
   bitops-bits-in-byte                                6.9756+-0.0483            6.9601+-0.0391        
   bitops-bitwise-and                                 2.8401+-0.0518     ?      2.8412+-0.0356        ?
   bitops-nsieve-bits                                 4.6140+-0.0387            4.5755+-0.0491        
   controlflow-recursive                              3.0193+-0.0787            2.9963+-0.0368        
   crypto-aes                                         5.5186+-0.0307     ?      5.5481+-0.0518        ?
   crypto-md5                                         3.2990+-0.0748            3.2717+-0.0914        
   crypto-sha1                                        2.9863+-0.0382     ?      3.0338+-0.0357        ? might be 1.0159x slower
   date-format-tofte                                 11.6685+-0.1107     ^     11.4974+-0.0552        ^ definitely 1.0149x faster
   date-format-xparb                                  8.6879+-0.0626     !      9.0309+-0.0636        ! definitely 1.0395x slower
   math-cordic                                        4.0663+-0.0904            4.0382+-0.0284        
   math-partial-sums                                  9.9556+-0.0293            9.9452+-0.0210        
   math-spectral-norm                                 2.7280+-0.0337            2.7000+-0.0314          might be 1.0104x faster
   regexp-dna                                        12.1170+-0.0562           12.0134+-0.0763        
   string-base64                                      5.9193+-0.0930            5.8556+-0.0340          might be 1.0109x faster
   string-fasta                                      11.0886+-0.0610     ?     11.1853+-0.0770        ?
   string-tagcloud                                   15.1097+-0.0622     ?     15.2284+-0.0924        ?
   string-unpack-code                                32.5693+-0.1403     !     34.5430+-0.1676        ! definitely 1.0606x slower
   string-validate-input                              8.6700+-0.0732     ?      8.7621+-0.0611        ? might be 1.0106x slower

   <arithmetic> *                                     7.6359+-0.0181     !      7.7240+-0.0167        ! definitely 1.0115x slower
   <geometric>                                        6.0550+-0.0167     ?      6.0731+-0.0092        ? might be 1.0030x slower
   <harmonic>                                         4.9121+-0.0171            4.9120+-0.0102          might be 1.0000x faster

                                                        TipOfTree                 CopySymTab                                    
LongSpider:
   3d-cube                                         3163.3048+-10.4598    ?   3167.4078+-12.0696       ?
   3d-morph                                        1499.1498+-0.8027     ?   1499.2891+-1.1862        ?
   3d-raytrace                                     1415.5530+-29.3844    ?   1428.5249+-45.5619       ?
   access-binary-trees                             2076.2958+-12.5094        2066.8678+-7.5504        
   access-fannkuch                                  656.5873+-0.8561     ?    660.3390+-8.1247        ?
   access-nbody                                    1492.9911+-0.5004         1492.5979+-0.4242        
   access-nsieve                                   1562.4264+-2.5293         1561.3381+-2.3062        
   bitops-3bit-bits-in-byte                         121.3141+-0.2592          121.2023+-0.0499        
   bitops-bits-in-byte                              637.4520+-0.7385          635.7387+-2.5227        
   bitops-nsieve-bits                              1052.3669+-1.3682         1051.5100+-1.6446        
   controlflow-recursive                           1488.3803+-0.5117     ?   1488.5589+-0.4842        ?
   crypto-aes                                      1679.2686+-11.0581    ?   1700.1717+-22.5135       ? might be 1.0124x slower
   crypto-md5                                      1202.5008+-1.9613     ?   1205.3556+-2.9750        ?
   crypto-sha1                                     1620.7755+-6.3372         1615.9298+-4.5004        
   date-format-tofte                               1174.5745+-7.0943         1159.6579+-7.9680          might be 1.0129x faster
   date-format-xparb                               1449.2330+-6.6377     !   1476.4018+-14.3947       ! definitely 1.0187x slower
   math-cordic                                     1736.7853+-4.0600     ?   1737.4302+-5.5957        ?
   math-partial-sums                               1309.8274+-1.8065         1309.6807+-1.5825        
   math-spectral-norm                              1825.9060+-0.5555     ?   1826.3518+-0.6073        ?
   string-base64                                    552.5749+-2.4171     ?    552.7570+-2.5658        ?
   string-fasta                                    1030.2508+-3.9554     ?   1033.7117+-8.2850        ?
   string-tagcloud                                  383.0047+-2.2608     ?    385.3434+-1.8925        ?

   <arithmetic>                                    1324.1147+-1.5985     ?   1326.1894+-2.5364        ? might be 1.0016x slower
   <geometric> *                                   1123.8131+-1.3981     ?   1125.5207+-1.8979        ? might be 1.0015x slower
   <harmonic>                                       805.7831+-1.0011     ?    806.6112+-0.7645        ? might be 1.0010x slower

                                                        TipOfTree                 CopySymTab                                    
V8Spider:
   crypto                                            80.3656+-0.6040           80.2354+-0.1638        
   deltablue                                         99.0496+-0.7810           98.1502+-0.3404        
   earley-boyer                                      71.2819+-0.2607           71.2644+-0.3041        
   raytrace                                          40.3466+-0.2649     ?     40.4670+-0.2174        ?
   regexp                                           100.3777+-0.5072     ?    100.5276+-0.2849        ?
   richards                                         132.1542+-1.8675     ?    133.3634+-1.5431        ?
   splay                                             61.1324+-0.4267     ?     61.3663+-0.4810        ?

   <arithmetic>                                      83.5297+-0.2980     ?     83.6249+-0.2106        ? might be 1.0011x slower
   <geometric> *                                     78.6153+-0.2295     ?     78.6888+-0.1476        ? might be 1.0009x slower
   <harmonic>                                        73.4923+-0.2109     ?     73.5743+-0.1531        ? might be 1.0011x slower

                                                        TipOfTree                 CopySymTab                                    
Octane and V8v7:
   encrypt                                           0.46527+-0.00031    ?     0.46529+-0.00028       ?
   decrypt                                           8.51643+-0.00684    ?     8.52838+-0.01380       ?
   deltablue                                x2       0.56635+-0.00915          0.55979+-0.00300         might be 1.0117x faster
   earley                                            0.85490+-0.00576          0.84777+-0.00532       
   boyer                                            12.34800+-0.04375         12.32608+-0.03345       
   raytrace                                 x2       4.22581+-0.03233          4.20855+-0.02150       
   regexp                                   x2      33.54881+-0.17468    ?    33.63733+-0.09696       ?
   richards                                 x2       0.42879+-0.00778          0.42762+-0.00783       
   splay                                    x2       0.62843+-0.00282          0.62727+-0.00294       
   navier-stokes                            x2      10.96792+-0.13405         10.91165+-0.01019       
   closure                                           0.41699+-0.00067    !     0.42429+-0.00583       ! definitely 1.0175x slower
   jquery                                            5.90088+-0.01612    !     6.02729+-0.01041       ! definitely 1.0214x slower
   gbemu                                    x2      72.16264+-0.45534    ?    72.29663+-0.93132       ?
   mandreel                                 x2     143.10910+-1.41093        143.00983+-1.47943       
   pdfjs                                    x2     100.88032+-0.23950        100.72142+-0.41721       
   box2d                                    x2      35.25772+-0.28035         34.95239+-0.11812       

V8v7:
   <arithmetic>                                      7.68230+-0.03115          7.68200+-0.01123         might be 1.0000x faster
   <geometric> *                                     2.50160+-0.00802          2.49321+-0.00473         might be 1.0034x faster
   <harmonic>                                        1.02468+-0.00540          1.02003+-0.00483         might be 1.0046x faster

Octane including V8v7:
   <arithmetic>                                     32.00209+-0.12895         31.97400+-0.10841         might be 1.0009x faster
   <geometric> *                                     6.95050+-0.01373          6.94151+-0.01041         might be 1.0013x faster
   <harmonic>                                        1.42072+-0.00629          1.41858+-0.00612         might be 1.0015x faster

                                                        TipOfTree                 CopySymTab                                    
Kraken:
   ai-astar                                          492.328+-0.696      ?     492.582+-0.369         ?
   audio-beat-detection                              249.670+-0.952            249.039+-1.807         
   audio-dft                                         296.448+-1.378            296.179+-1.647         
   audio-fft                                         149.029+-0.362            148.708+-0.313         
   audio-oscillator                                  248.604+-0.424      ?     249.656+-1.998         ?
   imaging-darkroom                                  297.815+-0.974            296.457+-0.560         
   imaging-desaturate                                159.906+-0.318            159.856+-0.174         
   imaging-gaussian-blur                             360.332+-0.190      ?     360.390+-0.209         ?
   json-parse-financial                               80.250+-0.266             80.229+-0.200         
   json-stringify-tinderbox                          106.285+-0.280      ?     106.674+-0.239         ?
   stanford-crypto-aes                               108.516+-1.129            106.932+-1.158           might be 1.0148x faster
   stanford-crypto-ccm                               122.704+-1.652      ?     123.081+-1.318         ?
   stanford-crypto-pbkdf2                            268.926+-1.259            268.189+-1.349         
   stanford-crypto-sha256-iterative                  128.429+-1.936      ?     128.701+-0.393         ?

   <arithmetic> *                                    219.232+-0.292            219.048+-0.190           might be 1.0008x faster
   <geometric>                                       191.748+-0.392            191.552+-0.229           might be 1.0010x faster
   <harmonic>                                        168.117+-0.503            167.918+-0.295           might be 1.0012x faster

                                                        TipOfTree                 CopySymTab                                    
JSBench:
   amazon                                             9.9000+-0.2262     ?     10.2000+-0.3016        ? might be 1.0303x slower
   facebook                                          37.7000+-0.3456     !     38.6000+-0.3694        ! definitely 1.0239x slower
   google                                            66.5000+-0.3770     ?     67.1000+-0.2262        ?
   twitter                                            9.8000+-0.3016     ?      9.9000+-0.2262        ? might be 1.0102x slower
   yahoo                                              3.6000+-0.3694     ?      3.8000+-0.3016        ? might be 1.0556x slower

   <arithmetic> *                                    25.5000+-0.1216     !     25.9200+-0.1382        ! definitely 1.0165x slower
   <geometric>                                       15.4053+-0.3278     ?     15.8094+-0.2627        ? might be 1.0262x slower
   <harmonic>                                         9.5200+-0.5352     ?      9.9022+-0.4307        ? might be 1.0402x slower

                                                        TipOfTree                 CopySymTab                                    
JSRegress:
   adapt-to-double-divide                            22.5497+-0.0422     ?     22.5903+-0.1213        ?
   aliased-arguments-getbyval                         0.9755+-0.0081     ?      1.0255+-0.0637        ? might be 1.0513x slower
   allocate-big-object                                2.6734+-0.0115     ?      2.7001+-0.0723        ?
   arity-mismatch-inlining                            0.8819+-0.0250     ?      0.8832+-0.0224        ?
   array-access-polymorphic-structure                 9.5171+-0.0339     ?      9.5763+-0.0428        ?
   array-nonarray-polymorhpic-access                 74.6136+-41.5616          56.1873+-0.1066          might be 1.3279x faster
   array-with-double-add                              5.1680+-0.0334            5.1492+-0.0325        
   array-with-double-increment                        4.1083+-0.0199            4.0994+-0.0176        
   array-with-double-mul-add                          7.5356+-0.0534     ?      7.6016+-0.0486        ?
   array-with-double-sum                              7.8224+-0.0191     ?      7.8234+-0.0147        ?
   array-with-int32-add-sub                           9.1984+-0.0156     ?      9.2179+-0.0453        ?
   array-with-int32-or-double-sum                     7.9365+-0.1426            7.8784+-0.0464        
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    128.2238+-1.0471          126.8755+-0.5237          might be 1.0106x faster
   ArrayBuffer-DataView-alloc-long-lived             34.5479+-0.7456     ^     33.2532+-0.3849        ^ definitely 1.0389x faster
   ArrayBuffer-Int32Array-byteOffset                  6.7865+-0.0204     ?      6.8032+-0.0316        ?
   ArrayBuffer-Int8Array-alloc-huge-long-lived   
                                                    218.6512+-1.9908     ?    220.8115+-5.1046        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented   
                                                    168.9319+-1.1992     !    171.6374+-1.0350        ! definitely 1.0160x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    128.0216+-2.2858     ?    129.5361+-1.3976        ? might be 1.0118x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     58.6921+-1.6347     ?     60.2449+-0.7722        ? might be 1.0265x slower
   ArrayBuffer-Int8Array-alloc-long-lived            31.7542+-0.9470     ?     32.4116+-0.1609        ? might be 1.0207x slower
   ArrayBuffer-Int8Array-alloc                       28.5493+-0.9384           28.0873+-0.0707          might be 1.0164x faster
   asmjs_bool_bug                                     9.9547+-0.0518            9.9497+-0.0433        
   basic-set                                         22.9865+-0.1277           22.9649+-0.0885        
   big-int-mul                                        5.4026+-0.0080     ?      5.4194+-0.0213        ?
   boolean-test                                       4.2464+-0.0218            4.2295+-0.0209        
   branch-fold                                        4.8106+-0.0265     ?      4.8161+-0.0185        ?
   cast-int-to-double                                12.1876+-0.0320     ?     12.1909+-0.0399        ?
   cell-argument                                     14.9875+-0.2932           14.8129+-0.0263          might be 1.0118x faster
   cfg-simplify                                       3.7766+-0.0172     ?      3.7953+-0.0210        ?
   cmpeq-obj-to-obj-other                            12.9108+-0.5486           12.4651+-0.4545          might be 1.0358x faster
   constant-test                                      8.6199+-0.0242     ?      8.6947+-0.0946        ?
   DataView-custom-properties                       138.2530+-0.8094     ?    138.4805+-1.2398        ?
   delay-tear-off-arguments-strictmode                3.4110+-0.0365            3.4046+-0.0313        
   destructuring-arguments-length                   184.4006+-0.6599     !    189.2350+-2.1847        ! definitely 1.0262x slower
   destructuring-arguments                            8.5262+-0.0953            8.4349+-0.0287          might be 1.0108x faster
   destructuring-swap                                 8.4513+-0.0442            8.4401+-0.0250        
   direct-arguments-getbyval                          0.8020+-0.0108     ?      0.8154+-0.0261        ? might be 1.0167x slower
   double-pollution-getbyval                         10.8360+-0.0269     ?     10.8542+-0.0344        ?
   double-pollution-putbyoffset                       5.7539+-0.0165     ?      5.7672+-0.0339        ?
   empty-string-plus-int                             13.7122+-0.1859     ?     13.8592+-0.1553        ? might be 1.0107x slower
   emscripten-cube2hash                              51.1825+-0.1596     ?     51.4449+-0.1478        ?
   emscripten-memops                               9234.8956+-11.6046    ?   9238.7870+-9.2775        ?
   external-arguments-getbyval                        2.7353+-0.0412     ?      2.7696+-0.0364        ? might be 1.0125x slower
   external-arguments-putbyval                        3.4216+-0.1994            3.3607+-0.0454          might be 1.0181x faster
   Float32Array-matrix-mult                           6.3198+-0.0341     ?      6.3425+-0.0332        ?
   Float32Array-to-Float64Array-set                  95.8292+-0.9601     ^     93.3478+-0.7487        ^ definitely 1.0266x faster
   Float64Array-alloc-long-lived                    105.5240+-0.7327          105.4023+-0.5597        
   Float64Array-to-Int16Array-set                   116.6500+-2.1606     ?    118.7598+-2.2329        ? might be 1.0181x slower
   fold-double-to-int                                25.5334+-0.3925           25.3051+-0.0761        
   for-of-iterate-array-entries                       8.5992+-0.3694            8.4991+-0.0882          might be 1.0118x faster
   for-of-iterate-array-keys                          3.4502+-0.0624            3.4212+-0.0338        
   for-of-iterate-array-values                        3.0270+-0.0330     ?      3.0678+-0.0584        ? might be 1.0135x slower
   function-dot-apply                                 3.0528+-0.0188            3.0323+-0.0206        
   function-test                                      4.6338+-0.0595     ?      4.6494+-0.0541        ?
   get-by-id-chain-from-try-block                     7.3626+-0.0218     ?      7.3773+-0.0309        ?
   get-by-id-proto-or-self                           23.2092+-0.3662           23.1267+-0.3826        
   get-by-id-self-or-proto                           23.7000+-0.6816     ?     23.9730+-0.7618        ? might be 1.0115x slower
   get_callee_monomorphic                             4.9460+-0.0256     ?      4.9663+-0.0475        ?
   get_callee_polymorphic                             4.4808+-0.0242     ?      4.4876+-0.0254        ?
   global-var-const-infer-fire-from-opt               0.3087+-0.0021            0.3080+-0.0026        
   global-var-const-infer                             0.3020+-0.0027     ?      0.3035+-0.0034        ?
   HashMap-put-get-iterate-keys                      47.4519+-0.4205     ^     46.7971+-0.1048        ^ definitely 1.0140x faster
   HashMap-put-get-iterate                           65.6408+-1.6657           65.2148+-0.5435        
   HashMap-string-put-get-iterate                    70.4797+-0.7089     ?     71.3773+-0.5965        ? might be 1.0127x slower
   imul-double-only                                  17.5679+-0.2736           17.4482+-0.0172        
   imul-int-only                                     14.8319+-0.2258     ?     14.8396+-0.2496        ?
   imul-mixed                                        21.9489+-0.0178     ?     22.8053+-1.0778        ? might be 1.0390x slower
   in-four-cases                                     25.6527+-0.0272     ?     25.6642+-0.0310        ?
   in-one-case-false                                 11.7881+-0.0294           11.7805+-0.0237        
   in-one-case-true                                  11.7917+-0.0253           11.7822+-0.0143        
   in-two-cases                                      12.5920+-0.0295           12.5698+-0.0243        
   indexed-properties-in-objects                      4.2068+-0.0176     ?      4.2427+-0.0430        ?
   inline-arguments-access                            1.4896+-0.0212     ?      1.4969+-0.0178        ?
   inline-arguments-local-escape                     26.9418+-0.3386     !     28.1169+-0.2338        ! definitely 1.0436x slower
   inline-get-scoped-var                              6.7866+-0.0685     ?      6.8302+-0.1107        ?
   inlined-put-by-id-transition                      14.7611+-0.2668     ?     14.9250+-0.2768        ? might be 1.0111x slower
   int-or-other-abs-then-get-by-val                   9.1332+-0.0609     ?      9.2563+-0.3546        ? might be 1.0135x slower
   int-or-other-abs-zero-then-get-by-val             37.2931+-0.1245           37.2454+-0.0214        
   int-or-other-add-then-get-by-val                   9.4198+-0.0118     ?      9.4313+-0.0200        ?
   int-or-other-add                                  10.7794+-0.0386     ?     10.7885+-0.0336        ?
   int-or-other-div-then-get-by-val                   6.0820+-0.0145            6.0602+-0.0294        
   int-or-other-max-then-get-by-val                   8.6178+-0.2150            8.5839+-0.2385        
   int-or-other-min-then-get-by-val                   6.8670+-0.0248     ?      6.8809+-0.0248        ?
   int-or-other-mod-then-get-by-val                   5.8889+-0.0270            5.8759+-0.0196        
   int-or-other-mul-then-get-by-val                   6.1913+-0.0281            6.1800+-0.0206        
   int-or-other-neg-then-get-by-val                   7.5939+-0.0290            7.5750+-0.0408        
   int-or-other-neg-zero-then-get-by-val             36.8920+-0.2539           36.6681+-0.0570        
   int-or-other-sub-then-get-by-val                   9.8877+-0.0263     ?      9.9678+-0.1688        ?
   int-or-other-sub                                   7.7821+-0.0217     ?      7.8096+-0.0566        ?
   int-overflow-local                                 6.4090+-0.0193            6.4038+-0.0230        
   Int16Array-alloc-long-lived                       69.4667+-0.3954     ?     69.7511+-0.3358        ?
   Int16Array-bubble-sort-with-byteLength            48.9099+-0.0506           48.9094+-0.0461        
   Int16Array-bubble-sort                            48.1848+-0.0403     ?     48.2407+-0.0519        ?
   Int16Array-load-int-mul                            2.0049+-0.0194     ?      2.0247+-0.0202        ?
   Int16Array-to-Int32Array-set                      89.4969+-1.1445     !     94.4733+-0.5798        ! definitely 1.0556x slower
   Int32Array-alloc-huge-long-lived                 744.1809+-5.1624          741.6289+-3.3895        
   Int32Array-alloc-huge                            810.6779+-8.6046     ?    815.0293+-7.9266        ?
   Int32Array-alloc-large-long-lived                987.3704+-10.1308         979.6083+-10.3426       
   Int32Array-alloc-large                            46.9735+-0.9652           45.7554+-0.9717          might be 1.0266x faster
   Int32Array-alloc-long-lived                       83.8530+-0.4440     ?     84.0369+-0.4210        ?
   Int32Array-alloc                                   4.2585+-0.0146            4.2548+-0.0121        
   Int32Array-Int8Array-view-alloc                   17.7953+-0.7253     ?     18.4239+-0.7586        ? might be 1.0353x slower
   int52-spill                                        0.3008+-0.0040     ?      0.3024+-0.0026        ?
   Int8Array-alloc-long-lived                        67.1345+-1.0053           66.6984+-0.4596        
   Int8Array-load-with-byteLength                     4.8479+-0.0154     ?      4.8620+-0.0261        ?
   Int8Array-load                                     4.8573+-0.0155     ?      4.8819+-0.0206        ?
   integer-divide                                    15.4304+-0.0297           15.4259+-0.0249        
   integer-modulo                                     2.0247+-0.0100     !      2.0636+-0.0235        ! definitely 1.0192x slower
   large-int-captured                                 9.5566+-0.1915            9.2474+-0.1203          might be 1.0334x faster
   large-int-neg                                     25.7087+-0.1624     ?     25.7302+-0.0639        ?
   large-int                                         23.1025+-0.0494     ?     23.1030+-0.0322        ?
   lots-of-fields                                    10.6307+-0.0243     ?     10.6389+-0.0455        ?
   make-indexed-storage                               4.3704+-0.1456            4.2723+-0.1808          might be 1.0230x faster
   make-rope-cse                                     19.6437+-0.0903     ?     19.6979+-0.0778        ?
   marsaglia-larger-ints                            119.1050+-0.2419     ?    119.2406+-0.1593        ?
   marsaglia-osr-entry                               52.3544+-0.0464     ?     52.4040+-0.0367        ?
   marsaglia                                        519.5094+-0.3283          519.3826+-0.1995        
   method-on-number                                  29.7059+-0.2919     ?     30.3301+-0.6029        ? might be 1.0210x slower
   negative-zero-divide                               0.3434+-0.0115            0.3432+-0.0061        
   negative-zero-modulo                               0.3288+-0.0248     ?      0.3453+-0.0352        ? might be 1.0502x slower
   negative-zero-negate                               0.2955+-0.0021     !      0.3085+-0.0062        ! definitely 1.0441x slower
   nested-function-parsing-random                   387.9314+-0.4946     !    402.0065+-0.4702        ! definitely 1.0363x slower
   nested-function-parsing                           53.8999+-0.2210     !     61.1497+-0.2527        ! definitely 1.1345x slower
   new-array-buffer-dead                              3.9061+-0.0642     ?      3.9253+-0.1082        ?
   new-array-buffer-push                             10.2227+-0.0515           10.2215+-0.0491        
   new-array-dead                                    28.3864+-0.0824     ?     28.3870+-0.0634        ?
   new-array-push                                     9.7466+-0.0519            9.7119+-0.0690        
   number-test                                        4.1497+-0.0281     ?      4.1588+-0.0262        ?
   object-closure-call                               13.0393+-0.0308     ?     13.0684+-0.0691        ?
   object-test                                        4.5786+-0.0434            4.5756+-0.0432        
   poly-stricteq                                     79.6041+-0.1523     ?     79.7262+-0.1494        ?
   polymorphic-structure                             21.0809+-0.0818           21.0623+-0.0529        
   polyvariant-monomorphic-get-by-id                 11.7138+-0.0311     ?     11.7518+-0.0908        ?
   put-by-id                                         21.0515+-0.2403           20.8029+-0.3101          might be 1.0120x faster
   put-by-val-large-index-blank-indexing-type   
                                                     20.2272+-0.1092     ?     20.2820+-0.1392        ?
   rare-osr-exit-on-local                            20.0568+-0.0411     ?     20.0901+-0.0543        ?
   register-pressure-from-osr                        31.9522+-0.0250     ?     31.9793+-0.0589        ?
   simple-activation-demo                            34.9491+-0.0276           34.9469+-0.0466        
   slow-array-profile-convergence                     4.1281+-0.0672     ?      4.2677+-0.2106        ? might be 1.0338x slower
   slow-convergence                                   3.4539+-0.0755            3.4493+-0.0337        
   sparse-conditional                                 1.3048+-0.0220     ?      1.3139+-0.0160        ?
   splice-to-remove                                  77.2058+-0.1317     ^     76.5333+-0.1017        ^ definitely 1.0088x faster
   stepanov_container                             11609.5895+-34.4301    ?  11611.4772+-15.4163       ?
   string-concat-object                               3.5705+-0.0296            3.5508+-0.0154        
   string-concat-pair-object                          3.4836+-0.0214     ?      3.4918+-0.0169        ?
   string-concat-pair-simple                         18.2351+-0.2349           17.9960+-0.2502          might be 1.0133x faster
   string-concat-simple                              18.0152+-0.3720     ?     18.5244+-0.3338        ? might be 1.0283x slower
   string-cons-repeat                                12.8127+-0.0935           12.7988+-0.0945        
   string-cons-tower                                 13.4130+-0.0501           13.3794+-0.1095        
   string-equality                                   43.6004+-0.5933           43.3769+-0.5491        
   string-get-by-val-big-char                        17.5556+-0.1848     ?     17.8704+-0.1886        ? might be 1.0179x slower
   string-get-by-val-out-of-bounds-insane             5.4275+-0.0671     ?      5.5113+-0.1018        ? might be 1.0154x slower
   string-get-by-val-out-of-bounds                    5.1024+-0.0219     ?      5.1060+-0.0182        ?
   string-get-by-val                                  4.6292+-0.0208     ?      4.6331+-0.0107        ?
   string-hash                                        2.7172+-0.1536            2.6993+-0.0232        
   string-long-ident-equality                        38.3026+-0.5419     ?     38.4368+-0.7186        ?
   string-repeat-arith                               48.0861+-0.2307     ?     48.6155+-0.8457        ? might be 1.0110x slower
   string-sub                                        97.9133+-0.8659     ?     97.9478+-0.5680        ?
   string-test                                        4.1169+-0.0304     ?      4.1451+-0.0458        ?
   string-var-equality                               69.5435+-0.3671           69.5277+-0.5475        
   structure-hoist-over-transitions                   3.4391+-0.0058     ?      3.4428+-0.0232        ?
   switch-char-constant                               3.3302+-0.0204            3.3253+-0.0245        
   switch-char                                        7.8919+-0.0360            7.8850+-0.0444        
   switch-constant                                    8.8657+-0.0221     ?      8.8880+-0.0275        ?
   switch-string-basic-big-var                       19.8437+-0.0263     ?     19.8679+-0.0480        ?
   switch-string-basic-big                           21.9830+-1.1520           21.6875+-0.4531          might be 1.0136x faster
   switch-string-basic-var                           19.8513+-0.0621     ?     20.1049+-0.3916        ? might be 1.0128x slower
   switch-string-basic                               19.8389+-0.3865           19.7457+-0.2894        
   switch-string-big-length-tower-var                29.4810+-0.0429     ?     29.6766+-0.3985        ?
   switch-string-length-tower-var                    21.8071+-0.0295           21.8066+-0.0391        
   switch-string-length-tower                        16.7263+-0.0356     ?     16.7267+-0.0381        ?
   switch-string-short                               16.7434+-0.0334           16.7361+-0.0213        
   switch                                            13.2604+-0.0170           13.2526+-0.0108        
   tear-off-arguments-simple                          2.4031+-0.0352            2.3378+-0.0472          might be 1.0279x faster
   tear-off-arguments                                 3.5736+-0.0356            3.5526+-0.0577        
   temporal-structure                                16.7564+-0.0404     ?     16.8689+-0.2622        ?
   to-int32-boolean                                  22.0107+-0.0180           21.9853+-0.0319        
   undefined-test                                     4.3814+-0.0302     ?      4.3821+-0.0276        ?
   weird-inlining-const-prop                          0.2983+-0.0023     ?      0.2988+-0.0020        ?

   <arithmetic>                                     160.0934+-0.3974     ?    160.2059+-0.1095        ? might be 1.0007x slower
   <geometric> *                                     13.6982+-0.0232     ?     13.7311+-0.0200        ? might be 1.0024x slower
   <harmonic>                                         3.8998+-0.0254     ?      3.9337+-0.0209        ? might be 1.0087x slower

                                                        TipOfTree                 CopySymTab                                    
DSP:
   filtrr-posterize-tint                             41.5118+-0.2149           41.3512+-0.1934        
   filtrr-tint-contrast-sat-bright                   85.4813+-4.1802           76.6419+-7.1861          might be 1.1153x faster
   filtrr-tint-sat-adj-contr-mult                    90.1000+-0.2875     ?     90.1613+-0.4379        ?
   filtrr-blur-overlay-sat-contr                    238.4498+-1.1051     ?    240.8247+-4.9973        ?
   filtrr-sat-blur-mult-sharpen-contr               279.7981+-0.7668     ?    280.3562+-0.9006        ?
   filtrr-sepia-bias                                 30.1972+-0.1004           30.1031+-0.0934        
   route9-vp8                               x5     1063.4795+-3.5601         1063.4621+-5.2365        
   starfield                                x5     1184.8081+-4.8916         1184.0426+-3.5907        
   bellard-jslinux                          x5     3070.1000+-7.6338     ?   3075.6000+-17.4745       ?
   zynaps-quake3                            x5     1374.5193+-7.5632     ?   1375.4590+-13.1631       ?
   zynaps-mandelbrot                        x5     1095.5323+-0.6028         1095.0686+-0.9659        
   ammojs-asm-js                            x5      234.0510+-3.8694          232.8665+-5.2678        
   ammojs-regular-js                        x5      219.7798+-3.8729          218.2071+-5.2223        

   <arithmetic>                                    1023.8265+-1.4907     ?   1023.9748+-2.8482        ? might be 1.0001x slower
   <geometric> *                                    609.7028+-1.9988          607.2483+-3.2378          might be 1.0040x faster
   <harmonic>                                       272.0449+-1.6466          268.6502+-2.6759          might be 1.0126x faster

                                                        TipOfTree                 CopySymTab                                    
All benchmarks:
   <arithmetic>                                     326.8005+-0.3324     ?    327.0306+-0.3488        ? might be 1.0007x slower
   <geometric>                                       31.2067+-0.0417     ?     31.2519+-0.0204        ? might be 1.0015x slower
   <harmonic>                                         4.5467+-0.0189     ?      4.5719+-0.0162        ? might be 1.0055x slower

                                                        TipOfTree                 CopySymTab                                    
Geomean of preferred means:
   <scaled-result>                                   62.0205+-0.0684     !     62.2261+-0.0620        ! definitely 1.0033x slower
Comment 6 Filip Pizlo 2013-11-26 10:51:35 PST
Created attachment 217888 [details]
the patch

Only clone if there are captured variables.  This reduces the performance regression somewhat.  It's now:

                                  TipOfTree                 CopySymTab                                    

3d-cube                         7.6940+-0.1180     ?      7.7232+-0.0728        ?
3d-morph                        8.7795+-0.0635     ?      8.8311+-0.1250        ?
3d-raytrace                     8.7119+-0.1335     ?      8.8288+-0.2167        ? might be 1.0134x slower
access-binary-trees             2.0083+-0.0133     ?      2.0196+-0.0276        ?
access-fannkuch                 8.0129+-0.0911            7.9998+-0.1229        
access-nbody                    4.2382+-0.0206     ?      4.2444+-0.0336        ?
access-nsieve                   5.0547+-0.0857            4.9899+-0.0222          might be 1.0130x faster
bitops-3bit-bits-in-byte        1.8088+-0.0129     ?      1.8133+-0.0222        ?
bitops-bits-in-byte             7.2445+-0.0806     ?      7.3056+-0.0453        ?
bitops-bitwise-and              2.9078+-0.0500     ?      2.9387+-0.0273        ? might be 1.0106x slower
bitops-nsieve-bits              4.6024+-0.0274            4.5913+-0.0420        
controlflow-recursive           3.1233+-0.0085            3.1199+-0.0145        
crypto-aes                      5.4176+-0.0225     ?      5.4183+-0.0173        ?
crypto-md5                      3.1177+-0.0592            3.0905+-0.0303        
crypto-sha1                     2.9851+-0.0929            2.9395+-0.0064          might be 1.0155x faster
date-format-tofte              11.2551+-0.1257           11.1915+-0.1051        
date-format-xparb               8.6007+-0.1150     ?      8.6161+-0.1689        ?
math-cordic                     4.2095+-0.0121     ?      4.2652+-0.0948        ? might be 1.0132x slower
math-partial-sums              10.2620+-0.1227     ?     10.2844+-0.1139        ?
math-spectral-norm              2.7493+-0.0659            2.7211+-0.0073          might be 1.0104x faster
regexp-dna                     12.8357+-0.0775     ?     12.9096+-0.0793        ?
string-base64                   5.4462+-0.0282     ?      5.4549+-0.0201        ?
string-fasta                   10.1331+-0.1146     ?     10.1621+-0.1004        ?
string-tagcloud                14.8699+-0.1560           14.8458+-0.1224        
string-unpack-code             30.0857+-0.1233     !     31.7528+-0.1392        ! definitely 1.0554x slower
string-validate-input           6.9770+-0.1305            6.9281+-0.0891        

<arithmetic> *                  7.4281+-0.0138     !      7.4994+-0.0130        ! definitely 1.0096x slower
<geometric>                     5.9576+-0.0111     ?      5.9730+-0.0099        ? might be 1.0026x slower
<harmonic>                      4.8713+-0.0131     ?      4.8730+-0.0123        ? might be 1.0004x slower
Comment 7 Oliver Hunt 2013-11-26 11:03:40 PST
Comment on attachment 217888 [details]
the patch

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

> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1535
> +        if (codeType() == FunctionCode && symbolTable->captureCount())

What happens if we're hitting the cached code block for global/eval  code?  You surely don't want to share watchpoints over global code?
Comment 8 Filip Pizlo 2013-11-26 11:11:42 PST
Comment on attachment 217888 [details]
the patch

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

>> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1535
>> +        if (codeType() == FunctionCode && symbolTable->captureCount())
> 
> What happens if we're hitting the cached code block for global/eval  code?  You surely don't want to share watchpoints over global code?

So, global code doesn't have a SymbolTable in UnlinkedCodeBlock.  That SymbolTable is part of JSGlobalObject!

And I think I just don't want to do constant inference for eval variables.  I don't believe that the machinery I have for constant inference would even work for those.  Those get sort of added dynamically using a put_to_scope.

So, global variable constant inference currently already just works even with caching since each new JSGlobalObject gets a fresh symbol table.  I don't care about eval's.  That leaves functions!
Comment 9 Oliver Hunt 2013-11-26 11:13:53 PST
(In reply to comment #8)
> (From update of attachment 217888 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=217888&action=review
> 
> >> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1535
> >> +        if (codeType() == FunctionCode && symbolTable->captureCount())
> > 
> > What happens if we're hitting the cached code block for global/eval  code?  You surely don't want to share watchpoints over global code?
> 
> So, global code doesn't have a SymbolTable in UnlinkedCodeBlock.  That SymbolTable is part of JSGlobalObject!
> 

Oh right, duh.
Comment 10 Filip Pizlo 2013-11-26 17:19:54 PST
Landed in http://trac.webkit.org/changeset/159795