Bug 153544

Summary: Should not predict OtherObj for ToThis with primitive types under strict mode
Product: WebKit Reporter: Yusuke Suzuki <ysuzuki>
Component: New BugsAssignee: Yusuke Suzuki <ysuzuki>
Status: RESOLVED FIXED    
Severity: Normal CC: benjamin, fpizlo, ggaren, keith_miller, mark.lam, msaboff, saam
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 143889    
Attachments:
Description Flags
Patch fpizlo: review+

Description Yusuke Suzuki 2016-01-27 06:32:40 PST
Should not predict OtherObj for ToThis with primitive types under strict mode
Comment 1 Yusuke Suzuki 2016-01-27 09:29:45 PST
This is found when implementing https://bugs.webkit.org/show_bug.cgi?id=143889,
in that case, even under strict mode, ToThis(StringIdent) DFG node predicts its result type as OtherObj. (And frequent BadType OSRExit occurs)
Comment 2 Yusuke Suzuki 2016-01-30 16:37:06 PST
Created attachment 270327 [details]
Patch
Comment 3 Filip Pizlo 2016-01-30 16:44:58 PST
What is the performance impact?  It would be good to see a detailed report.
Comment 4 Filip Pizlo 2016-01-30 16:46:00 PST
Comment on attachment 270327 [details]
Patch

This looks sensible. We should do detailed perf tests before landing.
Comment 5 Yusuke Suzuki 2016-01-30 17:18:26 PST
Comment on attachment 270327 [details]
Patch

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

Thanks! I'll take the performance!

> Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
> +            if (enableInt52() && node->child1()->shouldSpeculateMachineInt()) {
> +                fixEdge<Int52RepUse>(node->child1());
> +                node->convertToIdentity();
> +                node->setResult(NodeResultInt52);
> +                return;
> +            }
> +
> +            if (node->child1()->shouldSpeculateNumber()) {
> +                fixEdge<DoubleRepUse>(node->child1());
> +                node->convertToIdentity();
> +                node->setResult(NodeResultDouble);
> +                return;
> +            }

I'm not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node->child1()) because it just an alias node to the child1.
So, what is the best way to handle this here? Looking node->child1()->result() and setting it to node is the way to do that? Or just doing the above is OK?
Comment 6 Yusuke Suzuki 2016-01-30 17:22:27 PST
Comment on attachment 270327 [details]
Patch

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

>> Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
>> +            }
> 
> I'm not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node->child1()) because it just an alias node to the child1.
> So, what is the best way to handle this here? Looking node->child1()->result() and setting it to node is the way to do that? Or just doing the above is OK?

Maybe I think we need to transfer NodeResult types since prediction == SpecInt52, result == NodeResultJS case should exist, right?
Comment 7 Filip Pizlo 2016-01-30 17:22:29 PST
Comment on attachment 270327 [details]
Patch

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

>> Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
>> +            }
> 
> I'm not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node->child1()) because it just an alias node to the child1.
> So, what is the best way to handle this here? Looking node->child1()->result() and setting it to node is the way to do that? Or just doing the above is OK?

This should be OK because the last part of FixupPhase is conversion fix-up.  It will see this and insert a DoubleRep node to convert node->child1() into a double.
Comment 8 Filip Pizlo 2016-01-30 17:23:26 PST
Comment on attachment 270327 [details]
Patch

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

>>>> Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
>>>> +            }
>>> 
>>> I'm not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node->child1()) because it just an alias node to the child1.
>>> So, what is the best way to handle this here? Looking node->child1()->result() and setting it to node is the way to do that? Or just doing the above is OK?
>> 
>> Maybe I think we need to transfer NodeResult types since prediction == SpecInt52, result == NodeResultJS case should exist, right?
> 
> This should be OK because the last part of FixupPhase is conversion fix-up.  It will see this and insert a DoubleRep node to convert node->child1() into a double.

In the MachineInt case, it will already insert a Int52Rep node to perform the conversion.
Comment 9 Yusuke Suzuki 2016-01-30 17:24:01 PST
Comment on attachment 270327 [details]
Patch

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

>>>> Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1602
>>>> +            }
>>> 
>>> I'm not confident on this part. Identity requires that canonicalResultRepresentation(node) == canonicalResultRepresentation(node->child1()) because it just an alias node to the child1.
>>> So, what is the best way to handle this here? Looking node->child1()->result() and setting it to node is the way to do that? Or just doing the above is OK?
>> 
>> Maybe I think we need to transfer NodeResult types since prediction == SpecInt52, result == NodeResultJS case should exist, right?
> 
> This should be OK because the last part of FixupPhase is conversion fix-up.  It will see this and insert a DoubleRep node to convert node->child1() into a double.

Oh! Great, I've got it. Thanks so much for your pointing :D
Comment 10 Yusuke Suzuki 2016-01-30 18:54:05 PST
Result is the following. Result looks not so bad.

Interesting result is the following.
   string-fasta                                     532.9790+-8.8987     ^    443.1105+-26.7987       ^ definitely 1.2028x faster

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on yusuke (MacBookPro8,2).

VMs tested:
"Baseline" at /Users/yusuke/dev/WebKit/WebKitBuild/master-for-to-this/Release/jsc
"Mine" at /Users/yusuke/dev/WebKit/WebKitBuild/to-this/Release/jsc

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

                                                         Baseline                    Mine                                       
SunSpider:
   3d-cube                                            6.8388+-0.2020     ?      6.8658+-0.2305        ?
   3d-morph                                           6.3539+-0.1499     ?      6.4283+-0.1092        ? might be 1.0117x slower
   3d-raytrace                                        7.8746+-0.3095            7.7234+-0.3293          might be 1.0196x faster
   access-binary-trees                                2.9196+-0.8561     ?      3.0106+-1.0100        ? might be 1.0312x slower
   access-fannkuch                                    7.4094+-0.4459            7.2355+-0.3741          might be 1.0240x faster
   access-nbody                                       3.4037+-0.0189     ?      3.4475+-0.1829        ? might be 1.0129x slower
   access-nsieve                                      3.8041+-0.8647            3.5676+-0.1024          might be 1.0663x faster
   bitops-3bit-bits-in-byte                           1.6743+-0.2596     ?      1.6902+-0.2946        ?
   bitops-bits-in-byte                                3.8563+-0.1178     ?      4.3156+-1.3097        ? might be 1.1191x slower
   bitops-bitwise-and                                 2.5339+-0.1882     ?      2.8043+-0.4439        ? might be 1.1067x slower
   bitops-nsieve-bits                                 4.0405+-1.1136     ?      4.0866+-1.2173        ? might be 1.0114x slower
   controlflow-recursive                              2.9171+-0.0481            2.8798+-0.0449          might be 1.0129x faster
   crypto-aes                                         5.6260+-1.1224            5.5887+-1.2017        
   crypto-md5                                         3.3235+-0.0312            3.3100+-0.0490        
   crypto-sha1                                        3.1762+-0.2238            3.1094+-0.1506          might be 1.0215x faster
   date-format-tofte                                 10.3273+-0.2686     ?     11.7130+-1.9988        ? might be 1.1342x slower
   date-format-xparb                                  6.4587+-1.3093            6.1612+-0.1655          might be 1.0483x faster
   math-cordic                                        3.7736+-0.3412            3.6602+-0.0483          might be 1.0310x faster
   math-partial-sums                                  6.2522+-0.0647     ?      6.2560+-0.1810        ?
   math-spectral-norm                                 2.8151+-0.0705     ?      2.8848+-0.2949        ? might be 1.0248x slower
   regexp-dna                                         7.6108+-0.0829     ?      7.9500+-1.3633        ? might be 1.0446x slower
   string-base64                                      5.5179+-0.1008     ?      6.6177+-2.9868        ? might be 1.1993x slower
   string-fasta                                       7.8203+-0.1965     ^      7.2189+-0.2588        ^ definitely 1.0833x faster
   string-tagcloud                                   11.3948+-2.2276           10.7035+-1.4312          might be 1.0646x faster
   string-unpack-code                                21.8558+-0.6278     ?     21.9362+-0.2834        ?
   string-validate-input                              5.5400+-0.2279            5.3936+-0.1118          might be 1.0271x faster

   <arithmetic>                                       5.9661+-0.1647     ?      6.0215+-0.1935        ? might be 1.0093x slower

                                                         Baseline                    Mine                                       
