Bug 144152 - mayExit() is wrong about Branch nodes with ObjectOrOtherUse: they can exit.
Summary: mayExit() is wrong about Branch nodes with ObjectOrOtherUse: they can exit.
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Mark Lam
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2015-04-24 10:41 PDT by Mark Lam
Modified: 2015-04-25 08:45 PDT (History)
9 users (show)

See Also:


Attachments
DFG dumps when compiling the problematic function (with inlining). (3.15 MB, text/plain)
2015-04-24 11:07 PDT, Mark Lam
no flags Details
The patch. (4.81 KB, patch)
2015-04-25 02:51 PDT, Mark Lam
no flags Details | Formatted Diff | Diff
patch 2: with style fix. (4.81 KB, patch)
2015-04-25 02:56 PDT, Mark Lam
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Lam 2015-04-24 10:41:29 PDT
With a debug build, going to https://msdn.microsoft.com/en-us/library/ie/2ked96yw(v=vs.94).aspx will trigger an assertion failure because mayExit() lied about Branch nodes not being able to exit.  The code for emitBranch() (and functions it calls) do speculation checks.  So, obviously, it can exit.
Comment 1 Mark Lam 2015-04-24 10:42:17 PDT
<rdar://problem/20679004>
Comment 2 Filip Pizlo 2015-04-24 10:55:14 PDT
I think you are misdiagnosing this bug. Please reread the code in mayExit. It does not claim that Branches don't exit. Quite on the contrary. It claims that they exit if there are type checks to be done. 

Please post the IR that causes the crash. Please do not make Branch an unconditional mayExit as that would be incorrect and would break the DFG peephole branch optimizations.
Comment 3 Mark Lam 2015-04-24 10:57:35 PDT
(In reply to comment #2)
> I think you are misdiagnosing this bug. Please reread the code in mayExit.
> It does not claim that Branches don't exit. Quite on the contrary. It claims
> that they exit if there are type checks to be done. 
> 
> Please post the IR that causes the crash. Please do not make Branch an
> unconditional mayExit as that would be incorrect and would break the DFG
> peephole branch optimizations.

You are right.  I will look further.
Comment 4 Filip Pizlo 2015-04-24 11:00:42 PDT
Please post the IR and the --verboseCompilation=true dump. My guess is that we have already exited prior to the Branch and so the assertion is just wrong. That assertion is pure evil IMO - it has never caught a real bug but it often forces us to perform mental gymnastics to spoon feed it to not fire incorrectly. 

Having more eyes on the IR would help us decide if the assertion should be removed.
Comment 5 Mark Lam 2015-04-24 11:07:29 PDT
Created attachment 251560 [details]
DFG dumps when compiling the problematic function (with inlining).

Dumps attached.
Comment 6 Filip Pizlo 2015-04-24 11:26:57 PDT
OMG the assertion caught its first ever bug!

Branch with an ObjectOrOther child does speculate stronger than just the type check.  We have several options here:

1) Audit the various kinds of Branch use kinds. There should only be a handful and you can see them all in SpeculativeJIT::emitBranch(). For those that can exit for reasons other than a type check, make mayExit return true. This means literally doing something like:

case Branch:
    if (node->child1().useKind() == ObjectOrOtherUse)
        return true;
    break;

2) Make the EdgeMayExit functor assume that all ObjectOrOtherUse's may exit. I think that ObjectUse, StringObjectUse, and StringOrStringObjectUse are similarly shady.

2.1) Do the same thing but ObjectOrOtherUse/ObjectUse only claim to exit if !masqueradesAsUndefinedWatchpointIsStillValid().

3) Change our handling of masquerades-as-undefined to not exit. This would be ideal, but feels longer-term.

To me, (2) feels best. We really only need to prove that Branches don't exit in the case where the child is BooleanUse or something else simple (like Int32Use). More generally, proving that a node doesn't exit is really only useful if the node emits little code. Any node that has a ObjectUse/ObjectOrOtherUse with !masqueradesAsUndefinedWatchpointIsStillValid() will already be emitting a lot of code.  Ditto for StringObjectUse and StringOrStringObjectUse.
Comment 7 Filip Pizlo 2015-04-24 11:28:07 PDT
(In reply to comment #6)
> OMG the assertion caught its first ever bug!
> 
> Branch with an ObjectOrOther child does speculate stronger than just the
> type check.  We have several options here:
> 
> 1) Audit the various kinds of Branch use kinds. There should only be a
> handful and you can see them all in SpeculativeJIT::emitBranch(). For those
> that can exit for reasons other than a type check, make mayExit return true.
> This means literally doing something like:
> 
> case Branch:
>     if (node->child1().useKind() == ObjectOrOtherUse)
>         return true;
>     break;
> 
> 2) Make the EdgeMayExit functor assume that all ObjectOrOtherUse's may exit.
> I think that ObjectUse, StringObjectUse, and StringOrStringObjectUse are
> similarly shady.
> 
> 2.1) Do the same thing but ObjectOrOtherUse/ObjectUse only claim to exit if
> !masqueradesAsUndefinedWatchpointIsStillValid().
> 
> 3) Change our handling of masquerades-as-undefined to not exit. This would
> be ideal, but feels longer-term.
> 
> To me, (2) feels best. We really only need to prove that Branches don't exit
> in the case where the child is BooleanUse or something else simple (like
> Int32Use). More generally, proving that a node doesn't exit is really only
> useful if the node emits little code. Any node that has a
> ObjectUse/ObjectOrOtherUse with
> !masqueradesAsUndefinedWatchpointIsStillValid() will already be emitting a
> lot of code.  Ditto for StringObjectUse and StringOrStringObjectUse.