LongSpider:
   3d-cube                                          988.1898+-26.0637         976.0106+-35.9054         might be 1.0125x faster
   3d-morph                                         706.9565+-10.5345    ?    709.4516+-10.2146       ?
   3d-raytrace                                      798.2307+-2.5329     ?    801.4364+-11.4800       ?
   access-binary-trees                             1130.5771+-27.0389    ?   1141.3080+-13.4669       ?
   access-fannkuch                                  364.5560+-53.9827         350.1062+-57.4193         might be 1.0413x faster
   access-nbody                                     778.1685+-11.2663         753.1172+-55.4978         might be 1.0333x faster
   access-nsieve                                    513.6930+-5.6347     ?    530.6740+-30.5231       ? might be 1.0331x slower
   bitops-3bit-bits-in-byte                          39.7734+-0.3323           39.6630+-0.4639        
   bitops-bits-in-byte                              129.2963+-10.3004    ?    131.0593+-8.5711        ? might be 1.0136x slower
   bitops-nsieve-bits                               437.4865+-6.7785     ?    440.1103+-5.7066        ?
   controlflow-recursive                            541.0652+-5.1718     ?    550.2098+-25.3788       ? might be 1.0169x slower
   crypto-aes                                       870.6147+-17.3557    ?    883.8890+-26.1841       ? might be 1.0152x slower
   crypto-md5                                       787.7313+-17.2980         774.8337+-7.0612          might be 1.0166x faster
   crypto-sha1                                      922.9603+-21.9982         918.1735+-35.4824       
   date-format-tofte                                891.6646+-12.8235    !    927.7588+-19.6508       ! definitely 1.0405x slower
   date-format-xparb                                870.6762+-72.0739    ?    879.9855+-44.6304       ? might be 1.0107x slower
   hash-map                                         201.1562+-5.0322          200.7615+-5.3319        
   math-cordic                                      604.0203+-53.6081         584.9930+-8.1026          might be 1.0325x faster
   math-partial-sums                                599.5690+-1.5359     ?    601.3077+-10.1026       ?
   math-spectral-norm                               909.3830+-12.7690    ?    912.0120+-15.4944       ?
   string-base64                                    513.4621+-28.1601         508.7567+-5.9941        
   string-fasta                                     532.9790+-8.8987     ^    443.1105+-26.7987       ^ definitely 1.2028x faster
   string-tagcloud                                  216.3085+-4.5502     ^    208.9126+-2.5991        ^ definitely 1.0354x faster

   <geometric>                                      512.8830+-6.9203          508.0797+-4.8989          might be 1.0095x faster

                                                         Baseline                    Mine                                       
V8Spider:
   crypto                                            49.5096+-0.1318     ?     50.5564+-3.3336        ? might be 1.0211x slower
   deltablue                                         63.7818+-3.2704     ?     64.5628+-3.7463        ? might be 1.0122x slower
   earley-boyer                                      50.3643+-0.3734           50.3442+-1.3069        
   raytrace                                          33.7848+-2.6372           32.9717+-0.2099          might be 1.0247x faster
   regexp                                            81.9688+-5.8931           80.5159+-0.7365          might be 1.0180x faster
   richards                                          51.7880+-0.8524     ?     56.3846+-4.6152        ? might be 1.0888x slower
   splay                                             45.9706+-2.9395           45.9433+-2.9223        

   <geometric>                                       52.1275+-0.4657     ?     52.6932+-1.5753        ? might be 1.0109x slower

                                                         Baseline                    Mine                                       
Octane:
   encrypt                                           0.22116+-0.00826          0.22095+-0.00890       
   decrypt                                           3.85020+-0.07744    ?     3.87119+-0.11700       ?
   deltablue                                x2       0.19358+-0.01481          0.19130+-0.01829         might be 1.0119x faster
   earley                                            0.41245+-0.01678    ?     0.41448+-0.00811       ?
   boyer                                             6.28153+-0.12866          6.17070+-0.08765         might be 1.0180x faster
   navier-stokes                            x2       5.31805+-0.02438    ?     5.33414+-0.09184       ?
   raytrace                                 x2       1.30101+-0.01972          1.29602+-0.04470       
   richards                                 x2       0.10712+-0.00121    ?     0.10790+-0.00351       ?
   splay                                    x2       0.45931+-0.00823    ?     0.46245+-0.00770       ?
   regexp                                   x2      32.62361+-0.70076         32.05047+-0.66892         might be 1.0179x faster
   pdfjs                                    x2      48.31987+-0.79489    ?    48.65049+-1.20758       ?
   mandreel                                 x2      55.14015+-1.16230         54.38888+-0.28091         might be 1.0138x faster
   gbemu                                    x2      34.21716+-0.51567         34.21298+-0.57379       
   closure                                           0.73493+-0.01902    ?     0.73908+-0.00968       ?
   jquery                                            9.57622+-0.19237          9.52913+-0.06055       
   box2d                                    x2      12.27128+-0.20301         12.15191+-0.12725       
   zlib                                     x2     452.26192+-6.26119        452.20036+-1.88530       
   typescript                               x2     888.42780+-9.23000        884.01660+-9.01757       

   <geometric>                                       6.89714+-0.06617          6.87752+-0.06423         might be 1.0029x faster

                                                         Baseline                    Mine                                       
Kraken:
   ai-astar                                          110.429+-2.033      ?     114.811+-9.544         ? might be 1.0397x slower
   audio-beat-detection                               64.745+-0.686      ?      65.751+-6.172         ? might be 1.0155x slower
   audio-dft                                         110.252+-3.877      ?     110.887+-6.269         ?
   audio-fft                                          50.033+-4.642      ?      50.099+-4.139         ?
   audio-oscillator                                   68.635+-4.911      ?      68.693+-4.654         ?
   imaging-darkroom                                   74.385+-5.096             74.314+-5.173         
   imaging-desaturate                                 64.632+-0.429      ?      64.785+-0.970         ?
   imaging-gaussian-blur                             102.515+-5.065      ?     103.385+-7.620         ?
   json-parse-financial                               49.084+-0.479      ?      50.866+-4.657         ? might be 1.0363x slower
   json-stringify-tinderbox                           28.495+-0.441             28.384+-0.315         
   stanford-crypto-aes                                49.723+-4.850             48.464+-1.224           might be 1.0260x faster
   stanford-crypto-ccm                                48.608+-4.243             48.605+-4.624         
   stanford-crypto-pbkdf2                            123.113+-6.265      ?     125.059+-6.179         ? might be 1.0158x slower
   stanford-crypto-sha256-iterative                   47.237+-0.492      ?      49.022+-4.814         ? might be 1.0378x slower

   <arithmetic>                                       70.849+-0.936      ?      71.652+-1.229         ? might be 1.0113x slower

                                                         Baseline                    Mine                                       
JSRegress:
   abc-forward-loop-equal                            46.1651+-3.3739           45.0609+-0.6837          might be 1.0245x faster
   abc-postfix-backward-loop                         59.8900+-4.9873           58.3672+-0.5227          might be 1.0261x faster
   abc-simple-backward-loop                          45.6028+-3.8654     ?     45.7128+-3.8959        ?
   abc-simple-forward-loop                           45.8312+-3.7861           45.8207+-4.2541        
   abc-skippy-loop                                   32.3862+-3.6200           30.5857+-0.1364          might be 1.0589x faster
   abs-boolean                                        3.3278+-0.1469     ?      3.3593+-0.1186        ?
   adapt-to-double-divide                            15.7523+-1.9522           15.2807+-0.3748          might be 1.0309x faster
   aliased-arguments-getbyval                         1.3865+-0.0287            1.3770+-0.0137        
   allocate-big-object                                2.9018+-0.1176     ?      3.0454+-0.8221        ? might be 1.0495x slower
   arguments-named-and-reflective                     9.5267+-0.1593     ?     10.9730+-3.4939        ? might be 1.1518x slower
   arguments-out-of-bounds                           10.7278+-0.2658     ?     12.3985+-4.3112        ? might be 1.1557x slower
   arguments-strict-mode                              8.8571+-0.1804     ?      9.3559+-1.1596        ? might be 1.0563x slower
   arguments                                          8.4475+-0.3709            8.2367+-0.1264          might be 1.0256x faster
   arity-mismatch-inlining                            1.2152+-0.3500            1.1855+-0.2429          might be 1.0250x faster
   array-access-polymorphic-structure                 9.1157+-0.1570     ?     10.3255+-4.3078        ? might be 1.1327x slower
   array-nonarray-polymorhpic-access                 29.1953+-0.9799     ?     30.3574+-2.8276        ? might be 1.0398x slower
   array-prototype-every                             88.1013+-0.5634     ^     85.2040+-0.9376        ^ definitely 1.0340x faster
   array-prototype-forEach                           87.4919+-2.9242     ?     87.9346+-2.8477        ?
   array-prototype-map                               98.9097+-3.6971           91.8150+-5.0288          might be 1.0773x faster
   array-prototype-reduce                            87.6442+-4.9214     ?     89.2727+-6.9987        ? might be 1.0186x slower
   array-prototype-reduceRight                      103.8035+-4.8637     ?    105.7334+-3.3303        ? might be 1.0186x slower
   array-prototype-some                              87.7402+-0.6509     ?     90.7748+-11.7664       ? might be 1.0346x slower
   array-splice-contiguous                           28.1000+-0.6010     ?     28.2710+-0.2916        ?
   array-with-double-add                              5.1816+-1.4970            5.0557+-1.4886          might be 1.0249x faster
   array-with-double-increment                        4.4128+-1.8163            4.3653+-1.3570          might be 1.0109x faster
   array-with-double-mul-add                          6.3787+-1.4916            5.8991+-1.4557          might be 1.0813x faster
   array-with-double-sum                              4.2357+-1.8537            4.1400+-1.5085          might be 1.0231x faster
   array-with-int32-add-sub                           8.4885+-0.6723            7.9946+-0.1956          might be 1.0618x faster
   array-with-int32-or-double-sum                     3.7485+-0.2477            3.7109+-0.1913          might be 1.0101x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     38.6818+-1.0953     ?     44.7883+-9.3367        ? might be 1.1579x slower
   ArrayBuffer-DataView-alloc-long-lived             16.2362+-0.4893     ?     17.4698+-2.8687        ? might be 1.0760x slower
   ArrayBuffer-Int32Array-byteOffset                  4.4567+-0.1506     ?      4.6092+-0.2619        ? might be 1.0342x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     37.4602+-1.4383     ?     38.2050+-3.6939        ? might be 1.0199x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     24.5803+-1.0530     ?     26.4618+-4.5511        ? might be 1.0765x slower
   ArrayBuffer-Int8Array-alloc-long-lived            14.3605+-0.4475     ?     14.7531+-0.7330        ? might be 1.0273x slower
   ArrayBuffer-Int8Array-alloc                       12.0576+-0.2794     ?     13.8566+-4.9631        ? might be 1.1492x slower
   arrowfunction-call                                12.1545+-0.2426     ?     13.7935+-3.0901        ? might be 1.1349x slower
   asmjs_bool_bug                                     8.8403+-0.2244     ?      8.9186+-0.3785        ?
   assign-custom-setter-polymorphic                   3.2007+-0.0335     ?      3.2182+-0.1256        ?
   assign-custom-setter                               4.7502+-0.0902     ?      4.7749+-0.1757        ?
   basic-set                                         11.0048+-2.3512            9.3782+-0.3818          might be 1.1734x faster
   big-int-mul                                        4.0527+-0.1557     ?      4.0640+-0.1701        ?
   boolean-test                                       4.5742+-1.4919            3.9860+-0.0789          might be 1.1476x faster
   branch-fold                                        4.6299+-0.6500            4.3855+-0.1280          might be 1.0557x faster
   branch-on-string-as-boolean                       16.8831+-0.1922     ?     17.0259+-0.1393        ?
   by-val-generic                                     5.5139+-0.1637            5.3060+-0.2190          might be 1.0392x faster
   call-spread-apply                                 32.5884+-3.0871           32.0340+-4.6919          might be 1.0173x faster
   call-spread-call                                  24.4427+-0.1446     ?     26.4528+-3.3693        ? might be 1.0822x slower
   captured-assignments                               0.7960+-0.2982     ?      0.8557+-0.8314        ? might be 1.0750x slower
   cast-int-to-double                                 5.8567+-0.0751     ?      6.5308+-1.7826        ? might be 1.1151x slower
   cell-argument                                      4.9905+-1.5821            4.5148+-0.0903          might be 1.1054x faster
   cfg-simplify                                       3.4468+-0.3226            3.3914+-0.1137          might be 1.0163x faster
   chain-getter-access                               12.4240+-0.1133     ?     14.3965+-3.7543        ? might be 1.1588x slower
   cmpeq-obj-to-obj-other                            10.7814+-0.0854     ?     13.8245+-4.2099        ? might be 1.2823x slower
   constant-test                                      5.5397+-1.0272            5.3552+-0.6600          might be 1.0345x faster
   create-lots-of-functions                          10.2815+-1.7671     ?     10.8793+-2.1718        ? might be 1.0581x slower
   cse-new-array-buffer                               3.3260+-0.9877            2.8995+-0.1901          might be 1.1471x faster
   cse-new-array                                      3.1662+-0.2950            3.0685+-0.1875          might be 1.0318x faster
   custom-setter-getter-as-put-get-by-id              0.8149+-0.3110     ?      0.8185+-0.3405        ?
   DataView-custom-properties                        49.6578+-3.0656           45.8035+-3.0211          might be 1.0841x faster
   delay-tear-off-arguments-strictmode               15.8316+-0.5717     ?     16.7841+-3.4407        ? might be 1.0602x slower
   deltablue-varargs                                221.5305+-5.2778     ?    226.4680+-5.5356        ? might be 1.0223x slower
   destructuring-arguments                          208.5494+-21.6456         207.3817+-14.6011       
   destructuring-parameters-overridden-by-function   
                                                      0.7919+-0.3012            0.6904+-0.2605          might be 1.1470x faster
   destructuring-swap                                 5.4163+-0.1037            5.3585+-0.0158          might be 1.0108x faster
   direct-arguments-getbyval                          1.4514+-0.1514     ?      1.6965+-0.6056        ? might be 1.1689x slower
   div-boolean-double                                 5.1420+-0.1810     ?      5.1479+-0.3085        ?
   div-boolean                                        7.8936+-0.1296            7.8007+-0.0404          might be 1.0119x faster
   double-get-by-val-out-of-bounds                    5.3330+-0.2900     ?      5.7855+-1.3548        ? might be 1.0849x slower
   double-pollution-getbyval                          8.9156+-0.1545     ?      8.9324+-0.2776        ?
   double-pollution-putbyoffset                       4.3958+-0.0932     ?      4.4062+-0.0195        ?
   double-real-use                                   31.1784+-0.3230     ?     32.1596+-3.7970        ? might be 1.0315x slower
   double-to-int32-typed-array-no-inline              2.6868+-0.0246     ?      2.8895+-0.6857        ? might be 1.0755x slower
   double-to-int32-typed-array                        2.6298+-0.3018            2.5336+-0.0248          might be 1.0380x faster
   double-to-uint32-typed-array-no-inline             2.7438+-0.0227     ?      2.8412+-0.2624        ? might be 1.0355x slower
   double-to-uint32-typed-array                       2.9548+-1.3933            2.6699+-0.2933          might be 1.1067x faster
   elidable-new-object-dag                           46.3948+-6.8081           46.1916+-6.2773        
   elidable-new-object-roflcopter                    50.2988+-5.7401           50.1989+-2.9945        
   elidable-new-object-then-call                     39.4120+-4.1388     ?     40.6298+-3.5316        ? might be 1.0309x slower
   elidable-new-object-tree                          51.6711+-1.1488     ?     52.4647+-0.8698        ? might be 1.0154x slower
   empty-string-plus-int                              6.1923+-0.1050     ?      6.2415+-0.1601        ?
   emscripten-cube2hash                              41.5179+-0.9265           40.9946+-0.4253          might be 1.0128x faster
   exit-length-on-plain-object                       21.9051+-3.8422           21.3364+-4.6929          might be 1.0267x faster
   external-arguments-getbyval                        1.5055+-0.1898     ?      1.5887+-0.1408        ? might be 1.0553x slower
   external-arguments-putbyval                        2.8115+-0.1081     ?      2.8284+-0.0684        ?
   fixed-typed-array-storage-var-index                1.6165+-0.1993            1.5394+-0.0154          might be 1.0501x faster
   fixed-typed-array-storage                          1.2570+-0.2799     ?      1.3673+-0.5234        ? might be 1.0878x slower
   Float32Array-matrix-mult                           5.3273+-0.1776            5.2071+-0.0256          might be 1.0231x faster
   Float32Array-to-Float64Array-set                  59.1118+-4.7975     ?     62.4603+-0.3046        ? might be 1.0566x slower
   Float64Array-alloc-long-lived                     88.0073+-7.4488           86.5102+-3.9882          might be 1.0173x faster
   Float64Array-to-Int16Array-set                    71.2655+-1.7263           70.8859+-0.5933        
   fold-double-to-int                                16.6020+-0.3375     ?     18.5142+-5.2461        ? might be 1.1152x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.4069+-0.6961     ?     11.0452+-1.6412        ? might be 1.0613x slower
   fold-get-by-id-to-multi-get-by-offset              8.8661+-0.3990     ?      9.0004+-0.2102        ? might be 1.0151x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      6.8760+-0.0407     ?      8.6407+-3.1645        ? might be 1.2566x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.1189+-3.2368            8.1530+-2.8804          might be 1.1185x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.1741+-2.2840     ?     10.7327+-3.4347        ? might be 1.0549x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      8.3908+-2.2128     ?      8.4092+-2.2050        ?
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.8370+-0.5198     ?     13.5784+-2.4184        ? might be 1.0578x slower
   fold-put-by-id-to-multi-put-by-offset             10.2604+-0.3381     ?     10.8140+-1.7448        ? might be 1.0539x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     11.0826+-0.9469           10.7903+-0.3514          might be 1.0271x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.7443+-0.5822           10.6407+-0.2300        
   fold-put-structure                                 6.6414+-0.7204            6.5153+-0.4410          might be 1.0194x faster
   for-of-iterate-array-entries                      12.3881+-0.0860     ?     12.8290+-1.1048        ? might be 1.0356x slower
   for-of-iterate-array-keys                          4.4352+-0.4127            4.3264+-0.1095          might be 1.0252x faster
   for-of-iterate-array-values                        4.2401+-0.1189     ?      4.8185+-1.5160        ? might be 1.1364x slower
   fround                                            13.1311+-0.2652     ?     14.5497+-4.5034        ? might be 1.1080x slower
   ftl-library-inlining-dataview                     73.9306+-4.7832     ?     86.6100+-34.8283       ? might be 1.1715x slower
   ftl-library-inlining                              28.3233+-0.3026     ?     28.3365+-0.2100        ?
   ftl-polymorphic-bitand                           156.3112+-5.1481          151.9550+-2.1918          might be 1.0287x faster
   ftl-polymorphic-bitor                            153.7802+-0.2427     ?    157.0833+-16.0217       ? might be 1.0215x slower
   ftl-polymorphic-bitxor                           153.6791+-1.1191     ?    154.5665+-10.5545       ?
   ftl-polymorphic-div                              483.5452+-5.0148          482.3288+-7.2633        
   ftl-polymorphic-lshift                           162.9845+-4.4508          159.9066+-3.8164          might be 1.0192x faster
   ftl-polymorphic-mul                              243.2489+-4.8224     ?    243.2552+-7.2128        ?
   ftl-polymorphic-rshift                           162.7777+-3.1946          159.7105+-2.4094          might be 1.0192x faster
   ftl-polymorphic-StringFromCharCode               231.1320+-4.8460          230.6172+-2.2563        
   ftl-polymorphic-sub                              185.3167+-1.3070          184.3026+-0.7561        
   ftl-polymorphic-urshift                          179.5978+-4.0237     ?    181.4268+-8.0723        ? might be 1.0102x slower
   function-call                                     13.6907+-3.7189     ?     15.0410+-4.6529        ? might be 1.0986x slower
   function-dot-apply                                 2.7674+-0.1592            2.7255+-0.0832          might be 1.0154x faster
   function-test                                      3.9076+-0.1847     ?      3.9078+-0.1078        ?
   function-with-eval                               125.0468+-3.8522          120.8160+-9.8030          might be 1.0350x faster
   gcse-poly-get-less-obvious                        19.8920+-0.3712     ?     20.2592+-1.0424        ? might be 1.0185x slower
   gcse-poly-get                                     20.5544+-0.3366     ?     22.3874+-5.3696        ? might be 1.0892x slower
   gcse                                               4.9607+-1.3318     ?      4.9731+-1.2726        ?
   generator-create                                   1.0319+-0.2168     ?      1.1572+-0.3963        ? might be 1.1214x slower
   generator-fib                                    132.3182+-3.4792          128.0569+-4.8986          might be 1.0333x faster
   generator-function-create                          5.3197+-1.8464     ?      5.5192+-0.9349        ? might be 1.0375x slower
   generator-sunspider-access-nsieve                  7.0984+-0.1001            7.0760+-0.1834        
   generator-with-several-types                     432.4028+-16.7524         429.0331+-11.1702       
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.0207+-0.0907     ?      3.4750+-1.5471        ? might be 1.1504x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.9897+-0.0274     ?      6.5924+-1.6180        ? might be 1.1006x slower
   get-by-id-chain-from-try-block                     2.9133+-0.2904     ?      3.1160+-0.7717        ? might be 1.0696x slower
   get-by-id-check-structure-elimination              5.3560+-1.3635            4.9410+-0.2073          might be 1.0840x faster
   get-by-id-proto-or-self                           15.0875+-4.7729           13.5242+-0.5476          might be 1.1156x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.3096+-0.1241     ?      3.4034+-0.4244        ? might be 1.0284x slower
   get-by-id-self-or-proto                           14.8101+-2.2734           14.3361+-0.7091          might be 1.0331x faster
   get-by-val-out-of-bounds                           5.4796+-1.3247            5.1347+-0.0892          might be 1.0672x faster
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.5957+-0.1497     ?      4.0560+-1.3297        ? might be 1.1280x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      7.7115+-0.1585     ?      8.0984+-0.3159        ? might be 1.0502x slower
   get-by-val-with-string-chain-from-try-block   
                                                      2.8752+-0.0840     ?      2.8772+-0.0861        ?
   get-by-val-with-string-check-structure-elimination   
                                                      7.6452+-1.4534            6.7739+-0.0765          might be 1.1286x faster
   get-by-val-with-string-proto-or-self              14.4621+-0.4466     ?     15.0972+-2.7848        ? might be 1.0439x slower
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      4.1245+-0.2645            3.9735+-0.3185          might be 1.0380x faster
   get-by-val-with-string-self-or-proto              16.3563+-1.6604     ?     16.7083+-3.6831        ? might be 1.0215x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.8293+-0.0381            3.8093+-0.0215        
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     14.4648+-0.6509     ?     15.1508+-2.2941        ? might be 1.0474x slower
   get-by-val-with-symbol-chain-from-try-block   
                                                      3.0056+-0.3838            2.8813+-0.1030          might be 1.0432x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     14.1335+-1.1465           13.6451+-0.2931          might be 1.0358x faster
   get-by-val-with-symbol-proto-or-self              14.6721+-1.0741     ?     15.0543+-1.2999        ? might be 1.0260x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      4.7496+-0.0624     ?      4.7584+-0.1593        ?
   get-by-val-with-symbol-self-or-proto              15.4861+-1.6919     ?     16.1745+-3.5770        ? might be 1.0444x slower
   get_callee_monomorphic                             2.9810+-0.1291     ?      3.0275+-0.0908        ? might be 1.0156x slower
   get_callee_polymorphic                             4.0681+-0.1447     ?      4.3637+-1.0749        ? might be 1.0727x slower
   getter-no-activation                               4.4637+-0.0453     ?      4.5422+-0.1833        ? might be 1.0176x slower
   getter-prototype                                   8.1490+-0.5727     ?      8.8707+-2.9118        ? might be 1.0886x slower
   getter-richards-try-catch                       1164.6748+-21.7167    ?   1212.6561+-57.3471       ? might be 1.0412x slower
   getter-richards                                   88.8886+-6.9736           86.2110+-3.1479          might be 1.0311x faster
   getter                                             5.1589+-0.2123     ?      5.4144+-0.4250        ? might be 1.0495x slower
   global-object-access-with-mutating-structure   
                                                      5.7413+-0.1285            5.7195+-0.3035        
   global-var-const-infer-fire-from-opt               1.1769+-0.6304            0.9471+-0.0671          might be 1.2426x faster
   global-var-const-infer                             0.9419+-0.3830     ?      1.0321+-0.3634        ? might be 1.0958x slower
   hard-overflow-check-equal                         36.1635+-0.1364     ?     36.4109+-0.2835        ?
   hard-overflow-check                               36.4514+-1.2256     ?     37.4879+-4.6632        ? might be 1.0284x slower
   HashMap-put-get-iterate-keys                      28.1237+-0.1211     ?     28.1982+-0.5132        ?
   HashMap-put-get-iterate                           29.6027+-4.5335           28.9892+-2.8022          might be 1.0212x faster
   HashMap-string-put-get-iterate                    31.2901+-0.6733           31.1957+-0.3004        
   hoist-make-rope                                    5.4417+-0.3225            5.3862+-0.2088          might be 1.0103x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.9212+-1.0276            4.8033+-0.8354          might be 1.0245x faster
   hoist-poly-check-structure                         3.1372+-0.1193            3.0811+-0.0678          might be 1.0182x faster
   imul-double-only                                   4.1161+-0.4524     ?      4.3577+-1.2471        ? might be 1.0587x slower
   imul-int-only                                      6.0278+-0.1157            5.9752+-0.0554        
   imul-mixed                                         4.4622+-0.4638     ?      4.5051+-0.5053        ?
   in-four-cases                                     19.4003+-0.3947     ?     19.6183+-0.9089        ? might be 1.0112x slower
   in-one-case-false                                 11.0588+-0.1841     ?     12.3152+-3.6290        ? might be 1.1136x slower
   in-one-case-true                                  11.6660+-1.7876           11.0403+-0.3978          might be 1.0567x faster
   in-two-cases                                      11.2403+-0.5844     ?     11.3948+-1.0468        ? might be 1.0137x slower
   indexed-properties-in-objects                      3.3480+-0.2576     ?      3.9105+-1.7566        ? might be 1.1680x slower
   infer-closure-const-then-mov-no-inline             3.7755+-1.0363     ?      3.8710+-1.3839        ? might be 1.0253x slower
   infer-closure-const-then-mov                      10.9255+-1.4092           10.3409+-0.1813          might be 1.0565x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     14.4137+-4.0044     ?     14.4311+-3.5778        ?
   infer-closure-const-then-put-to-scope             24.1342+-0.3624     ?     24.1663+-0.3694        ?
   infer-closure-const-then-reenter-no-inline   
                                                     66.1669+-1.4240     ?     66.9810+-4.6599        ? might be 1.0123x slower
   infer-closure-const-then-reenter                  24.4434+-0.3047     ?     25.5297+-4.1058        ? might be 1.0444x slower
   infer-constant-global-property                     4.4652+-1.4413            3.9130+-0.3433          might be 1.1411x faster
   infer-constant-property                            3.2239+-0.3660            3.2112+-0.2941        
   infer-one-time-closure-ten-vars                    8.2723+-0.3534            8.2168+-0.5569        
   infer-one-time-closure-two-vars                    8.0271+-1.1544     ?      9.2097+-4.5738        ? might be 1.1473x slower
   infer-one-time-closure                             7.5496+-0.1920     ?      7.6200+-0.1392        ?
   infer-one-time-deep-closure                       15.7490+-5.9301           13.8420+-0.3179          might be 1.1378x faster
   inline-arguments-access                            4.7004+-0.0755            4.6858+-0.0827        
   inline-arguments-aliased-access                    4.7245+-0.0438            4.6763+-0.0682          might be 1.0103x faster
   inline-arguments-local-escape                      4.7028+-0.0618     ?      4.9263+-0.5514        ? might be 1.0475x slower
   inline-get-scoped-var                              4.0543+-0.5190     ?      4.0809+-0.1973        ?
   inlined-put-by-id-transition                      12.8069+-0.4650     ?     13.0810+-1.0695        ? might be 1.0214x slower
   inlined-put-by-val-with-string-transition   
                                                     58.1575+-3.1184     ?     58.2598+-1.8814        ?
   inlined-put-by-val-with-symbol-transition   
                                                     56.7093+-4.0280     ?     59.0997+-5.1286        ? might be 1.0422x slower
   instanceof-bound                                  23.8514+-2.6936     ?     25.6821+-5.4889        ? might be 1.0768x slower
   int-or-other-abs-then-get-by-val                   5.5740+-0.2454     ?      6.0342+-1.3495        ? might be 1.0826x slower
   int-or-other-abs-zero-then-get-by-val             19.8278+-0.4306     ?     21.1009+-4.1856        ? might be 1.0642x slower
   int-or-other-add-then-get-by-val                   5.8424+-0.4573            5.7867+-0.1118        
   int-or-other-add                                   5.6306+-0.1170     ?      5.7445+-0.2628        ? might be 1.0202x slower
   int-or-other-div-then-get-by-val                   4.4137+-0.0249     ?      4.4532+-0.2007        ?
   int-or-other-max-then-get-by-val                   4.9277+-0.9171            4.6212+-0.1300          might be 1.0663x faster
   int-or-other-min-then-get-by-val                   4.8937+-0.7244            4.6845+-0.0755          might be 1.0447x faster
   int-or-other-mod-then-get-by-val                   4.2890+-0.1520     ?      4.3394+-0.2884        ? might be 1.0117x slower
   int-or-other-mul-then-get-by-val                   4.6657+-1.3131            4.2897+-0.1089          might be 1.0876x faster
   int-or-other-neg-then-get-by-val                   4.9713+-0.2448            4.8538+-0.0456          might be 1.0242x faster
   int-or-other-neg-zero-then-get-by-val             22.9631+-5.7714           20.9240+-3.9854          might be 1.0975x faster
   int-or-other-sub-then-get-by-val                   6.0132+-0.0352            5.9899+-0.0957        
   int-or-other-sub                                   4.5778+-0.1486     ?      4.6680+-0.3254        ? might be 1.0197x slower
   int-overflow-local                                 5.1345+-0.1359            5.1320+-0.0819        
   Int16Array-alloc-long-lived                       61.6947+-2.7677           59.3102+-2.9719          might be 1.0402x faster
   Int16Array-bubble-sort-with-byteLength            23.1073+-1.7147     ?     24.0831+-1.0819        ? might be 1.0422x slower
   Int16Array-bubble-sort                            20.5265+-1.0238           20.1733+-0.1905          might be 1.0175x faster
   Int16Array-load-int-mul                            2.0530+-0.3627            1.9629+-0.0677          might be 1.0459x faster
   Int16Array-to-Int32Array-set                      58.4327+-0.2905     ^     57.4477+-0.3447        ^ definitely 1.0171x faster
   Int32Array-alloc-large                            29.4740+-2.4366           26.2855+-0.8653          might be 1.1213x faster
   Int32Array-alloc-long-lived                       67.9485+-8.0484           66.9293+-5.4537          might be 1.0152x faster
   Int32Array-alloc                                   3.9185+-0.0845     ?      4.6503+-2.4165        ? might be 1.1867x slower
   Int32Array-Int8Array-view-alloc                    7.4820+-0.2059     ?      7.5504+-0.3376        ?
   int52-spill                                        6.2779+-1.1266            5.8351+-0.1684          might be 1.0759x faster
   Int8Array-alloc-long-lived                        54.3631+-3.0843           52.9403+-3.0358          might be 1.0269x faster
   Int8Array-load-with-byteLength                     3.9717+-0.0302     ?      4.0898+-0.2016        ? might be 1.0297x slower
   Int8Array-load                                     4.1197+-0.1703            4.0713+-0.1932          might be 1.0119x faster
   integer-divide                                    13.2458+-2.7231     ?     15.2903+-3.9109        ? might be 1.1544x slower
   integer-modulo                                     2.4343+-0.2108     ?      2.5415+-0.4319        ? might be 1.0441x slower
   is-boolean-fold-tricky                             4.5695+-0.1805            4.5582+-0.2218        
   is-boolean-fold                                    3.5250+-0.0468     ?      4.0130+-1.2173        ? might be 1.1384x slower
   is-function-fold-tricky-internal-function   
                                                     12.2498+-0.3125     ?     13.2418+-3.0284        ? might be 1.0810x slower
   is-function-fold-tricky                            4.5772+-0.0317     ?      5.0398+-1.4789        ? might be 1.1011x slower
   is-function-fold                                   3.6056+-0.0699     ?      4.1495+-1.3818        ? might be 1.1508x slower
   is-number-fold-tricky                              4.9999+-1.3319     ?      5.0075+-1.5379        ?
   is-number-fold                                     3.5710+-0.1262     ?      3.7209+-0.2481        ? might be 1.0420x slower
   is-object-or-null-fold-functions                   3.8123+-0.4375            3.6973+-0.1235          might be 1.0311x faster
   is-object-or-null-fold-less-tricky                 4.6497+-0.1350     ?      5.8677+-2.2489        ? might be 1.2620x slower
   is-object-or-null-fold-tricky                      6.5237+-1.4167            6.1857+-0.2695          might be 1.0546x faster
   is-object-or-null-fold                             4.1453+-1.3455            3.6573+-0.1524          might be 1.1334x faster
   is-object-or-null-trickier-function                5.6162+-1.8196            5.1793+-1.4898          might be 1.0844x faster
   is-object-or-null-trickier-internal-function   
                                                     17.7695+-0.4792     ?     18.5690+-1.7372        ? might be 1.0450x slower
   is-object-or-null-tricky-function                  4.6691+-0.1447     ?      5.0555+-1.3633        ? might be 1.0828x slower
   is-object-or-null-tricky-internal-function   
                                                      9.6163+-1.6158            9.0823+-0.2886          might be 1.0588x faster
   is-string-fold-tricky                              5.3931+-1.7055            4.9414+-1.5379          might be 1.0914x faster
   is-string-fold                                     3.6551+-0.3129            3.5745+-0.1527          might be 1.0225x faster
   is-undefined-fold-tricky                           3.8282+-0.1950     ?      4.0364+-0.3160        ? might be 1.0544x slower
   is-undefined-fold                                  3.6118+-0.0993     ?      3.7197+-0.3045        ? might be 1.0299x slower
   JSONP-negative-0                                   0.3517+-0.0083     ?      0.4917+-0.1425        ? might be 1.3979x slower
   large-int-captured                                 3.7211+-0.2989     ?      4.0057+-0.2720        ? might be 1.0765x slower
   large-int-neg                                     15.4839+-0.3302     ?     15.5735+-0.1806        ?
   large-int                                         16.1016+-4.6627           16.0425+-4.7941        
   load-varargs-elimination                          22.8818+-0.7240     ?     24.2017+-3.8531        ? might be 1.0577x slower
   logical-not-weird-types                            3.8527+-1.3337            3.7756+-1.2873          might be 1.0204x faster
   logical-not                                        4.6882+-0.0387     ?      4.7233+-0.1486        ?
   lots-of-fields                                    13.9108+-2.8854     ?     15.5230+-4.1346        ? might be 1.1159x slower
   make-indexed-storage                               3.6508+-0.4479     ?      3.8781+-0.6549        ? might be 1.0622x slower
   make-rope-cse                                      5.9417+-1.4824            5.8217+-1.4968          might be 1.0206x faster
   map-for-each                                       6.3323+-0.2299     ?      6.3521+-0.1861        ?
   map-for-of                                        20.7924+-1.3359     ?     23.1824+-4.9935        ? might be 1.1149x slower
   marsaglia-larger-ints                             43.6826+-0.2416     ?     43.9312+-0.5426        ?
   marsaglia-osr-entry                               22.5484+-3.3521           22.2520+-3.7891          might be 1.0133x faster
   math-random                                       16.3193+-0.3305     ?     19.4192+-5.7369        ? might be 1.1899x slower
   math-with-out-of-bounds-array-values              33.3232+-0.4660     ?     35.3173+-6.3384        ? might be 1.0598x slower
   max-boolean                                        3.7318+-1.7466            3.7235+-1.7438        
   method-on-number                                  19.5373+-0.7489           18.8823+-0.2969          might be 1.0347x faster
   min-boolean                                        4.3577+-1.4755            3.6487+-1.2842          might be 1.1943x faster
   minus-boolean-double                               3.4778+-0.1002            3.4704+-0.0723        
   minus-boolean                                      3.0880+-0.3372     ?      3.2997+-0.7574        ? might be 1.0686x slower
   misc-strict-eq                                    27.7247+-2.2888           26.5265+-0.6017          might be 1.0452x faster
   mod-boolean-double                                10.2841+-0.1909     ?     10.6675+-1.6069        ? might be 1.0373x slower
   mod-boolean                                        7.6715+-0.1310     ?      7.6923+-0.1934        ?
   mul-boolean-double                                 4.1125+-0.3914     ?      4.5187+-1.2493        ? might be 1.0988x slower
   mul-boolean                                        3.2811+-0.3546     ?      4.1976+-1.7574        ? might be 1.2793x slower
   neg-boolean                                        3.4562+-0.1266     ?      3.5859+-0.1795        ? might be 1.0375x slower
   negative-zero-divide                               0.6310+-0.2011            0.4673+-0.0052          might be 1.3504x faster
   negative-zero-modulo                               0.5446+-0.2039     ?      0.5478+-0.2032        ?
   negative-zero-negate                               0.4681+-0.0243     ?      0.5117+-0.1827        ? might be 1.0930x slower
   nested-function-parsing                           43.3522+-0.7818     ?     45.4155+-4.2638        ? might be 1.0476x slower
   new-array-buffer-dead                            126.4517+-14.4072         126.3300+-4.8367        
   new-array-buffer-push                              8.0037+-0.3652     ?      8.1511+-0.2840        ? might be 1.0184x slower
   new-array-dead                                    12.4084+-0.6225           12.3423+-0.7123        
   new-array-push                                     5.1072+-0.2989            4.9572+-0.1167          might be 1.0303x faster
   no-inline-constructor                             43.8755+-7.3234           42.7833+-7.4295          might be 1.0255x faster
   number-test                                        3.9652+-0.1295     ?      4.0478+-0.1781        ? might be 1.0208x slower
   object-closure-call                                6.5798+-0.3480            6.4698+-0.2910          might be 1.0170x faster
   object-get-own-property-symbols-on-large-array   
                                                      3.6021+-0.1564            3.5439+-0.1304          might be 1.0164x faster
   object-test                                        3.8364+-0.0323     ?      3.9052+-0.1376        ? might be 1.0179x slower
   obvious-sink-pathology-taken                     180.6387+-7.7682          179.2584+-3.4870        
   obvious-sink-pathology                            35.9012+-3.3804     ?     40.1134+-5.8442        ? might be 1.1173x slower
   obviously-elidable-new-object                     32.8003+-3.1714     ?     34.4510+-4.6261        ? might be 1.0503x slower
   plus-boolean-arith                                 2.9675+-0.0267            2.9670+-0.0126        
   plus-boolean-double                                3.5007+-0.1313     ?      3.9582+-1.2665        ? might be 1.1307x slower
   plus-boolean                                       3.1815+-0.1357     ?      3.2459+-0.0333        ? might be 1.0202x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.7944+-1.3374            3.3771+-0.4628          might be 1.1236x faster
   poly-chain-access-different-prototypes             3.1333+-0.0904     ?      3.1396+-0.0954        ?
   poly-chain-access-simpler                          3.8157+-1.3095            3.3300+-0.1167          might be 1.1459x faster
   poly-chain-access                                  3.6393+-1.5275            3.2452+-0.1752          might be 1.1214x faster
   poly-stricteq                                     67.1759+-0.5303           67.0428+-0.4958        
   polymorphic-array-call                             1.7400+-0.3495            1.7088+-0.3440          might be 1.0183x faster
   polymorphic-get-by-id                              2.7263+-0.0705     ?      2.8226+-0.3748        ? might be 1.0353x slower
   polymorphic-put-by-id                             39.9305+-3.3895           38.7471+-0.0811          might be 1.0305x faster
   polymorphic-put-by-val-with-string                39.9471+-0.4803     ?     41.3531+-3.8769        ? might be 1.0352x slower
   polymorphic-put-by-val-with-symbol                41.6265+-4.7801           40.0350+-0.2082          might be 1.0398x faster
   polymorphic-structure                             16.4135+-5.3465     ?     19.2656+-5.1211        ? might be 1.1738x slower
   polyvariant-monomorphic-get-by-id                  6.5341+-0.4675     ?      6.7368+-1.2522        ? might be 1.0310x slower
   proto-getter-access                               12.3158+-0.3316     ?     13.3411+-3.4287        ? might be 1.0833x slower
   prototype-access-with-mutating-prototype           5.6939+-1.0250            5.3767+-0.3946          might be 1.0590x faster
   put-by-id-replace-and-transition                  11.1661+-3.1679            9.9658+-0.2776          might be 1.1204x faster
   put-by-id-slightly-polymorphic                     3.8104+-1.7474            3.7346+-1.0761          might be 1.0203x faster
   put-by-id                                         14.4199+-0.2703     ?     15.6075+-2.6253        ? might be 1.0824x slower
   put-by-val-direct                                  0.5930+-0.2371            0.5372+-0.0371          might be 1.1040x faster
   put-by-val-large-index-blank-indexing-type   
                                                      7.5857+-3.5179            6.5258+-0.1514          might be 1.1624x faster
   put-by-val-machine-int                             3.1400+-0.1385     ?      3.1412+-0.1308        ?
   put-by-val-with-string-replace-and-transition   
                                                     15.5178+-0.2407           15.3887+-0.2680        
   put-by-val-with-string-slightly-polymorphic   
                                                      4.4189+-1.2916            3.6038+-0.1421          might be 1.2262x faster
   put-by-val-with-string                            16.5367+-3.1231           15.1545+-0.8601          might be 1.0912x faster
   put-by-val-with-symbol-replace-and-transition   
                                                     15.8486+-0.7397           15.6663+-0.8234          might be 1.0116x faster
   put-by-val-with-symbol-slightly-polymorphic   
                                                      4.7633+-1.1432            4.4086+-0.0540          might be 1.0805x faster
   put-by-val-with-symbol                            15.6645+-2.2399     ?     15.9658+-2.9785        ? might be 1.0192x slower
   rare-osr-exit-on-local                            15.3105+-0.1956           15.3012+-0.8336        
   raytrace-with-empty-try-catch                      8.0278+-0.3121     ?      8.3785+-1.1792        ? might be 1.0437x slower
   raytrace-with-try-catch                           12.9399+-0.8081           12.6443+-0.4406          might be 1.0234x faster
   register-pressure-from-osr                        22.3047+-2.9728           21.2069+-0.2895          might be 1.0518x faster
   repeat-multi-get-by-offset                        23.5850+-2.6275           22.5500+-0.6201          might be 1.0459x faster
   richards-empty-try-catch                          58.7188+-3.5167           58.3573+-4.4533        
   richards-try-catch                               257.0297+-2.0833     ?    258.0800+-4.5105        ?
   set-for-each                                       6.3321+-1.3459            5.7692+-0.1349          might be 1.0976x faster
   set-for-of                                         9.6815+-0.2603     ?     10.4075+-0.7892        ? might be 1.0750x slower
   setter-prototype                                   5.3187+-0.0225     ?      5.5297+-0.2154        ? might be 1.0397x slower
   setter                                             4.8859+-0.1081     ?      4.9217+-0.2127        ?
   simple-activation-demo                            26.1995+-3.6598           25.2715+-0.6665          might be 1.0367x faster
   simple-getter-access                              18.8245+-0.1341     ?     20.1454+-3.7671        ? might be 1.0702x slower
   simple-poly-call-nested                            6.4501+-0.1688     ?      7.0026+-1.4664        ? might be 1.0857x slower
   simple-poly-call                                   1.8655+-0.3796     ?      1.9112+-0.5588        ? might be 1.0245x slower
   sin-boolean                                       15.6932+-0.5690     ?     19.3079+-4.5070        ? might be 1.2303x slower
   singleton-scope                                   69.4395+-3.9628           68.0745+-0.4618          might be 1.0201x faster
   sink-function                                      7.7264+-0.2739     ?      7.9872+-1.0125        ? might be 1.0338x slower
   sink-huge-activation                              13.6045+-0.5676     ?     15.8838+-6.8740        ? might be 1.1675x slower
   sinkable-new-object-dag                           73.0187+-5.0948     ?     76.2288+-7.2382        ? might be 1.0440x slower
   sinkable-new-object-taken                         52.5903+-2.2579     ?     52.7161+-4.4342        ?
   sinkable-new-object                               35.7292+-5.7231     ?     42.8521+-3.9729        ? might be 1.1994x slower
   slow-array-profile-convergence                     3.1956+-0.1694     ?      3.5724+-0.7134        ? might be 1.1179x slower
   slow-convergence                                   3.2862+-0.1178            3.2042+-0.1611          might be 1.0256x faster
   slow-ternaries                                    21.9963+-0.6626     ?     22.7493+-1.9351        ? might be 1.0342x slower
   sorting-benchmark                                 22.0198+-0.2106     ?     22.1254+-0.3924        ?
   sparse-conditional                                 1.8445+-0.4403            1.8080+-0.4386          might be 1.0202x faster
   splice-to-remove                                  19.1860+-3.0973     ?     20.5285+-3.8682        ? might be 1.0700x slower
   string-char-code-at                               16.4811+-0.1245     ?     17.9492+-3.4444        ? might be 1.0891x slower
   string-concat-object                               3.2568+-1.5310            2.7701+-0.0334          might be 1.1757x faster
   string-concat-pair-object                          2.7024+-0.0437     ?      2.7042+-0.0129        ?
   string-concat-pair-simple                         15.0850+-3.3275           14.9020+-3.2059          might be 1.0123x faster
   string-concat-simple                              15.5145+-3.3192     ?     16.3742+-4.5347        ? might be 1.0554x slower
   string-cons-repeat                                 9.0660+-0.5086     ?     11.0522+-3.9633        ? might be 1.2191x slower
   string-cons-tower                                 10.6822+-3.7585            9.6222+-1.9797          might be 1.1102x faster
   string-equality                                   22.6831+-1.1387     ?     23.8308+-5.1127        ? might be 1.0506x slower
   string-get-by-val-big-char                         8.4782+-0.6503            8.3351+-0.0741          might be 1.0172x faster
   string-get-by-val-out-of-bounds-insane             4.2906+-0.1197     ?      4.4055+-0.1940        ? might be 1.0268x slower
   string-get-by-val-out-of-bounds                    6.7435+-1.4317            6.3022+-0.0313          might be 1.0700x faster
   string-get-by-val                                  4.7283+-1.6192            4.2365+-1.1504          might be 1.1161x faster
   string-hash                                        2.5840+-0.2269            2.5547+-0.2403          might be 1.0114x faster
   string-long-ident-equality                        19.6692+-4.9378           18.2817+-0.6614          might be 1.0759x faster
   string-out-of-bounds                              11.2960+-1.6247           10.7092+-0.2393          might be 1.0548x faster
   string-repeat-arith                               27.5391+-1.9109     ?     28.1527+-3.7653        ? might be 1.0223x slower
   string-rope-with-object                           18.6521+-0.3489     ?     19.1541+-0.6626        ? might be 1.0269x slower
   string-sub                                        42.6467+-0.5155           42.6039+-0.5949        
   string-test                                        4.2801+-1.4018            4.1918+-1.1617          might be 1.0211x faster
   string-var-equality                               38.8900+-4.0058           37.6405+-0.1231          might be 1.0332x faster
   structure-hoist-over-transitions                   3.0292+-0.1974     ?      3.3814+-1.1046        ? might be 1.1163x slower
   substring-concat-weird                            49.4692+-3.8404     ?     51.2240+-4.6757        ? might be 1.0355x slower
   substring-concat                                  54.3423+-5.2059           52.5309+-2.2165          might be 1.0345x faster
   substring                                         58.0132+-2.2126           57.8923+-4.9299        
   switch-char-constant                               3.1810+-0.0443            3.1597+-0.0167        
   switch-char                                        6.6553+-0.2347            6.6276+-0.0368        
   switch-constant                                    7.3944+-0.7979     ?      7.5482+-0.8993        ? might be 1.0208x slower
   switch-string-basic-big-var                       18.9204+-5.3080           17.9753+-2.7495          might be 1.0526x faster
   switch-string-basic-big                           18.0866+-5.4019           17.5972+-5.3051          might be 1.0278x faster
   switch-string-basic-var                           18.3762+-3.1430     ?     21.3322+-4.6701        ? might be 1.1609x slower
   switch-string-basic                               16.5362+-5.1309           16.5222+-5.0624        
   switch-string-big-length-tower-var                23.3515+-3.1379           22.4139+-1.0163          might be 1.0418x faster
   switch-string-length-tower-var                    19.9737+-1.3367           19.2047+-0.2160          might be 1.0400x faster
   switch-string-length-tower                        17.4189+-4.1119           16.1301+-7.7999          might be 1.0799x faster
   switch-string-short                               15.1048+-4.4699     ?     15.4943+-3.8785        ? might be 1.0258x slower
   switch                                            12.0580+-0.6427     ?     12.1437+-0.9935        ?
   symbol-tostringtag                                 4.0046+-0.2030     ?      4.0290+-0.1059        ?
   tear-off-arguments-simple                          3.2958+-0.3581     ?      3.4103+-0.1020        ? might be 1.0347x slower
   tear-off-arguments                                 4.1748+-0.1211     ?      4.3221+-0.5012        ? might be 1.0353x slower
   temporal-structure                                16.0685+-3.3455     ?     18.5682+-4.4115        ? might be 1.1556x slower
   to-int32-boolean                                  17.5165+-0.3005     ?     18.8663+-4.9237        ? might be 1.0771x slower
   try-catch-get-by-val-cloned-arguments              9.3058+-2.3436     ?     11.0297+-4.1756        ? might be 1.1852x slower
   try-catch-get-by-val-direct-arguments              2.6248+-0.0157     !      2.8850+-0.1473        ! definitely 1.0992x slower
   try-catch-get-by-val-scoped-arguments              5.3662+-0.3458     ?      5.3768+-0.1001        ?
   typed-array-get-set-by-val-profiling              22.9412+-0.4525     ?     23.6550+-1.8879        ? might be 1.0311x slower
   undefined-property-access                        362.0250+-8.8046          356.6633+-5.9710          might be 1.0150x faster
   undefined-test                                     4.0873+-0.1296     ?      4.0973+-0.0842        ?
   unprofiled-licm                                   13.1047+-4.2298           10.7418+-0.4653          might be 1.2200x faster
   v8-raytrace-with-empty-try-catch                  64.9070+-1.5935           64.5674+-0.8632        
   v8-raytrace-with-try-catch-high-frequency-throws   
                                                    484.6123+-6.8688     ?    487.7638+-11.8701       ?
   v8-raytrace-with-try-catch                        82.5383+-0.9324     ?     85.5640+-6.8692        ? might be 1.0367x slower
   varargs-call                                      15.0967+-0.3952     ?     16.6340+-5.0543        ? might be 1.1018x slower
   varargs-construct-inline                          26.9190+-3.7036           25.7452+-0.4398          might be 1.0456x faster
   varargs-construct                                 23.8963+-2.9078           23.5998+-3.0649          might be 1.0126x faster
   varargs-inline                                    10.3049+-2.0158     ?     11.3207+-2.6863        ? might be 1.0986x slower
   varargs-strict-mode                               11.5182+-0.3448           11.2585+-0.1278          might be 1.0231x faster
   varargs                                           11.2456+-0.1749     ?     12.6624+-2.4528        ? might be 1.1260x slower
   weird-inlining-const-prop                          2.6307+-0.0553     ?      3.1155+-0.9818        ? might be 1.1843x slower

   <geometric>                                       10.7213+-0.0477     ?     10.8419+-0.0995        ? might be 1.0112x slower

                                                         Baseline                    Mine                                       
Geomean of preferred means:
   <scaled-result>                                   30.6895+-0.0238     ?     30.8440+-0.2743        ? might be 1.0050x slower
Comment 11 Filip Pizlo 2016-01-30 18:58:57 PST
The perf numbers look good!
Comment 12 Yusuke Suzuki 2016-01-30 19:22:37 PST
Comment on attachment 270327 [details]
Patch

yay, so i've added r? ;)
Comment 13 Yusuke Suzuki 2016-01-31 15:05:24 PST
Committed r195938: <http://trac.webkit.org/changeset/195938>