I'm actually torn between (2) and (2.1).  (2) feels more conservative and I don't think there will be a perf penalty. We can just do that and skip the masqueradesAsUndefinedWatchpointIsStillValid() check.
Comment 8 Mark Lam 2015-04-25 02:51:19 PDT
Created attachment 251627 [details]
The patch.
Comment 9 WebKit Commit Bot 2015-04-25 02:52:32 PDT
Attachment 251627 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGMayExit.cpp:53:  Missing space before ( in switch(  [whitespace/parens] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 10 Mark Lam 2015-04-25 02:54:51 PDT
This patch is perf neutral.  The perf run results says:

                                                           base                      new                                        
SunSpider:
   3d-cube                                            5.5744+-0.0938     ?      5.5799+-0.2517        ?
   3d-morph                                           6.5057+-0.2961     ?      6.6702+-0.6524        ? might be 1.0253x slower
   3d-raytrace                                        7.1182+-0.3422            7.0635+-0.1795        
   access-binary-trees                                2.6935+-0.2784            2.6257+-0.0604          might be 1.0258x faster
   access-fannkuch                                    6.9232+-0.3806     ?      7.1273+-1.2611        ? might be 1.0295x slower
   access-nbody                                       3.2115+-0.1071     ?      3.5020+-0.6780        ? might be 1.0904x slower
   access-nsieve                                      3.4487+-0.1947     ?      3.5392+-0.1777        ? might be 1.0263x slower
   bitops-3bit-bits-in-byte                           2.0422+-0.0355     ?      2.0886+-0.1684        ? might be 1.0227x slower
   bitops-bits-in-byte                                3.7002+-0.0530     ?      3.8979+-0.4750        ? might be 1.0534x slower
   bitops-bitwise-and                                 2.5031+-0.1170     ?      2.5270+-0.1097        ?
   bitops-nsieve-bits                                 4.0560+-0.1870     ?      4.1191+-0.4165        ? might be 1.0156x slower
   controlflow-recursive                              2.6352+-0.0929            2.5900+-0.0129          might be 1.0175x faster
   crypto-aes                                         4.9140+-0.1871     ?      5.3190+-2.3430        ? might be 1.0824x slower
   crypto-md5                                         2.7933+-0.0445     ?      2.8002+-0.0805        ?
   crypto-sha1                                        3.4106+-0.3270            2.9371+-0.2416          might be 1.1612x faster
   date-format-tofte                                 10.8882+-0.4240           10.5993+-0.2800          might be 1.0273x faster
   date-format-xparb                                  7.1276+-1.2001            6.8905+-1.1975          might be 1.0344x faster
   math-cordic                                        3.5905+-0.0265     ?      3.6268+-0.1243        ? might be 1.0101x slower
   math-partial-sums                                  6.2017+-0.3202     ?      6.2298+-0.4599        ?
   math-spectral-norm                                 2.4942+-0.0258     ?      2.5179+-0.1042        ?
   regexp-dna                                         8.2469+-0.2962     ?      9.3937+-4.7090        ? might be 1.1390x slower
   string-base64                                      5.5818+-1.3511            5.2335+-0.0952          might be 1.0665x faster
   string-fasta                                       7.5832+-0.1146     ?      7.8657+-1.1027        ? might be 1.0372x slower
   string-tagcloud                                   10.9545+-0.2337     ?     12.4018+-2.3075        ? might be 1.1321x slower
   string-unpack-code                                22.9037+-1.0580           22.6922+-0.6402        
   string-validate-input                              5.3069+-0.1141     ?      5.6090+-0.2465        ? might be 1.0569x slower

   <arithmetic>                                       5.8619+-0.1243     ?      5.9787+-0.3113        ? might be 1.0199x slower

                                                           base                      new                                        
LongSpider:
   3d-cube                                          971.0438+-17.7571    ?    975.9065+-6.4847        ?
   3d-morph                                        1663.1142+-12.6061    ?   1664.9946+-18.7981       ?
   3d-raytrace                                      861.9977+-28.1014         851.3156+-15.0090         might be 1.0125x faster
   access-binary-trees                             1170.0165+-24.5854    ?   1174.5482+-22.4636       ?
   access-fannkuch                                  362.6915+-5.8621          359.8892+-12.6492       
   access-nbody                                     698.5020+-8.0206          698.1550+-12.8504       
   access-nsieve                                    941.8970+-10.2948    ?    942.5272+-14.3738       ?
   bitops-3bit-bits-in-byte                          55.5789+-2.3915     ?     56.2487+-4.7931        ? might be 1.0121x slower
   bitops-bits-in-byte                              102.7449+-4.2441          100.9889+-4.2265          might be 1.0174x faster
   bitops-nsieve-bits                               808.2358+-14.0805    ?    814.8433+-4.3613        ?
   controlflow-recursive                            546.5628+-5.2303     ?    547.0485+-4.1435        ?
   crypto-aes                                       781.1022+-18.2853    ?    788.7668+-13.3777       ?
   crypto-md5                                       666.2792+-13.2764         653.1055+-10.4396         might be 1.0202x faster
   crypto-sha1                                      777.9984+-61.1024         756.2739+-3.3884          might be 1.0287x faster
   date-format-tofte                                860.1874+-17.5421         857.6820+-31.6140       
   date-format-xparb                                877.9813+-40.9474    ?    900.4543+-11.2052       ? might be 1.0256x slower
   math-cordic                                      686.8618+-8.0941          685.7507+-5.6285        
   math-partial-sums                                611.2769+-9.5644          607.5903+-9.4929        
   math-spectral-norm                               941.8383+-8.9130     ?    943.9383+-13.4638       ?
   string-base64                                    445.9282+-16.0044         429.2496+-16.0416         might be 1.0389x faster
   string-fasta                                     500.7594+-14.7213         488.3538+-5.7583          might be 1.0254x faster
   string-tagcloud                                  252.0788+-14.1826         248.0712+-4.6016          might be 1.0162x faster

   <geometric>                                      581.6810+-5.1047          578.8757+-4.5152          might be 1.0048x faster

                                                           base                      new                                        
V8Spider:
   crypto                                            71.6376+-8.4623           67.5612+-2.5843          might be 1.0603x faster
   deltablue                                        118.8192+-6.8454          113.1227+-6.6359          might be 1.0504x faster
   earley-boyer                                      53.5320+-3.2764           52.1106+-5.7698          might be 1.0273x faster
   raytrace                                          49.0752+-8.9162           48.0114+-6.4923          might be 1.0222x faster
   regexp                                            97.0585+-8.5454           96.9154+-12.2905       
   richards                                          96.5822+-4.7923           95.1752+-7.1797          might be 1.0148x faster
   splay                                             46.7027+-4.0966           45.4249+-1.3525          might be 1.0281x faster

   <geometric>                                       71.6781+-4.0696           69.6499+-2.0030          might be 1.0291x faster

                                                           base                      new                                        
Octane:
   encrypt                                           0.26881+-0.00212    ?     0.27116+-0.00622       ?
   decrypt                                           4.64231+-0.09254    ?     4.65493+-0.11568       ?
   deltablue                                x2       0.23349+-0.00874          0.23002+-0.00383         might be 1.0151x faster
   earley                                            0.60247+-0.00603    ?     0.60758+-0.01426       ?
   boyer                                             7.79092+-0.07514    ?     7.88958+-0.12683       ? might be 1.0127x slower
   navier-stokes                            x2       5.62716+-0.04486    ?     5.63644+-0.04662       ?
   raytrace                                 x2       1.52283+-0.05740    ?     1.52405+-0.06478       ?
   richards                                 x2       0.12640+-0.00416          0.12461+-0.00041         might be 1.0144x faster
   splay                                    x2       0.45640+-0.01388          0.45351+-0.00461       
   regexp                                   x2      36.69367+-0.56604    ?    36.80426+-0.49835       ?
   pdfjs                                    x2      50.59906+-0.94141         50.52350+-0.64664       
   mandreel                                 x2      63.70522+-0.50415    ?    63.78259+-0.79146       ?
   gbemu                                    x2      51.82317+-4.68045    ?    55.60900+-5.72758       ? might be 1.0731x slower
   closure                                           0.62366+-0.00568          0.61673+-0.00468         might be 1.0112x faster
   jquery                                            7.93029+-0.07163          7.90925+-0.06237       
   box2d                                    x2      14.45610+-0.19929         14.30350+-0.31181         might be 1.0107x faster
   zlib                                     x2     450.41317+-8.88983        447.19714+-2.30432       
   typescript                               x2     935.26251+-14.64051   ?   937.91345+-10.47528      ?

   <geometric>                                       7.77965+-0.05082    ?     7.79750+-0.06009       ? might be 1.0023x slower

                                                           base                      new                                        
Kraken:
   ai-astar                                          303.146+-3.540            293.426+-6.870           might be 1.0331x faster
   audio-beat-detection                              121.667+-2.477      ?     122.361+-2.539         ?
   audio-dft                                         196.296+-15.214           191.906+-2.928           might be 1.0229x faster
   audio-fft                                          98.054+-3.797             95.606+-6.141           might be 1.0256x faster
   audio-oscillator                                  227.638+-8.124      ?     229.116+-11.310        ?
   imaging-darkroom                                  116.693+-3.219            116.693+-4.138         
   imaging-desaturate                                 76.280+-0.775      ?      76.492+-1.409         ?
   imaging-gaussian-blur                             126.757+-6.290      ?     128.085+-4.582         ? might be 1.0105x slower
   json-parse-financial                               53.009+-4.621             52.471+-4.632           might be 1.0103x faster
   json-stringify-tinderbox                           62.667+-0.478      ?      64.405+-3.720         ? might be 1.0277x slower
   stanford-crypto-aes                                73.469+-1.706      ?      73.775+-2.207         ?
   stanford-crypto-ccm                                65.743+-9.618             64.026+-8.703           might be 1.0268x faster
   stanford-crypto-pbkdf2                            188.585+-7.484      ?     191.315+-5.965         ? might be 1.0145x slower
   stanford-crypto-sha256-iterative                   62.165+-4.521      ?      62.335+-4.304         ?

   <arithmetic>                                      126.584+-2.205            125.858+-1.017           might be 1.0058x faster

                                                           base                      new                                        
JSRegress:
   abs-boolean                                        3.3495+-0.1212     ?      3.3638+-0.1032        ?
   adapt-to-double-divide                            18.5046+-1.7732           17.7758+-0.3186          might be 1.0410x faster
   aliased-arguments-getbyval                         1.4459+-0.0838            1.3906+-0.0287          might be 1.0398x faster
   allocate-big-object                                3.5703+-1.0774            3.2059+-0.3684          might be 1.1137x faster
   arguments-named-and-reflective                    13.9228+-0.4114     ?     15.5793+-3.4853        ? might be 1.1190x slower
   arguments-out-of-bounds                           16.7498+-0.7581     ?     17.0828+-2.2018        ? might be 1.0199x slower
   arguments-strict-mode                             12.1715+-0.7225           11.7308+-0.4869          might be 1.0376x faster
   arguments                                         11.3845+-1.6005           10.7834+-0.3398          might be 1.0557x faster
   arity-mismatch-inlining                            1.0561+-0.1074            1.0042+-0.0402          might be 1.0517x faster
   array-access-polymorphic-structure                 7.6504+-0.3794            7.3070+-0.3399          might be 1.0470x faster
   array-nonarray-polymorhpic-access                 45.7257+-5.6128     ?     47.0675+-3.4574        ? might be 1.0293x slower
   array-prototype-every                            100.9581+-5.7357     ?    103.5298+-7.9702        ? might be 1.0255x slower
   array-prototype-forEach                          100.5665+-3.3922     ?    101.1807+-8.9240        ?
   array-prototype-map                              109.9150+-8.0850          108.3725+-4.0641          might be 1.0142x faster
   array-prototype-some                             102.4027+-6.0425     ?    103.5153+-4.4138        ? might be 1.0109x slower
   array-splice-contiguous                           45.9628+-0.8004     ?     46.7455+-4.3461        ? might be 1.0170x slower
   array-with-double-add                              4.5463+-0.1744     ?      4.5948+-0.1311        ? might be 1.0107x slower
   array-with-double-increment                        4.0178+-0.0829            3.9598+-0.1460          might be 1.0146x faster
   array-with-double-mul-add                          5.5212+-0.3386            5.4395+-0.1404          might be 1.0150x faster
   array-with-double-sum                              3.6960+-0.1729            3.6430+-0.1491          might be 1.0146x faster
   array-with-int32-add-sub                           7.8813+-0.0484     ?      8.0610+-0.1602        ? might be 1.0228x slower
   array-with-int32-or-double-sum                     3.6832+-0.1133     ?      3.7768+-0.1947        ? might be 1.0254x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     41.8669+-5.5850     ?     44.2925+-4.9541        ? might be 1.0579x slower
   ArrayBuffer-DataView-alloc-long-lived             19.1470+-6.2876           15.9680+-0.2714          might be 1.1991x faster
   ArrayBuffer-Int32Array-byteOffset                  4.7105+-0.1364     ?      4.8826+-0.2875        ? might be 1.0365x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     42.8318+-4.3577     ?     43.0060+-10.3531       ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     31.3275+-14.4176          26.6835+-5.1324          might be 1.1740x faster
   ArrayBuffer-Int8Array-alloc-long-lived            16.8715+-4.1890           16.6125+-4.6521          might be 1.0156x faster
   ArrayBuffer-Int8Array-alloc                       14.0165+-4.5737     ?     14.2581+-4.4361        ? might be 1.0172x slower
   asmjs_bool_bug                                     8.6384+-1.4090            8.5137+-1.0644          might be 1.0147x faster
   assign-custom-setter-polymorphic                   3.3917+-0.1705     ?      3.5350+-0.1548        ? might be 1.0423x slower
   assign-custom-setter                               5.2039+-1.3108            4.7607+-0.2248          might be 1.0931x faster
   basic-set                                         10.3416+-0.6428           10.0400+-0.2188          might be 1.0300x faster
   big-int-mul                                        4.7112+-0.0987            4.7048+-0.0796        
   boolean-test                                       3.5606+-0.1001     ?      3.6159+-0.1834        ? might be 1.0155x slower
   branch-fold                                        4.5087+-0.2300     ?      4.8217+-1.0703        ? might be 1.0694x slower
   by-val-generic                                     8.6940+-0.2919     ?      8.8036+-0.1182        ? might be 1.0126x slower
   call-spread-apply                                 34.4985+-3.6064           32.4900+-1.4697          might be 1.0618x faster
   call-spread-call                                  27.9999+-4.3327           27.9131+-4.3388        
   captured-assignments                               0.6017+-0.2569            0.5159+-0.0602          might be 1.1662x faster
   cast-int-to-double                                 5.9158+-0.1780            5.8392+-0.0614          might be 1.0131x faster
   cell-argument                                      9.7680+-2.1805            9.3375+-0.5411          might be 1.0461x faster
   cfg-simplify                                       3.3945+-0.1981            3.3539+-0.0928          might be 1.0121x faster
   chain-getter-access                               11.3349+-0.4434     ?     11.4915+-0.4774        ? might be 1.0138x slower
   cmpeq-obj-to-obj-other                            12.8413+-1.7038     ?     13.7186+-1.2374        ? might be 1.0683x slower
   constant-test                                      5.4886+-0.0864     ?      5.5255+-0.0902        ?
   DataView-custom-properties                        46.7460+-7.7712     ?     46.8822+-3.2496        ?
   delay-tear-off-arguments-strictmode               14.9829+-0.2448     ?     15.1779+-0.3217        ? might be 1.0130x slower
   deltablue-varargs                                226.7807+-5.9585     ?    226.8129+-3.9104        ?
   destructuring-arguments                           19.9772+-4.0960     ?     20.0242+-3.4809        ?
   destructuring-swap                                 5.7095+-0.0530            5.6942+-0.1331        
   direct-arguments-getbyval                          1.4800+-0.1019            1.3868+-0.0573          might be 1.0672x faster
   div-boolean-double                                 5.7261+-0.0232            5.7238+-0.0375        
   div-boolean                                        8.4479+-0.1662     ?      9.1962+-2.1460        ? might be 1.0886x slower
   double-get-by-val-out-of-bounds                    5.2172+-0.4250            5.0623+-0.0663          might be 1.0306x faster
   double-pollution-getbyval                          9.5650+-0.2617            9.5537+-0.3385        
   double-pollution-putbyoffset                       5.0538+-0.1290     ?      5.6697+-1.9907        ? might be 1.1219x slower
   double-to-int32-typed-array-no-inline              2.5687+-0.0525     ?      2.6163+-0.1932        ? might be 1.0185x slower
   double-to-int32-typed-array                        2.2666+-0.0197            2.2647+-0.0504        
   double-to-uint32-typed-array-no-inline             2.7302+-0.2209     ?      2.8376+-0.6799        ? might be 1.0393x slower
   double-to-uint32-typed-array                       2.6046+-0.8432            2.4600+-0.1607          might be 1.0588x faster
   elidable-new-object-dag                           53.4572+-1.4206           51.1650+-2.9291          might be 1.0448x faster
   elidable-new-object-roflcopter                    54.8994+-5.6758           51.3207+-2.9789          might be 1.0697x faster
   elidable-new-object-then-call                     45.5085+-3.4328     ?     47.6672+-4.8181        ? might be 1.0474x slower
   elidable-new-object-tree                          52.8203+-2.9507           52.5881+-1.8541        
   empty-string-plus-int                              7.1165+-1.6014     ?      8.0035+-3.9720        ? might be 1.1246x slower
   emscripten-cube2hash                              47.1104+-5.6470           45.7471+-5.1022          might be 1.0298x faster
   exit-length-on-plain-object                       16.2368+-3.6358           15.6689+-1.3711          might be 1.0362x faster
   external-arguments-getbyval                        1.5347+-0.1008     ?      1.7554+-0.6242        ? might be 1.1439x slower
   external-arguments-putbyval                        2.7225+-0.0892     ?      2.9777+-0.9112        ? might be 1.0938x slower
   fixed-typed-array-storage-var-index                1.5070+-0.1500            1.4627+-0.0227          might be 1.0303x faster
   fixed-typed-array-storage                          1.1943+-0.4671            1.1910+-0.3308        
   Float32Array-matrix-mult                           6.3909+-2.4733            4.8860+-0.1732          might be 1.3080x faster
   Float32Array-to-Float64Array-set                  62.4678+-5.7222           59.9715+-2.3561          might be 1.0416x faster
   Float64Array-alloc-long-lived                     81.3341+-4.3452           81.1977+-3.1402        
   Float64Array-to-Int16Array-set                    75.3633+-3.5009           74.2695+-4.3010          might be 1.0147x faster
   fold-double-to-int                                18.3569+-2.5640           17.3353+-1.7020          might be 1.0589x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.3891+-2.2435     ?     13.5881+-1.6980        ? might be 1.1931x slower
   fold-get-by-id-to-multi-get-by-offset             11.0608+-1.1143     ?     11.1874+-0.2518        ? might be 1.0115x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.6075+-2.1367            9.8671+-1.1333          might be 1.0750x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.4624+-4.0918           10.4515+-3.7803        
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.5578+-1.6144     ?      9.9772+-2.2098        ? might be 1.0439x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      6.9205+-1.8307     ?      7.5939+-1.4031        ? might be 1.0973x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     10.3445+-0.8835           10.3316+-0.6978        
   fold-put-by-id-to-multi-put-by-offset             10.2908+-0.6833     ?     10.5958+-0.6209        ? might be 1.0296x slower
   fold-put-structure                                 6.2587+-1.5094            6.1311+-1.2977          might be 1.0208x faster
   for-of-iterate-array-entries                       5.4938+-0.3549            5.3744+-0.4705          might be 1.0222x faster
   for-of-iterate-array-keys                          4.3080+-0.1777     ?      4.3272+-0.3400        ?
   for-of-iterate-array-values                        4.2610+-0.1260     ?      4.2657+-0.0735        ?
   fround                                            21.4086+-2.2162     ?     21.5772+-1.9072        ?
   ftl-library-inlining-dataview                     91.0552+-10.6165          88.9220+-7.9812          might be 1.0240x faster
   ftl-library-inlining                             119.9620+-6.5216          116.9207+-1.0092          might be 1.0260x faster
   function-dot-apply                                 3.0538+-1.0785            2.5964+-0.1090          might be 1.1762x faster
   function-test                                      3.8354+-0.3766            3.7343+-0.1384          might be 1.0271x faster
   function-with-eval                               120.8630+-11.1621         115.3810+-4.6636          might be 1.0475x faster
   gcse-poly-get-less-obvious                        22.3264+-4.7959           19.7748+-0.7155          might be 1.1290x faster
   gcse-poly-get                                     24.9763+-3.6901           23.3394+-3.9625          might be 1.0701x faster
   gcse                                               5.1766+-0.1831            5.1190+-0.0267          might be 1.0112x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.0497+-0.1435     ?      3.1007+-0.0656        ? might be 1.0167x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      7.2515+-0.0237     ?      7.4920+-0.3529        ? might be 1.0332x slower
   get-by-id-chain-from-try-block                     9.9276+-4.7132            8.5895+-4.3900          might be 1.1558x faster
   get-by-id-check-structure-elimination              5.8749+-0.1966     ?      5.9370+-0.1408        ? might be 1.0106x slower
   get-by-id-proto-or-self                           19.1318+-0.8115           18.8389+-0.3415          might be 1.0155x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.4508+-0.4076            3.3878+-0.1194          might be 1.0186x faster
   get-by-id-self-or-proto                           19.6078+-1.9682           19.1702+-0.5592          might be 1.0228x faster
   get-by-val-out-of-bounds                           5.3259+-1.0870            4.9758+-0.3157          might be 1.0704x faster
   get_callee_monomorphic                             3.1841+-0.0647     ?      3.1880+-0.0885        ?
   get_callee_polymorphic                             4.9995+-1.7478            4.7605+-1.5342          might be 1.0502x faster
   getter-no-activation                               5.8760+-0.4866     ?      6.1040+-0.6527        ? might be 1.0388x slower
   getter-richards                                  143.3148+-11.4646         140.9787+-13.2188         might be 1.0166x faster
   getter                                             6.2323+-0.3755     ?      6.5430+-0.6719        ? might be 1.0499x slower
   global-var-const-infer-fire-from-opt               1.1073+-0.2182            1.0259+-0.1548          might be 1.0793x faster
   global-var-const-infer                             0.8629+-0.1324     ?      0.9596+-0.2327        ? might be 1.1121x slower
   HashMap-put-get-iterate-keys                      30.4113+-0.2109     ?     31.2351+-1.6099        ? might be 1.0271x slower
   HashMap-put-get-iterate                           31.2881+-2.7729     ?     31.6324+-4.7909        ? might be 1.0110x slower
   HashMap-string-put-get-iterate                    31.2709+-1.6492           30.9868+-1.4887        
   hoist-make-rope                                   12.8431+-2.8856     ?     14.1974+-1.2655        ? might be 1.1055x slower
   hoist-poly-check-structure-effectful-loop   
                                                      6.1779+-0.2740            6.0422+-0.1474          might be 1.0225x faster
   hoist-poly-check-structure                         4.1469+-0.1063            4.1277+-0.1519        
   imul-double-only                                   9.1133+-0.2190     ?      9.1992+-0.3510        ?
   imul-int-only                                     11.8768+-0.8389           11.8323+-0.6986        
   imul-mixed                                         8.7748+-0.3177            8.4963+-0.3356          might be 1.0328x faster
   in-four-cases                                     22.3262+-0.6947     ?     22.8437+-0.4655        ? might be 1.0232x slower
   in-one-case-false                                 11.7299+-0.3557     ?     11.8887+-0.6920        ? might be 1.0135x slower
   in-one-case-true                                  11.6354+-0.0956     ?     11.6945+-0.3026        ?
   in-two-cases                                      11.9034+-0.0974     ?     12.2146+-0.8608        ? might be 1.0261x slower
   indexed-properties-in-objects                      3.3652+-0.3155     ?      3.7103+-1.2743        ? might be 1.1025x slower
   infer-closure-const-then-mov-no-inline             4.8565+-0.6212            4.8050+-0.4642          might be 1.0107x faster
   infer-closure-const-then-mov                      22.5591+-1.7538           21.9780+-0.4551          might be 1.0264x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     15.0995+-0.3525           14.8437+-0.4797          might be 1.0172x faster
   infer-closure-const-then-put-to-scope             25.2330+-0.7454           24.8722+-0.5417          might be 1.0145x faster
   infer-closure-const-then-reenter-no-inline   
                                                     72.3951+-4.8118     ?     73.5869+-13.6678       ? might be 1.0165x slower
   infer-closure-const-then-reenter                  25.6877+-1.9906     ?     26.7811+-2.9478        ? might be 1.0426x slower
   infer-constant-global-property                    34.1172+-4.0825           32.4689+-0.0994          might be 1.0508x faster
   infer-constant-property                            3.2595+-0.2679     ?      3.2924+-0.5387        ? might be 1.0101x slower
   infer-one-time-closure-ten-vars                   13.2575+-0.3497     ?     13.7787+-0.7665        ? might be 1.0393x slower
   infer-one-time-closure-two-vars                   14.6227+-4.3244           13.3996+-0.7255          might be 1.0913x faster
   infer-one-time-closure                            13.5162+-1.9795     ?     14.1323+-4.4189        ? might be 1.0456x slower
   infer-one-time-deep-closure                       23.6788+-3.4881           23.0211+-1.3233          might be 1.0286x faster
   inline-arguments-access                            4.9923+-0.1648            4.9871+-0.1498        
   inline-arguments-aliased-access                    4.9995+-0.2667     ?      5.0696+-0.2672        ? might be 1.0140x slower
   inline-arguments-local-escape                      5.1116+-0.3773            5.0638+-0.2946        
   inline-get-scoped-var                              5.5007+-0.0894     ?      5.5807+-0.1914        ? might be 1.0145x slower
   inlined-put-by-id-transition                      12.8026+-0.4323     ?     13.6588+-1.9190        ? might be 1.0669x slower
   int-or-other-abs-then-get-by-val                   5.7339+-0.1596     ?      5.7413+-0.1217        ?
   int-or-other-abs-zero-then-get-by-val             20.3388+-0.6333           20.2909+-0.3237        
   int-or-other-add-then-get-by-val                   6.1177+-0.0889     ?      6.2474+-0.3296        ? might be 1.0212x slower
   int-or-other-add                                   5.9003+-0.0238     ?      5.9234+-0.0331        ?
   int-or-other-div-then-get-by-val                   5.0118+-0.1780            4.9431+-0.0315          might be 1.0139x faster
   int-or-other-max-then-get-by-val                   5.0602+-0.0644     ?      5.0773+-0.0195        ?
   int-or-other-min-then-get-by-val                   5.1218+-0.1257     ?      5.2264+-0.1452        ? might be 1.0204x slower
   int-or-other-mod-then-get-by-val                   4.6023+-0.1118     ?      4.6981+-0.4804        ? might be 1.0208x slower
   int-or-other-mul-then-get-by-val                   4.5869+-0.0983            4.5630+-0.0693        
   int-or-other-neg-then-get-by-val                   5.3287+-0.1641     ?      5.4020+-0.2213        ? might be 1.0137x slower
   int-or-other-neg-zero-then-get-by-val             21.6185+-2.3656     ?     21.7750+-2.7900        ?
   int-or-other-sub-then-get-by-val                   6.1179+-0.0567            6.1149+-0.0369        
   int-or-other-sub                                   4.3410+-0.1350            4.3052+-0.0476        
   int-overflow-local                                 6.4857+-3.3048            5.4675+-0.1066          might be 1.1862x faster
   Int16Array-alloc-long-lived                       63.2897+-4.4786     ?     63.6017+-5.6967        ?
   Int16Array-bubble-sort-with-byteLength            24.5015+-1.8119     ?     24.5467+-1.7857        ?
   Int16Array-bubble-sort                            24.3032+-0.6936     ?     24.7411+-0.8525        ? might be 1.0180x slower
   Int16Array-load-int-mul                            2.2336+-0.8094            1.8538+-0.0849          might be 1.2049x faster
   Int16Array-to-Int32Array-set                      58.3881+-2.3950     ?     62.0777+-7.4069        ? might be 1.0632x slower
   Int32Array-alloc-large                            25.1340+-1.0102           24.6895+-1.6242          might be 1.0180x faster
   Int32Array-alloc-long-lived                       66.3721+-3.4630     ?     66.4320+-3.7880        ?
   Int32Array-alloc                                   3.8952+-0.1308     ?      3.9327+-0.0662        ?
   Int32Array-Int8Array-view-alloc                    9.7680+-3.9395     ?      9.9150+-2.9328        ? might be 1.0151x slower
   int52-spill                                        7.2799+-0.2004     ?      7.5668+-0.4863        ? might be 1.0394x slower
   Int8Array-alloc-long-lived                        59.0584+-3.0011           53.8123+-2.5617          might be 1.0975x faster
   Int8Array-load-with-byteLength                     4.1168+-0.1109     ?      4.1537+-0.1375        ?
   Int8Array-load                                     4.0966+-0.1335     ?      4.2084+-0.2129        ? might be 1.0273x slower
   integer-divide                                    12.6866+-0.2527           12.5814+-0.1578        
   integer-modulo                                     2.3652+-0.1149     ?      2.6626+-1.0545        ? might be 1.1257x slower
   large-int-captured                                 5.1250+-0.0405     ?      5.3151+-0.4370        ? might be 1.0371x slower
   large-int-neg                                     21.0125+-4.9805           19.3167+-2.0608          might be 1.0878x faster
   large-int                                         16.5065+-0.1139     ?     17.6221+-2.3772        ? might be 1.0676x slower
   logical-not                                        5.1554+-0.0512     ?      5.2585+-0.3499        ? might be 1.0200x slower
   lots-of-fields                                    15.1877+-1.3238     ?     15.5803+-3.8601        ? might be 1.0258x slower
   make-indexed-storage                               3.6744+-0.4964     ?      3.7665+-0.6590        ? might be 1.0251x slower
   make-rope-cse                                      5.3613+-1.4383     ?      5.9384+-1.3954        ? might be 1.1076x slower
   marsaglia-larger-ints                             53.9083+-9.2579           50.3105+-4.4346          might be 1.0715x faster
   marsaglia-osr-entry                               26.6439+-1.3408           26.3022+-1.2910          might be 1.0130x faster
   max-boolean                                        3.1157+-0.0340     ?      3.3742+-0.5610        ? might be 1.0830x slower
   method-on-number                                  19.6786+-1.5135           19.5500+-0.4535        
   min-boolean                                        3.2153+-0.3213            3.1874+-0.1274        
   minus-boolean-double                               3.5715+-0.1884            3.4512+-0.1148          might be 1.0349x faster
   minus-boolean                                      3.0530+-0.1193     ?      3.1282+-0.4953        ? might be 1.0246x slower
   misc-strict-eq                                    44.8213+-5.8751           44.1564+-4.2046          might be 1.0151x faster
   mod-boolean-double                                12.6105+-1.3687           12.3915+-1.6544          might be 1.0177x faster
   mod-boolean                                        8.5632+-0.1848     ?      8.6208+-0.1127        ?
   mul-boolean-double                                 4.3758+-0.7462            4.0585+-0.2026          might be 1.0782x faster
   mul-boolean                                        3.2607+-0.1367            3.2255+-0.2842          might be 1.0109x faster
   neg-boolean                                        3.4796+-0.0783     ?      3.7365+-0.4560        ? might be 1.0738x slower
   negative-zero-divide                               0.4915+-0.2880            0.3766+-0.0292          might be 1.3048x faster
   negative-zero-modulo                               0.4140+-0.0609            0.4100+-0.0825        
   negative-zero-negate                               0.4819+-0.2733            0.3880+-0.0416          might be 1.2421x faster
   nested-function-parsing                           46.6644+-4.4883           46.4218+-4.2515        
   new-array-buffer-dead                            126.3491+-2.7903     ?    127.1940+-2.8138        ?
   new-array-buffer-push                              8.7108+-3.3299            7.4695+-0.7278          might be 1.1662x faster
   new-array-dead                                    20.8766+-3.8730     ?     21.2707+-3.8358        ? might be 1.0189x slower
   new-array-push                                     4.7336+-0.1035     ?      4.8060+-0.3185        ? might be 1.0153x slower
   number-test                                        3.5052+-0.1030     ?      3.6277+-0.3227        ? might be 1.0349x slower
   object-closure-call                                7.6021+-0.0471     ?      7.6995+-0.2880        ? might be 1.0128x slower
   object-test                                        3.7562+-0.2438     ?      3.7783+-0.5821        ?
   obvious-sink-pathology-taken                     156.2908+-7.8848          151.9878+-5.5702          might be 1.0283x faster
   obvious-sink-pathology                           148.5320+-4.1411     ?    149.8520+-9.8523        ?
   obviously-elidable-new-object                     42.2385+-7.6543     ?     42.3633+-3.4488        ?
   plus-boolean-arith                                 3.0662+-0.1072     ?      3.1320+-0.0690        ? might be 1.0215x slower
   plus-boolean-double                                3.4421+-0.0832     ?      3.5538+-0.1133        ? might be 1.0324x slower
   plus-boolean                                       3.2444+-0.0657            3.2255+-0.1456        
   poly-chain-access-different-prototypes-simple   
                                                      3.6384+-0.1363            3.5882+-0.1334          might be 1.0140x faster
   poly-chain-access-different-prototypes             3.1343+-0.0967            3.0807+-0.0756          might be 1.0174x faster
   poly-chain-access-simpler                          3.6863+-0.2855            3.5027+-0.0848          might be 1.0524x faster
   poly-chain-access                                  3.2339+-0.3669            3.0527+-0.1076          might be 1.0593x faster
   poly-stricteq                                     69.8455+-4.7935     ?     70.3874+-5.7850        ?
   polymorphic-array-call                             1.4412+-0.0443     ?      1.5511+-0.2279        ? might be 1.0763x slower
   polymorphic-get-by-id                              3.5663+-0.2187     ?      3.7795+-0.3365        ? might be 1.0598x slower
   polymorphic-put-by-id                             32.6957+-1.4909     ?     35.1066+-4.4243        ? might be 1.0737x slower
   polymorphic-structure                             23.5688+-3.7648     ?     24.4536+-4.7466        ? might be 1.0375x slower
   polyvariant-monomorphic-get-by-id                  9.8478+-0.2383            9.8447+-0.1873        
   proto-getter-access                               12.3377+-2.9120           11.3419+-0.0619          might be 1.0878x faster
   put-by-id-replace-and-transition                   9.9541+-0.3462     ?     10.0915+-1.2458        ? might be 1.0138x slower
   put-by-id-slightly-polymorphic                     3.2698+-0.1104            3.1915+-0.0910          might be 1.0245x faster
   put-by-id                                         14.5277+-1.0203           14.3358+-0.4982          might be 1.0134x faster
   put-by-val-direct                                  0.6375+-0.3523            0.5090+-0.0177          might be 1.2525x faster
   put-by-val-large-index-blank-indexing-type   
                                                      6.5759+-0.5202     ?      6.6915+-0.1042        ? might be 1.0176x slower
   put-by-val-machine-int                             3.2458+-0.1422            3.1996+-0.0719          might be 1.0144x faster
   rare-osr-exit-on-local                            16.8737+-0.2227     ?     17.2325+-0.3481        ? might be 1.0213x slower
   register-pressure-from-osr                        23.3458+-0.7200     ?     23.8484+-1.2247        ? might be 1.0215x slower
   setter                                             6.6678+-0.8085            6.5620+-0.9779          might be 1.0161x faster
   simple-activation-demo                            28.0462+-1.9510     ?     28.7716+-4.4528        ? might be 1.0259x slower
   simple-getter-access                              15.9877+-1.8565           15.6129+-0.4312          might be 1.0240x faster
   simple-poly-call-nested                            9.6057+-2.3642            8.9109+-0.2407          might be 1.0780x faster
   simple-poly-call                                   1.7372+-0.6619            1.7245+-0.5580        
   sin-boolean                                       22.3777+-2.6564           22.2284+-2.4438        
   sinkable-new-object-dag                           87.1842+-9.1758           81.4132+-4.9755          might be 1.0709x faster
   sinkable-new-object-taken                         59.9521+-3.5198     ?     61.3218+-6.5737        ? might be 1.0228x slower
   sinkable-new-object                               42.0020+-4.0361     ?     43.3428+-2.9898        ? might be 1.0319x slower
   slow-array-profile-convergence                     3.3549+-0.3014     ?      3.3763+-0.4048        ?
   slow-convergence                                   3.1710+-0.1011     ?      3.3259+-0.7548        ? might be 1.0489x slower
   sparse-conditional                                 1.4625+-0.0196     ?      1.5740+-0.3085        ? might be 1.0763x slower
   splice-to-remove                                  20.5540+-4.7915     ?     20.8563+-4.9026        ? might be 1.0147x slower
   string-char-code-at                               19.5923+-4.2228           18.8672+-1.2852          might be 1.0384x faster
   string-concat-object                               3.0488+-0.2330     ?      3.2557+-0.9262        ? might be 1.0679x slower
   string-concat-pair-object                          2.8763+-0.0598     ?      2.9139+-0.1750        ? might be 1.0131x slower
   string-concat-pair-simple                         14.0569+-0.5798     ?     15.1465+-2.5639        ? might be 1.0775x slower
   string-concat-simple                              15.6578+-2.7023           14.8712+-1.2945          might be 1.0529x faster
   string-cons-repeat                                10.7576+-3.8932            9.9838+-4.1888          might be 1.0775x faster
   string-cons-tower                                  8.8752+-0.5106     ?      8.9453+-0.4366        ?
   string-equality                                   21.2340+-3.5435           20.6533+-1.5372          might be 1.0281x faster
   string-get-by-val-big-char                         8.9865+-0.4685            8.9743+-0.3851        
   string-get-by-val-out-of-bounds-insane             4.3365+-0.1249            4.2340+-0.2165          might be 1.0242x faster
   string-get-by-val-out-of-bounds                    5.9105+-0.3233     ?      5.9627+-0.0367        ?
   string-get-by-val                                  3.9852+-0.1788     ?      4.2128+-0.8990        ? might be 1.0571x slower
   string-hash                                        2.5110+-0.1155     ?      2.6478+-0.6462        ? might be 1.0544x slower
   string-long-ident-equality                        16.6230+-0.1542           16.6093+-0.3814        
   string-out-of-bounds                              16.8525+-1.2129     ?     17.9782+-4.6142        ? might be 1.0668x slower
   string-repeat-arith                               40.5115+-3.3693     ?     40.9246+-9.4538        ? might be 1.0102x slower
   string-sub                                        77.4760+-12.3535    ?     78.6650+-9.5590        ? might be 1.0153x slower
   string-test                                        3.3023+-0.0730     ?      3.3572+-0.1670        ? might be 1.0166x slower
   string-var-equality                               33.4115+-0.5007     ?     36.5110+-4.0010        ? might be 1.0928x slower
   structure-hoist-over-transitions                   2.9827+-0.0868     ?      3.0732+-0.1697        ? might be 1.0303x slower
   substring-concat-weird                            47.9657+-2.2728           47.5587+-0.8783        
   substring-concat                                  46.9202+-0.5638     ?     48.7529+-5.4351        ? might be 1.0391x slower
   substring                                         54.6127+-0.3687           54.1798+-1.3936        
   switch-char-constant                               3.3402+-0.3471     ?      3.4199+-1.0504        ? might be 1.0239x slower
   switch-char                                        7.3132+-1.1419     ?      7.6108+-1.5775        ? might be 1.0407x slower
   switch-constant                                    9.1597+-0.2344     ?      9.3593+-0.6790        ? might be 1.0218x slower
   switch-string-basic-big-var                       18.0117+-3.2903           16.9031+-0.3854          might be 1.0656x faster
   switch-string-basic-big                           17.1273+-4.7081           15.5710+-0.3109          might be 1.0999x faster
   switch-string-basic-var                           17.6429+-3.8729           17.4940+-3.3069        
   switch-string-basic                               14.6715+-0.2484           14.6667+-0.5851        
   switch-string-big-length-tower-var                22.9965+-4.4324     ?     24.0623+-3.8479        ? might be 1.0463x slower
   switch-string-length-tower-var                    19.1923+-4.3658     ?     20.1998+-4.3319        ? might be 1.0525x slower
   switch-string-length-tower                        16.6136+-4.5269           16.0920+-3.5924          might be 1.0324x faster
   switch-string-short                               15.7552+-4.2709           15.4700+-3.8427          might be 1.0184x faster
   switch                                            13.7795+-0.2123     ?     14.2625+-1.4088        ? might be 1.0351x slower
   tear-off-arguments-simple                          3.9670+-0.1829            3.9655+-0.0509        
   tear-off-arguments                                 5.4175+-0.1147     ?      5.4568+-0.1065        ?
   temporal-structure                                15.7355+-0.5203           15.5870+-0.8476        
   to-int32-boolean                                  18.3736+-3.3626           17.6895+-0.7744          might be 1.0387x faster
   try-catch-get-by-val-cloned-arguments             16.9085+-3.1072     ?     17.4177+-4.6808        ? might be 1.0301x slower
   try-catch-get-by-val-direct-arguments              7.3779+-0.3232     ?      8.7189+-4.1672        ? might be 1.1818x slower
   try-catch-get-by-val-scoped-arguments             11.2095+-5.1036            9.9065+-4.0695          might be 1.1315x faster
   undefined-property-access                        394.5329+-5.8232     ?    396.5740+-1.5287        ?
   undefined-test                                     3.4669+-0.1539     ?      3.6820+-0.5477        ? might be 1.0621x slower
   unprofiled-licm                                   24.9677+-1.5281     ?     25.2397+-2.3415        ? might be 1.0109x slower
   varargs-call                                      17.1080+-1.8151           16.7273+-1.1550          might be 1.0228x faster
   varargs-construct-inline                          25.2744+-0.8813     ?     26.6021+-3.9048        ? might be 1.0525x slower
   varargs-construct                                 36.6443+-4.9711           35.7497+-1.4508          might be 1.0250x faster
   varargs-inline                                    11.2405+-0.0947     ?     11.3662+-0.4531        ? might be 1.0112x slower
   varargs-strict-mode                               13.2947+-3.1830           12.6572+-0.3514          might be 1.0504x faster
   varargs                                           12.6517+-0.4031           12.4249+-0.2567          might be 1.0183x faster
   weird-inlining-const-prop                          2.7357+-0.6077            2.5831+-0.2481          might be 1.0590x faster

   <geometric>                                       10.1501+-0.0412           10.1158+-0.0761          might be 1.0034x faster

                                                           base                      new                                        
AsmBench:
   bigfib.cpp                                       557.6599+-4.3550          556.7204+-3.9944        
   cray.c                                           519.4601+-20.1429         510.5105+-7.2712          might be 1.0175x faster
   dry.c                                            554.0463+-4.4651     ?    555.2708+-9.1940        ?
   FloatMM.c                                        811.1918+-4.3645     ?    817.7350+-14.6635       ?
   gcc-loops.cpp                                   4952.6612+-41.3289    ?   4959.1724+-34.7468       ?
   n-body.c                                        1201.4105+-12.6404        1192.7120+-6.7562        
   Quicksort.c                                      477.0793+-5.2611          474.5699+-8.4332        
   stepanov_container.cpp                          4199.6682+-50.9310        4181.6177+-68.0839       
   Towers.c                                         290.1387+-1.5626     ?    292.3356+-5.0598        ?

   <geometric>                                      915.1498+-6.9979          913.4388+-1.3096          might be 1.0019x faster

                                                           base                      new                                        
CompressionBench:
   huffman                                          393.9900+-5.1946     ?    396.6052+-6.0727        ?
   arithmetic-simple                                442.6438+-6.5669     ?    445.1555+-12.6039       ?
   arithmetic-precise                               344.1400+-2.9929          334.1083+-7.3842          might be 1.0300x faster
   arithmetic-complex-precise                       339.5819+-8.3524          333.4582+-10.7559         might be 1.0184x faster
   arithmetic-precise-order-0                       469.9812+-9.5442          467.2036+-10.2764       
   arithmetic-precise-order-1                       367.3081+-10.7988    ?    373.0805+-9.6269        ? might be 1.0157x slower
   arithmetic-precise-order-2                       414.2776+-9.4086          406.9910+-8.6291          might be 1.0179x faster
   arithmetic-simple-order-1                        462.5213+-7.2471     ?    469.6103+-28.2364       ? might be 1.0153x slower
   arithmetic-simple-order-2                        525.1949+-17.7513         517.2803+-8.2218          might be 1.0153x faster
   lz-string                                        386.9739+-5.5848     ?    387.0160+-12.8600       ?

   <geometric>                                      410.8163+-1.4730          409.0262+-7.4381          might be 1.0044x faster

                                                           base                      new                                        

                                                           base                      new                                        
Geomean of preferred means:
   <scaled-result>                                   74.1922+-0.9200           73.9422+-0.4581          might be 1.0034x faster
Comment 11 Mark Lam 2015-04-25 02:56:28 PDT
Created attachment 251628 [details]
patch 2: with style fix.
Comment 12 WebKit Commit Bot 2015-04-25 08:44:56 PDT
Comment on attachment 251628 [details]
patch 2: with style fix.

Clearing flags on attachment: 251628

Committed r183310: <http://trac.webkit.org/changeset/183310>
Comment 13 WebKit Commit Bot 2015-04-25 08:45:01 PDT
All reviewed patches have been landed.  Closing bug.