Bug 148717

Summary: There should be one stub hanging off an inline cache that contains code for all of the cases, rather than forming a linked list consisting of one stub per case
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, basile_clement, benjamin, buildbot, cdumez, commit-queue, ggaren, keith_miller, mark.lam, mhahnenb, msaboff, nrotem, oliver, rniwa, saam, sam
Priority: P2    
Version: Other   
Hardware: All   
OS: All   
Bug Depends on: 148718, 148915, 148943    
Bug Blocks: 148610    
Attachments:
Description Flags
work in progress
none
just a bit more
none
some more stuff
none
more glue
none
starting to get interesting
none
inching towards victory
none
making this change a little less incremental
none
it is written
none
rebased
none
inching towards victory
none
it compiles!
none
it does simple things
none
more
none
rebased again
none
it's passing tests so much
none
the patch
none
the patch
none
the patch
ggaren: review-, buildbot: commit-queue-
Archive of layout-test-results from ews103 for mac-mavericks
none
the patch
none
the patch msaboff: review+

Description Filip Pizlo 2015-09-02 10:39:00 PDT
Such a new approach where we regenerate the One True Stub every time a case is added will enable us to more easily prune out cases that become irrelevant once a new case is added.  For a while now this has been something we should have added, for example when we go to slow path because a prototype check failed.  But for the type checking PutById's that will be introduced in https://bugs.webkit.org/show_bug.cgi?id=148610, this kind of thing will be even more profitable.  So, we should just implement this now.
Comment 1 Filip Pizlo 2015-09-04 15:03:51 PDT
*** Bug 148718 has been marked as a duplicate of this bug. ***
Comment 2 Filip Pizlo 2015-09-04 15:04:32 PDT
Created attachment 260628 [details]
work in progress
Comment 3 Filip Pizlo 2015-09-04 16:02:43 PDT
Created attachment 260638 [details]
just a bit more
Comment 4 Filip Pizlo 2015-09-05 11:44:49 PDT
Created attachment 260696 [details]
some more stuff

Now it has code generation for all of the "o.f" inline caches (get, put, in).

I just need to finish hooking it up to Repatch, and deleting the old code from Repatch.
Comment 5 Filip Pizlo 2015-09-05 13:14:24 PDT
Created attachment 260697 [details]
more glue
Comment 6 Filip Pizlo 2015-09-06 12:06:09 PDT
Created attachment 260711 [details]
starting to get interesting

Now most of the GetById patching code has been converted to use PolymorphicAccess.

This also solves a longstanding issue: it establishes a way for the stub to jump to slow path while indicating that it's not useful to attempt patching. This comes into play for things like negative array length.
Comment 7 Filip Pizlo 2015-09-06 13:16:33 PDT
Created attachment 260715 [details]
inching towards victory
Comment 8 Filip Pizlo 2015-09-07 13:28:39 PDT
Created attachment 260746 [details]
making this change a little less incremental
Comment 9 Filip Pizlo 2015-09-08 10:36:41 PDT
Created attachment 260768 [details]
it is written
Comment 10 Filip Pizlo 2015-09-08 10:39:25 PDT
Created attachment 260769 [details]
rebased
Comment 11 Filip Pizlo 2015-09-08 11:32:52 PDT
Created attachment 260773 [details]
inching towards victory
Comment 12 Filip Pizlo 2015-09-08 13:02:22 PDT
Created attachment 260784 [details]
it compiles!
Comment 13 Filip Pizlo 2015-09-08 14:46:59 PDT
Created attachment 260797 [details]
it does simple things
Comment 14 Filip Pizlo 2015-09-08 16:06:25 PDT
Created attachment 260801 [details]
more

Now it has a changelog!
Comment 15 Filip Pizlo 2015-09-08 16:31:09 PDT
Created attachment 260807 [details]
rebased again

It's starting to pass a lot of tests.
Comment 16 Filip Pizlo 2015-09-08 16:53:30 PDT
Created attachment 260812 [details]
it's passing tests so much
Comment 17 Filip Pizlo 2015-09-08 20:38:08 PDT
Well this is promising so far.


Benchmark report for SunSpider and Octane on shakezilla (MacBookPro11,3).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r189515)
"NewPolyIC" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r189515)

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

                                        TipOfTree                 NewPolyIC                                     
SunSpider:
   3d-cube                            4.6024+-0.2057     ?      4.6746+-0.3917        ? might be 1.0157x slower
   3d-morph                           4.9763+-0.0703     ?      5.1038+-0.1656        ? might be 1.0256x slower
   3d-raytrace                        5.5236+-1.3352            5.2140+-0.2418          might be 1.0594x faster
   access-binary-trees                1.9876+-0.1296     ?      2.1369+-0.1340        ? might be 1.0751x slower
   access-fannkuch                    5.3289+-0.1978     ?      5.3676+-0.2694        ?
   access-nbody                       2.3927+-0.0273     ?      2.4355+-0.0598        ? might be 1.0179x slower
   access-nsieve                      3.0258+-0.1913     ?      3.0612+-0.2531        ? might be 1.0117x slower
   bitops-3bit-bits-in-byte           1.1162+-0.0642            1.0994+-0.0417          might be 1.0153x faster
   bitops-bits-in-byte                3.1965+-0.0740     ?      3.2351+-0.0609        ? might be 1.0121x slower
   bitops-bitwise-and                 2.0063+-0.1278            1.9414+-0.0195          might be 1.0335x faster
   bitops-nsieve-bits                 2.9116+-0.0211     ?      2.9129+-0.0259        ?
   controlflow-recursive              2.1255+-0.1569     ?      2.1341+-0.1410        ?
   crypto-aes                         3.7949+-0.1613     ?      3.8543+-0.3143        ? might be 1.0157x slower
   crypto-md5                         2.3102+-0.0309     ?      2.3524+-0.0716        ? might be 1.0183x slower
   crypto-sha1                        2.2855+-0.2040            2.2119+-0.1688          might be 1.0333x faster
   date-format-tofte                  6.5839+-0.0778     ?      6.9934+-0.6136        ? might be 1.0622x slower
   date-format-xparb                  4.6549+-0.3346            4.6510+-0.3760        
   math-cordic                        2.7710+-0.0694     ?      2.9258+-0.2232        ? might be 1.0559x slower
   math-partial-sums                  4.8258+-0.2197            4.7726+-0.1412          might be 1.0111x faster
   math-spectral-norm                 1.8119+-0.0436            1.7715+-0.0082          might be 1.0228x faster
   regexp-dna                         6.4183+-0.1144            6.4147+-0.1123        
   string-base64                      4.3978+-0.1363            4.3759+-0.1998        
   string-fasta                       5.6844+-0.0468     ?      5.9449+-0.4471        ? might be 1.0458x slower
   string-tagcloud                    7.7238+-0.1715     ?      7.7596+-0.1759        ?
   string-unpack-code                18.5982+-0.6501     ?     18.6956+-0.9401        ?
   string-validate-input              4.5659+-0.2548            4.5386+-0.0605        

   <arithmetic>                       4.4469+-0.0887     ?      4.4838+-0.0390        ? might be 1.0083x slower

                                        TipOfTree                 NewPolyIC                                     
Octane:
   encrypt                           0.17087+-0.00309          0.16614+-0.00481         might be 1.0285x faster
   decrypt                           3.28232+-0.03832          3.25622+-0.01320       
   deltablue                x2       0.16196+-0.01141          0.16081+-0.01273       
   earley                            0.28344+-0.00397    ?     0.28406+-0.00337       ?
   boyer                             4.27942+-0.04376    ?     4.32630+-0.14208       ? might be 1.0110x slower
   navier-stokes            x2       4.80868+-0.01543    ?     4.82552+-0.02474       ?
   raytrace                 x2       1.02167+-0.06816    ^     0.89800+-0.00457       ^ definitely 1.1377x faster
   richards                 x2       0.10766+-0.00134          0.10765+-0.00166       
   splay                    x2       0.32496+-0.00199    ?     0.32772+-0.00371       ?
   regexp                   x2      25.00191+-0.54257         24.92420+-0.47411       
   pdfjs                    x2      36.83656+-0.33963         36.36966+-0.38146         might be 1.0128x faster
   mandreel                 x2      44.36845+-1.14861    ?    44.49560+-0.74444       ?
   gbemu                    x2      33.64794+-0.14868    ?    34.52705+-1.54902       ? might be 1.0261x slower
   closure                           0.57074+-0.00573          0.56838+-0.00330       
   jquery                            7.09301+-0.07669          7.08691+-0.03837       
   box2d                    x2       9.93760+-0.16151    ?     9.95929+-0.15017       ?
   zlib                     x2     379.93174+-6.77425    ?   385.75085+-5.85169       ? might be 1.0153x slower
   typescript               x2     641.18534+-13.63696   ^   615.81299+-8.24530       ^ definitely 1.0412x faster

   <geometric>                       5.56752+-0.02770          5.51303+-0.05167         might be 1.0099x faster

                                        TipOfTree                 NewPolyIC                                     
Geomean of preferred means:
   <scaled-result>                   15.7343+-0.1832           15.7219+-0.0499          might be 1.0008x faster
Comment 18 Filip Pizlo 2015-09-08 20:54:00 PDT
The only thing remaining with this patch is to make custom accessors work again.
Comment 19 Filip Pizlo 2015-09-08 22:39:52 PDT
Created attachment 260836 [details]
the patch
Comment 20 WebKit Commit Bot 2015-09-08 22:42:16 PDT
Attachment 260836 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:560:  Declaration has space between type name and * in numberOfRegsForCall * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:629:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:677:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:840:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:870:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:919:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:936:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:964:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:979:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:988:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:989:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1120:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:135:  The parameter name "structure" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:135:  The parameter name "offset" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:138:  The parameter name "offset" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:147:  The parameter name "structure" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.h:94:  The parameter name "accessCase" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:305:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:448:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:506:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61:  The parameter name "value" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:58:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:67:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:69:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:72:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
Total errors found: 26 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 21 Filip Pizlo 2015-09-08 22:44:57 PDT
Created attachment 260837 [details]
the patch

Include my WTF changes as well.
Comment 22 WebKit Commit Bot 2015-09-08 22:47:43 PDT
Attachment 260837 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:560:  Declaration has space between type name and * in numberOfRegsForCall * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:629:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:677:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:840:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:870:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:919:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:936:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:964:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:979:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:988:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:989:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1120:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:135:  The parameter name "structure" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:135:  The parameter name "offset" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:138:  The parameter name "offset" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:147:  The parameter name "structure" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.h:94:  The parameter name "accessCase" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:305:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:448:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/jit/Repatch.cpp:506:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61:  The parameter name "value" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:58:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:67:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:69:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:72:  Use 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
Total errors found: 26 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 23 Filip Pizlo 2015-09-09 12:21:37 PDT
(In reply to comment #22)
> Attachment 260837 [details] did not pass style-queue:
> 
> 
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:560: 
> Declaration has space between type name and * in numberOfRegsForCall *
> sizeof  [whitespace/declaration] [3]

No.  That * is a multiply and not a pointer.

> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:629:  Place
> brace on its own line for function definitions.  [whitespace/braces] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:677:  Place
> brace on its own line for function definitions.  [whitespace/braces] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:840:  Place
> brace on its own line for function definitions.  [whitespace/braces] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:870:  Place
> brace on its own line for function definitions.  [whitespace/braces] [4]

No.

> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:919:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:936:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:964:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:979:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:988:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:989:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1120:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]

Fixed.

> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:135:  The
> parameter name "structure" adds no information, so it should be removed. 
> [readability/parameter_name] [5]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:135:  The
> parameter name "offset" adds no information, so it should be removed. 
> [readability/parameter_name] [5]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:138:  The
> parameter name "offset" adds no information, so it should be removed. 
> [readability/parameter_name] [5]
> ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.h:147:  The
> parameter name "structure" adds no information, so it should be removed. 
> [readability/parameter_name] [5]

Fixed.

> ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.h:94:  The parameter
> name "accessCase" adds no information, so it should be removed. 
> [readability/parameter_name] [5]

Fixed.

> ERROR: Source/JavaScriptCore/jit/Repatch.cpp:305:  Use 'WTF::move()' instead
> of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/jit/Repatch.cpp:448:  Use 'WTF::move()' instead
> of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/jit/Repatch.cpp:506:  Use 'WTF::move()' instead
> of 'std::move()'.  [runtime/wtf_move] [4]

Fixed.

> ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:56:  Wrong
> number of spaces before statement. (expected: 8)  [whitespace/indent] [4]

No.

> ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61:  The
> parameter name "value" adds no information, so it should be removed. 
> [readability/parameter_name] [5]

No.  The name "value" most definitely adds information here and should not be removed.

> ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:58:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:67:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:69:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]
> ERROR: Source/JavaScriptCore/bytecode/StructureStubInfo.cpp:72:  Use
> 'WTF::move()' instead of 'std::move()'.  [runtime/wtf_move] [4]

Fixed.

> Total errors found: 26 in 25 files
> 
> 
> If any of these errors are false positives, please file a bug against
> check-webkit-style.
Comment 24 Filip Pizlo 2015-09-09 12:52:34 PDT
Created attachment 260868 [details]
the patch

Fixed style.
Comment 25 Keith Miller 2015-09-09 12:55:21 PDT
This is way better than the old IC code. If I could r=me I would.
Comment 26 WebKit Commit Bot 2015-09-09 12:55:31 PDT
Attachment 260868 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:560:  Declaration has space between type name and * in numberOfRegsForCall * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:629:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:677:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:840:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:870:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61:  The parameter name "value" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 27 Build Bot 2015-09-09 13:41:07 PDT
Comment on attachment 260868 [details]
the patch

Attachment 260868 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/155148

New failing tests:
fast/canvas/webgl/array-message-passing.html
Comment 28 Build Bot 2015-09-09 13:41:13 PDT
Created attachment 260870 [details]
Archive of layout-test-results from ews103 for mac-mavericks

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews103  Port: mac-mavericks  Platform: Mac OS X 10.9.5
Comment 29 Geoffrey Garen 2015-09-09 13:43:31 PDT
Comment on attachment 260868 [details]
the patch

Mac EWS failure appears repeatable. There seems to be a bug here.
Comment 30 Filip Pizlo 2015-09-09 14:48:49 PDT
(In reply to comment #29)
> Comment on attachment 260868 [details]
> the patch
> 
> Mac EWS failure appears repeatable. There seems to be a bug here.

Yup, I'm looking at it.
Comment 31 Filip Pizlo 2015-09-09 14:49:17 PDT
Performance right now.  Note that this is still crashy...


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3).

VMs tested:
"TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r189543)
"NewPolyIC" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r189543)

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

                                                        TipOfTree                 NewPolyIC                                     
SunSpider:
   3d-cube                                            5.1075+-0.6560            4.7601+-0.3870          might be 1.0730x faster
   3d-morph                                           5.0320+-0.1400     ?      5.2651+-0.3521        ? might be 1.0463x slower
   3d-raytrace                                        4.9996+-0.0689     ?      5.0286+-0.0677        ?
   access-binary-trees                                2.2453+-0.5531            2.1274+-0.3070          might be 1.0554x faster
   access-fannkuch                                    5.3371+-0.1715            5.2975+-0.1321        
   access-nbody                                       2.4964+-0.1009            2.4405+-0.1112          might be 1.0229x faster
   access-nsieve                                      3.0154+-0.0434            3.0007+-0.1009        
   bitops-3bit-bits-in-byte                           1.1410+-0.0621            1.1209+-0.0541          might be 1.0180x faster
   bitops-bits-in-byte                                3.2891+-0.2005            3.2593+-0.0336        
   bitops-bitwise-and                                 1.9700+-0.0245     ?      2.0135+-0.1010        ? might be 1.0221x slower
   bitops-nsieve-bits                                 3.0685+-0.4055            2.9649+-0.1037          might be 1.0349x faster
   controlflow-recursive                              2.2236+-0.2178            2.1899+-0.1005          might be 1.0154x faster
   crypto-aes                                         3.7646+-0.0613     ?      4.1674+-0.6451        ? might be 1.1070x slower
   crypto-md5                                         2.3670+-0.0518            2.3224+-0.0700          might be 1.0192x faster
   crypto-sha1                                        2.4143+-0.2377            2.3173+-0.1680          might be 1.0419x faster
   date-format-tofte                                  7.0110+-0.5702            6.8600+-0.4968          might be 1.0220x faster
   date-format-xparb                                  4.5725+-0.1417     ?      4.8746+-0.5230        ? might be 1.0661x slower
   math-cordic                                        2.8699+-0.1687            2.8324+-0.1953          might be 1.0132x faster
   math-partial-sums                                  4.8574+-0.0635            4.7650+-0.1495          might be 1.0194x faster
   math-spectral-norm                                 1.7814+-0.0390     ?      1.8792+-0.2496        ? might be 1.0549x slower
   regexp-dna                                         6.3695+-0.0549     ?      6.4812+-0.2530        ? might be 1.0175x slower
   string-base64                                      4.3328+-0.1619     ?      4.5306+-0.3657        ? might be 1.0456x slower
   string-fasta                                       6.0422+-0.4884            5.7344+-0.1970          might be 1.0537x faster
   string-tagcloud                                    8.4223+-1.2020            7.6838+-0.0787          might be 1.0961x faster
   string-unpack-code                                18.6022+-0.6993           18.2919+-0.5691          might be 1.0170x faster
   string-validate-input                              4.4676+-0.1120     ?      4.5831+-0.1879        ? might be 1.0259x slower

   <arithmetic>                                       4.5308+-0.0818            4.4920+-0.0296          might be 1.0086x faster

                                                        TipOfTree                 NewPolyIC                                     
LongSpider:
   3d-cube                                          809.6053+-3.9580     ?    811.3845+-6.4851        ?
   3d-morph                                        1486.1304+-3.2766         1483.5084+-2.7493        
   3d-raytrace                                      597.8175+-3.1973     ?    598.3330+-2.8893        ?
   access-binary-trees                              795.7429+-6.7876     ?    800.4827+-2.3669        ?
   access-fannkuch                                  269.5301+-0.6699     ?    276.0987+-7.0337        ? might be 1.0244x slower
   access-nbody                                     507.9226+-0.4334     !    511.4803+-3.0121        ! definitely 1.0070x slower
   access-nsieve                                    365.9178+-10.6595         359.2681+-1.5470          might be 1.0185x faster
   bitops-3bit-bits-in-byte                          34.3169+-0.5829           34.2000+-0.8549        
   bitops-bits-in-byte                               75.1884+-2.0288     ?     75.6968+-1.6298        ?
   bitops-nsieve-bits                               401.9336+-4.8055          397.8354+-4.2023          might be 1.0103x faster
   controlflow-recursive                            418.9929+-6.7955          416.9046+-4.8172        
   crypto-aes                                       578.5614+-2.7896          575.3235+-1.8384        
   crypto-md5                                       491.3981+-10.7190         484.9644+-23.8053         might be 1.0133x faster
   crypto-sha1                                      626.8269+-12.6420         615.2220+-1.6506          might be 1.0189x faster
   date-format-tofte                                500.3375+-8.7373          498.4564+-6.3742        
   date-format-xparb                                660.9286+-10.5195    ?    676.7945+-59.0872       ? might be 1.0240x slower
   hash-map                                         165.9336+-3.0773          165.8269+-0.7891        
   math-cordic                                      475.5828+-2.4531     ?    477.7976+-3.4316        ?
   math-partial-sums                                459.8112+-0.8460     ?    460.2152+-0.5471        ?
   math-spectral-norm                               545.5664+-0.5491     ?    546.1919+-1.3176        ?
   string-base64                                    365.3368+-6.6264     ?    366.2951+-7.3312        ?
   string-fasta                                     359.3473+-1.7211     ?    362.2948+-2.2072        ?
   string-tagcloud                                  174.1983+-1.9124     ?    175.2374+-0.9227        ?

   <geometric>                                      387.1291+-0.9274     ?    387.2913+-1.7999        ? might be 1.0004x slower

                                                        TipOfTree                 NewPolyIC                                     
V8Spider:
   crypto                                            49.9816+-1.1614           49.0812+-1.1449          might be 1.0183x faster
   deltablue                                         85.0666+-3.0589     ?     86.6115+-2.9666        ? might be 1.0182x slower
   earley-boyer                                      40.8530+-1.4286     ?     41.3219+-0.8405        ? might be 1.0115x slower
   raytrace                                          31.8295+-2.1171           31.5521+-1.6879        
   regexp                                            63.0987+-1.7526           62.1826+-1.3531          might be 1.0147x faster
   richards                                          64.5601+-1.4575     ?     65.1003+-1.9806        ?
   splay                                             36.3726+-1.2844     ^     32.9393+-0.9570        ^ definitely 1.1042x faster

   <geometric>                                       50.3082+-0.6714           49.5827+-0.5999          might be 1.0146x faster

                                                        TipOfTree                 NewPolyIC                                     
Octane:
   encrypt                                           0.16804+-0.00333          0.16620+-0.00418         might be 1.0111x faster
   decrypt                                           3.25691+-0.01040          3.25420+-0.00595       
   deltablue                                x2       0.15740+-0.00105          0.15504+-0.00172         might be 1.0153x faster
   earley                                            0.28122+-0.00219          0.28094+-0.00112       
   boyer                                             4.25290+-0.02204    ?     4.25976+-0.01565       ?
   navier-stokes                            x2       4.82187+-0.05331          4.80793+-0.02086       
   raytrace                                 x2       1.00222+-0.03859    ^     0.90785+-0.01213       ^ definitely 1.1040x faster
   richards                                 x2       0.10629+-0.00107    ?     0.10702+-0.00142       ?
   splay                                    x2       0.33672+-0.01169          0.33314+-0.00487         might be 1.0107x faster
   regexp                                   x2      24.78739+-0.26856    ?    24.97754+-0.50844       ?
   pdfjs                                    x2      36.74056+-0.33416         36.52673+-0.31558       
   mandreel                                 x2      44.23978+-1.11454         44.09202+-0.99418       
   gbemu                                    x2      34.99170+-2.26470         33.87401+-0.17512         might be 1.0330x faster
   closure                                           0.56867+-0.00377          0.56740+-0.00296       
   jquery                                            7.04663+-0.05138    ?     7.11633+-0.17211       ?
   box2d                                    x2       9.85185+-0.03790    ?     9.97573+-0.10546       ? might be 1.0126x slower
   zlib                                     x2     374.49586+-17.12213   ?   384.25307+-9.31213       ? might be 1.0261x slower
   typescript                               x2     643.61314+-12.90819   ^   620.64286+-5.78507       ^ definitely 1.0370x faster

   <geometric>                                       5.55216+-0.03399    ^     5.49643+-0.00916       ^ definitely 1.0101x faster

                                                        TipOfTree                 NewPolyIC                                     
Kraken:
   ai-astar                                          220.708+-2.295            218.039+-1.637           might be 1.0122x faster
   audio-beat-detection                               50.623+-0.463             50.368+-0.483         
   audio-dft                                          96.257+-1.906             95.427+-1.555         
   audio-fft                                          35.381+-1.643             34.839+-0.236           might be 1.0155x faster
   audio-oscillator                                   60.669+-3.027             58.669+-0.363           might be 1.0341x faster
   imaging-darkroom                                   60.743+-0.321      ?      61.395+-1.836         ? might be 1.0107x slower
   imaging-desaturate                                 48.885+-0.322      ?      49.288+-0.351         ?
   imaging-gaussian-blur                              84.987+-0.446      ?      87.021+-4.687         ? might be 1.0239x slower
   json-parse-financial                               37.807+-0.479      ?      38.162+-1.391         ?
   json-stringify-tinderbox                           22.106+-0.313      !      24.894+-1.215         ! definitely 1.1262x slower
   stanford-crypto-aes                                41.385+-2.062             41.173+-1.384         
   stanford-crypto-ccm                                35.960+-1.493             35.695+-1.259         
   stanford-crypto-pbkdf2                             93.304+-0.343      ?      93.648+-0.678         ?
   stanford-crypto-sha256-iterative                   37.347+-1.565             36.838+-1.140           might be 1.0138x faster

   <arithmetic>                                       66.154+-0.465             66.104+-0.411           might be 1.0008x faster

                                                        TipOfTree                 NewPolyIC                                     
JSRegress:
   abc-forward-loop-equal                            29.4827+-0.3607     ?     29.7214+-1.0619        ?
   abc-postfix-backward-loop                         29.6307+-0.6166     ?     30.1094+-1.3583        ? might be 1.0162x slower
   abc-simple-backward-loop                          29.6631+-1.5155           29.3856+-1.5383        
   abc-simple-forward-loop                           30.0333+-1.6490           29.6564+-1.8017          might be 1.0127x faster
   abc-skippy-loop                                   21.0393+-0.4155     ?     21.4065+-0.2126        ? might be 1.0174x slower
   abs-boolean                                        2.4545+-0.1030     ?      2.4709+-0.0955        ?
   adapt-to-double-divide                            16.7863+-0.7291     ?     16.9810+-0.7255        ? might be 1.0116x slower
   aliased-arguments-getbyval                         1.1653+-0.0870     ?      1.1700+-0.0539        ?
   allocate-big-object                                2.4905+-0.0988     ?      2.6195+-0.5289        ? might be 1.0518x slower
   arguments-named-and-reflective                    11.1848+-0.8763           10.9711+-0.4680          might be 1.0195x faster
   arguments-out-of-bounds                            9.3388+-0.3065            9.2277+-0.5527          might be 1.0120x faster
   arguments-strict-mode                              9.7055+-0.6204            9.6486+-0.9985        
   arguments                                          8.4119+-0.3836            8.2973+-0.3068          might be 1.0138x faster
   arity-mismatch-inlining                            0.8235+-0.0221     ?      0.8588+-0.0653        ? might be 1.0429x slower
   array-access-polymorphic-structure                 5.7975+-0.1120     ?      5.8343+-0.1597        ?
   array-nonarray-polymorhpic-access                 24.5723+-0.6498           23.7154+-0.6516          might be 1.0361x faster
   array-prototype-every                             75.6078+-2.1788           75.3799+-1.3309        
   array-prototype-forEach                           74.7404+-2.0104           73.9970+-1.0558          might be 1.0100x faster
   array-prototype-map                               79.8269+-0.7447     ?     80.4953+-1.0972        ?
   array-prototype-reduce                            70.2274+-0.9570     ?     70.7728+-1.4600        ?
   array-prototype-reduceRight                       70.3583+-1.4368     ?     71.2870+-1.9813        ? might be 1.0132x slower
   array-prototype-some                              75.3365+-1.0169           74.6313+-1.6556        
   array-splice-contiguous                           21.2718+-0.5439     ?     22.0295+-2.1383        ? might be 1.0356x slower
   array-with-double-add                              3.4384+-0.1577     ?      3.4623+-0.1650        ?
   array-with-double-increment                        3.0944+-0.1125     ?      3.1009+-0.1789        ?
   array-with-double-mul-add                          4.2584+-0.1057            4.1370+-0.0455          might be 1.0293x faster
   array-with-double-sum                              3.2586+-0.1650            3.1237+-0.0164          might be 1.0432x faster
   array-with-int32-add-sub                           5.6055+-0.0613     ?      5.6932+-0.1773        ? might be 1.0156x slower
   array-with-int32-or-double-sum                     3.2460+-0.1880     ?      3.3141+-0.1697        ? might be 1.0210x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     25.6887+-0.8838     ?     27.1256+-1.8324        ? might be 1.0559x slower
   ArrayBuffer-DataView-alloc-long-lived             11.8639+-0.3817           11.7981+-0.4534        
   ArrayBuffer-Int32Array-byteOffset                  3.5019+-0.0763            3.4851+-0.1207        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     30.8180+-1.7967           30.3651+-0.6900          might be 1.0149x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     20.2607+-0.4183     ?     21.3177+-1.0934        ? might be 1.0522x slower
   ArrayBuffer-Int8Array-alloc-long-lived            12.3179+-0.5055     ?     12.3189+-0.7590        ?
   ArrayBuffer-Int8Array-alloc                        9.4633+-0.3967     ?      9.5524+-0.5062        ?
   arrowfunction-call                                 9.9027+-0.1601            9.8614+-0.1317        
   asmjs_bool_bug                                     7.4319+-0.1969     ?      7.5542+-0.3540        ? might be 1.0165x slower
   assign-custom-setter-polymorphic                   2.3085+-0.0628     ?      2.4720+-0.1520        ? might be 1.0708x slower
   assign-custom-setter                               3.1340+-0.0494     ?      3.2322+-0.0788        ? might be 1.0313x slower
   basic-set                                          7.1469+-0.2058     ?      7.3257+-0.6986        ? might be 1.0250x slower
   big-int-mul                                        3.4082+-0.0546     ?      3.4494+-0.0893        ? might be 1.0121x slower
   boolean-test                                       2.8813+-0.0639     ?      2.8881+-0.0213        ?
   branch-fold                                        3.6698+-0.1719     ?      3.6754+-0.2311        ?
   branch-on-string-as-boolean                       17.5798+-0.8557           17.3710+-0.5012          might be 1.0120x faster
   by-val-generic                                     2.4084+-0.3337            2.3033+-0.1229          might be 1.0456x faster
   call-spread-apply                                 26.0063+-0.5907           25.9428+-0.6743        
   call-spread-call                                  21.3142+-0.7482           20.8861+-0.5101          might be 1.0205x faster
   captured-assignments                               0.4110+-0.0227     ?      0.4518+-0.0612        ? might be 1.0992x slower
   cast-int-to-double                                 5.0475+-0.1328            4.9980+-0.0883        
   cell-argument                                      6.5038+-0.3804            6.2392+-0.1884          might be 1.0424x faster
   cfg-simplify                                       2.8218+-0.0845     ?      2.9031+-0.2099        ? might be 1.0288x slower
   chain-getter-access                                8.4399+-0.2094            8.2271+-0.1312          might be 1.0259x faster
   cmpeq-obj-to-obj-other                            12.1866+-0.8155     ?     12.3672+-1.6706        ? might be 1.0148x slower
   constant-test                                      4.7427+-0.1635            4.7312+-0.0727        
   create-lots-of-functions                           9.6595+-0.8759            9.2115+-0.3716          might be 1.0486x faster
   cse-new-array-buffer                               2.2253+-0.1311            2.1706+-0.0901          might be 1.0252x faster
   cse-new-array                                      3.0022+-1.7512            2.2514+-0.0941          might be 1.3335x faster
   DataView-custom-properties                        31.1648+-1.5371           31.1243+-1.4138        
   delay-tear-off-arguments-strictmode               12.6584+-0.7602           12.3959+-0.4637          might be 1.0212x faster
   deltablue-varargs                                160.8017+-3.5139          158.3215+-1.9129          might be 1.0157x faster
   destructuring-arguments                          163.3447+-1.9397     ?    163.5504+-0.7293        ?
   destructuring-parameters-overridden-by-function   
                                                      0.4329+-0.0084     ?      0.4902+-0.0569        ? might be 1.1323x slower
   destructuring-swap                                 4.6838+-0.1550            4.6820+-0.0711        
   direct-arguments-getbyval                          1.1636+-0.0629            1.1052+-0.0339          might be 1.0529x faster
   div-boolean-double                                 5.3056+-0.1568     ?      5.3097+-0.0885        ?
   div-boolean                                        8.1618+-0.2975            8.0997+-0.1364        
   double-get-by-val-out-of-bounds                    4.1674+-0.2641            4.0087+-0.0847          might be 1.0396x faster
   double-pollution-getbyval                          8.7495+-0.3360     ?      8.8559+-0.3579        ? might be 1.0122x slower
   double-pollution-putbyoffset                       3.6738+-0.1738     ?      3.7230+-0.1902        ? might be 1.0134x slower
   double-real-use                                   24.7588+-1.1652     ?     25.3221+-1.8578        ? might be 1.0228x slower
   double-to-int32-typed-array-no-inline              2.0026+-0.0974            1.9776+-0.0662          might be 1.0126x faster
   double-to-int32-typed-array                        1.7745+-0.0364            1.7645+-0.0675        
   double-to-uint32-typed-array-no-inline             2.0896+-0.1457     ?      2.1373+-0.2807        ? might be 1.0228x slower
   double-to-uint32-typed-array                       1.8732+-0.1104     ?      1.9479+-0.1478        ? might be 1.0399x slower
   elidable-new-object-dag                           35.0045+-1.2805           34.1770+-0.9491          might be 1.0242x faster
   elidable-new-object-roflcopter                    32.9935+-0.5720     ?     33.2759+-1.1725        ?
   elidable-new-object-then-call                     33.1413+-1.8925           32.1100+-1.8914          might be 1.0321x faster
   elidable-new-object-tree                          37.6701+-1.6256           37.6440+-1.4968        
   empty-string-plus-int                              4.7306+-0.1397            4.6538+-0.1667          might be 1.0165x faster
   emscripten-cube2hash                              27.5827+-0.6800           27.3231+-2.0532        
   exit-length-on-plain-object                       13.0200+-0.9690     ?     13.4278+-1.4707        ? might be 1.0313x slower
   external-arguments-getbyval                        1.1794+-0.0345     ?      1.2119+-0.1175        ? might be 1.0276x slower
   external-arguments-putbyval                        2.3375+-0.4381            2.1752+-0.1324          might be 1.0746x faster
   fixed-typed-array-storage-var-index                1.2962+-0.3603            1.1784+-0.0874          might be 1.0999x faster
   fixed-typed-array-storage                          0.8849+-0.0832            0.8592+-0.0678          might be 1.0298x faster
   Float32Array-matrix-mult                           3.8473+-0.1124     ?      4.0200+-0.4307        ? might be 1.0449x slower
   Float32Array-to-Float64Array-set                  46.3595+-0.5574     ?     47.1399+-1.5388        ? might be 1.0168x slower
   Float64Array-alloc-long-lived                     70.0729+-1.7150     ?     70.2935+-2.2537        ?
   Float64Array-to-Int16Array-set                    56.6025+-1.0564           55.4960+-0.9563          might be 1.0199x faster
   fold-double-to-int                                12.1222+-0.5848     ?     12.1606+-0.5593        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     11.3149+-1.1291     ?     12.1633+-1.0000        ? might be 1.0750x slower
   fold-get-by-id-to-multi-get-by-offset             10.0302+-0.6417     ?     10.3791+-0.4443        ? might be 1.0348x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      9.0641+-0.8956            8.7765+-1.5193          might be 1.0328x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      7.9405+-0.9065            7.7867+-1.1706          might be 1.0197x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.4993+-0.6274     ?      9.3335+-0.2343        ? might be 1.0981x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.1995+-0.5731     ?      4.6303+-0.7585        ? might be 1.1026x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      8.7965+-0.8589     ?      9.6766+-0.4680        ? might be 1.1001x slower
   fold-put-by-id-to-multi-put-by-offset             11.4880+-1.1559     ?     12.0700+-1.1159        ? might be 1.0507x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     10.8771+-0.9090     ?     11.3743+-1.1234        ? might be 1.0457x slower
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.1823+-1.5338     ?     10.6002+-0.7861        ? might be 1.0410x slower
   fold-put-structure                                 4.3298+-0.3623     ?      4.5824+-1.0212        ? might be 1.0584x slower
   for-of-iterate-array-entries                      11.4380+-0.5785     ?     11.4420+-0.4518        ?
   for-of-iterate-array-keys                          3.6518+-0.1785     ?      3.6953+-0.1593        ? might be 1.0119x slower
   for-of-iterate-array-values                        3.7957+-0.4072            3.6401+-0.2064          might be 1.0428x faster
   fround                                            17.8805+-0.4461           17.6460+-0.3801          might be 1.0133x faster
   ftl-library-inlining-dataview                     56.1237+-0.7259           55.9549+-1.0552        
   ftl-library-inlining                              95.2243+-1.2162     ?     95.7191+-0.8219        ?
   function-call                                      9.9362+-0.2223     ?     10.0033+-0.2136        ?
   function-dot-apply                                 2.0926+-0.2486            1.9850+-0.1146          might be 1.0542x faster
   function-test                                      2.7679+-0.1756     ?      2.8648+-0.2638        ? might be 1.0350x slower
   function-with-eval                                99.6352+-1.8479     ?    103.5155+-3.2789        ? might be 1.0389x slower
   gcse-poly-get-less-obvious                        14.6280+-1.0409     !     18.5351+-0.1695        ! definitely 1.2671x slower
   gcse-poly-get                                     15.8617+-0.3204     !     22.0256+-0.7602        ! definitely 1.3886x slower
   gcse                                               3.7969+-0.0446     ?      3.9950+-0.3145        ? might be 1.0522x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6593+-0.1735            2.6546+-0.1860        
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.7222+-0.1640     ?      5.7434+-0.3457        ?
   get-by-id-chain-from-try-block                     5.5054+-0.2768            5.4199+-0.1691          might be 1.0158x faster
   get-by-id-check-structure-elimination              4.4006+-0.0694     ?      4.4429+-0.0514        ?
   get-by-id-proto-or-self                           14.6330+-0.2818     ?     15.3632+-0.5265        ? might be 1.0499x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8511+-0.0585     ?      3.1593+-0.6173        ? might be 1.1081x slower
   get-by-id-self-or-proto                           15.4144+-0.6034     ?     15.5662+-0.6628        ?
   get-by-val-out-of-bounds                           3.9080+-0.1952     ?      3.9112+-0.1101        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      2.7396+-0.0404     ?      2.7494+-0.0252        ?
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      5.9702+-0.0997     ?      6.0829+-0.1680        ? might be 1.0189x slower
   get-by-val-with-string-chain-from-try-block   
                                                      5.6085+-0.1841     ?      5.7550+-0.3724        ? might be 1.0261x slower
   get-by-val-with-string-check-structure-elimination   
                                                      5.0995+-0.0827     ?      5.1159+-0.1757        ?
   get-by-val-with-string-proto-or-self              15.0379+-0.5903     ?     15.6604+-1.4231        ? might be 1.0414x slower
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.3245+-0.0528            3.3037+-0.0604        
   get-by-val-with-string-self-or-proto              15.7241+-1.2060           15.6344+-0.8814        
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.1130+-0.1016     ?      3.2099+-0.3127        ? might be 1.0311x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     12.6816+-0.6539     ?     12.9689+-1.4128        ? might be 1.0227x slower
   get-by-val-with-symbol-chain-from-try-block   
                                                      5.4856+-0.0685     ?      5.5936+-0.1470        ? might be 1.0197x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     11.1132+-0.3332           11.0871+-0.2499        
   get-by-val-with-symbol-proto-or-self              14.8131+-0.9009     ?     15.9215+-0.7395        ? might be 1.0748x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      3.7819+-0.3031     ?      3.9305+-0.3500        ? might be 1.0393x slower
   get-by-val-with-symbol-self-or-proto              15.6397+-0.8039           15.4517+-0.8269          might be 1.0122x faster
   get_callee_monomorphic                             2.5271+-0.4456            2.4854+-0.4470          might be 1.0168x faster
   get_callee_polymorphic                             3.2113+-0.0466     ?      3.3606+-0.2072        ? might be 1.0465x slower
   getter-no-activation                               4.7807+-0.2564            4.7502+-0.1712        
   getter-prototype                                   8.9587+-0.1583            8.7340+-0.2325          might be 1.0257x faster
   getter-richards                                  117.7746+-4.1061          116.6130+-8.2667        
   getter                                             5.7845+-0.7333     ?      5.9121+-0.7352        ? might be 1.0221x slower
   global-object-access-with-mutating-structure   
                                                      5.7900+-0.2680            5.7549+-0.4126        
   global-var-const-infer-fire-from-opt               0.8838+-0.2711            0.7825+-0.0514          might be 1.1294x faster
   global-var-const-infer                             0.6185+-0.0349            0.5904+-0.0162          might be 1.0476x faster
   hard-overflow-check-equal                         32.8856+-0.8859     ?     33.4152+-1.2498        ? might be 1.0161x slower
   hard-overflow-check                               32.8915+-1.3756           32.6631+-0.8393        
   HashMap-put-get-iterate-keys                      27.3347+-2.0865           25.5123+-1.5986          might be 1.0714x faster
   HashMap-put-get-iterate                           28.9101+-0.9982           28.0691+-1.0667          might be 1.0300x faster
   HashMap-string-put-get-iterate                    25.2002+-2.8351     ?     25.5573+-1.9905        ? might be 1.0142x slower
   hoist-make-rope                                    9.6164+-1.4235            8.7898+-0.6416          might be 1.0940x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.1336+-0.2317            4.0438+-0.0691          might be 1.0222x faster
   hoist-poly-check-structure                         3.2937+-0.1567            3.2393+-0.0520          might be 1.0168x faster
   imul-double-only                                   7.3452+-0.3659     ?      7.3872+-0.6378        ?
   imul-int-only                                      8.3098+-0.7673     ?      8.7393+-0.7817        ? might be 1.0517x slower
   imul-mixed                                         6.9233+-0.4298     ?      7.2306+-0.4539        ? might be 1.0444x slower
   in-four-cases                                     16.7223+-0.8025     ?     16.8579+-0.4346        ?
   in-one-case-false                                  9.9339+-0.6650     ?     10.1345+-0.7628        ? might be 1.0202x slower
   in-one-case-true                                  10.1658+-0.9222           10.0036+-0.7543          might be 1.0162x faster
   in-two-cases                                      10.1089+-0.6008           10.0869+-0.1110        
   indexed-properties-in-objects                      2.7484+-0.0475            2.7461+-0.1446        
   infer-closure-const-then-mov-no-inline             3.0143+-0.0541            3.0020+-0.0518        
   infer-closure-const-then-mov                      18.4009+-0.3867           18.0909+-0.6086          might be 1.0171x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                      9.8418+-0.1087     ?     10.2132+-0.4056        ? might be 1.0377x slower
   infer-closure-const-then-put-to-scope             22.8895+-0.3485           22.7981+-1.1854        
   infer-closure-const-then-reenter-no-inline   
                                                     45.1586+-1.7685     ?     45.1716+-0.9921        ?
   infer-closure-const-then-reenter                  22.5262+-1.0363           22.4987+-1.3555        
   infer-constant-global-property                     3.4619+-0.1626            3.4513+-0.0970        
   infer-constant-property                            2.5834+-0.0617     ?      2.6789+-0.2906        ? might be 1.0369x slower
   infer-one-time-closure-ten-vars                    7.7796+-0.4251     ?      7.8540+-0.3811        ?
   infer-one-time-closure-two-vars                    7.2216+-0.2799     ?      7.3160+-0.1708        ? might be 1.0131x slower
   infer-one-time-closure                             7.1757+-0.4528     ?      7.3222+-0.3630        ? might be 1.0204x slower
   infer-one-time-deep-closure                       11.0037+-0.5622           10.9153+-0.7444        
   inline-arguments-access                            3.6974+-0.2989            3.6600+-0.2197          might be 1.0102x faster
   inline-arguments-aliased-access                    3.8458+-0.3684            3.5640+-0.1185          might be 1.0791x faster
   inline-arguments-local-escape                      3.7261+-0.2094            3.5614+-0.1142          might be 1.0463x faster
   inline-get-scoped-var                              4.4755+-0.1321            4.4322+-0.0752        
   inlined-put-by-id-transition                      10.8137+-1.3723            9.2073+-0.4570          might be 1.1745x faster
   inlined-put-by-val-with-string-transition   
                                                     72.6438+-3.9758     ^     41.2424+-1.8262        ^ definitely 1.7614x faster
   inlined-put-by-val-with-symbol-transition   
                                                     70.3780+-0.9152     ^     41.2326+-1.3954        ^ definitely 1.7069x faster
   int-or-other-abs-then-get-by-val                   4.0519+-0.0428     ?      4.1366+-0.0680        ? might be 1.0209x slower
   int-or-other-abs-zero-then-get-by-val             15.5216+-0.4210     ?     15.7687+-0.6526        ? might be 1.0159x slower
   int-or-other-add-then-get-by-val                   4.0375+-0.1783     ?      4.1189+-0.2410        ? might be 1.0202x slower
   int-or-other-add                                   4.7487+-0.0704     ?      5.0979+-0.3345        ? might be 1.0735x slower
   int-or-other-div-then-get-by-val                   3.6810+-0.0604     ?      3.7524+-0.0819        ? might be 1.0194x slower
   int-or-other-max-then-get-by-val                   3.8418+-0.4812            3.7259+-0.1553          might be 1.0311x faster
   int-or-other-min-then-get-by-val                   3.8742+-0.4322            3.7784+-0.1025          might be 1.0254x faster
   int-or-other-mod-then-get-by-val                   3.4543+-0.0678            3.4169+-0.0500          might be 1.0110x faster
   int-or-other-mul-then-get-by-val                   3.5915+-0.0901     ?      3.9361+-0.6230        ? might be 1.0960x slower
   int-or-other-neg-then-get-by-val                   3.8596+-0.1058     ?      3.8797+-0.1669        ?
   int-or-other-neg-zero-then-get-by-val             15.3652+-0.3771     ?     15.4408+-0.5653        ?
   int-or-other-sub-then-get-by-val                   4.1926+-0.3401            4.0048+-0.0705          might be 1.0469x faster
   int-or-other-sub                                   3.4665+-0.1053            3.3845+-0.0612          might be 1.0242x faster
   int-overflow-local                                 3.9411+-0.0235     ?      3.9579+-0.0802        ?
   Int16Array-alloc-long-lived                       45.9919+-0.7681     ?     47.9485+-1.3440        ? might be 1.0425x slower
   Int16Array-bubble-sort-with-byteLength            17.8592+-1.2230           17.5242+-0.1616          might be 1.0191x faster
   Int16Array-bubble-sort                            18.0943+-0.5513           18.0746+-0.3566        
   Int16Array-load-int-mul                            1.4037+-0.0497     ?      1.4344+-0.0537        ? might be 1.0219x slower
   Int16Array-to-Int32Array-set                      43.8099+-0.8927     ?     43.9587+-2.0841        ?
   Int32Array-alloc-large                            12.1019+-0.6316     ?     12.9754+-0.9018        ? might be 1.0722x slower
   Int32Array-alloc-long-lived                       54.9708+-1.5492     ?     55.0248+-1.7429        ?
   Int32Array-alloc                                   2.7409+-0.2002     ?      2.8403+-0.3071        ? might be 1.0363x slower
   Int32Array-Int8Array-view-alloc                    6.0284+-0.2558            5.9403+-0.1909          might be 1.0148x faster
   int52-spill                                        4.4882+-0.0504     ?      4.5686+-0.2015        ? might be 1.0179x slower
   Int8Array-alloc-long-lived                        41.9918+-1.9272           40.2285+-0.6346          might be 1.0438x faster
   Int8Array-load-with-byteLength                     3.4107+-0.2222            3.3640+-0.0625          might be 1.0139x faster
   Int8Array-load                                     3.4136+-0.1107     ?      3.7002+-0.2579        ? might be 1.0840x slower
   integer-divide                                    10.2019+-0.0709     ?     10.2446+-0.1389        ?
   integer-modulo                                     1.5895+-0.1275     ?      1.6460+-0.2057        ? might be 1.0355x slower
   is-boolean-fold-tricky                             3.6218+-0.0667     ?      3.6294+-0.0959        ?
   is-boolean-fold                                    2.6307+-0.0247            2.5876+-0.0319          might be 1.0166x faster
   is-function-fold-tricky-internal-function   
                                                      9.7915+-0.3773            9.6386+-0.2522          might be 1.0159x faster
   is-function-fold-tricky                            3.9284+-0.4679            3.8539+-0.3927          might be 1.0193x faster
   is-function-fold                                   2.6281+-0.0550     ?      2.6617+-0.0556        ? might be 1.0128x slower
   is-number-fold-tricky                              3.7077+-0.1273            3.6167+-0.0301          might be 1.0252x faster
   is-number-fold                                     2.6107+-0.0589     ?      2.6112+-0.0173        ?
   is-object-or-null-fold-functions                   2.6446+-0.0252            2.6436+-0.0501        
   is-object-or-null-fold-less-tricky                 3.7839+-0.2444            3.6847+-0.0579          might be 1.0269x faster
   is-object-or-null-fold-tricky                      4.4562+-0.0918     ?      4.4773+-0.0621        ?
   is-object-or-null-fold                             2.6464+-0.0267     ?      2.6594+-0.0776        ?
   is-object-or-null-trickier-function                3.7288+-0.0879     ?      3.7503+-0.0620        ?
   is-object-or-null-trickier-internal-function   
                                                      9.6041+-0.1733     ?      9.8485+-0.1326        ? might be 1.0254x slower
   is-object-or-null-tricky-function                  3.8137+-0.1850            3.7094+-0.0712          might be 1.0281x faster
   is-object-or-null-tricky-internal-function   
                                                      7.1667+-0.1232     ?      7.2501+-0.0671        ? might be 1.0116x slower
   is-string-fold-tricky                              3.6298+-0.0525     ?      3.6428+-0.0851        ?
   is-string-fold                                     2.5950+-0.0550            2.5923+-0.0510        
   is-undefined-fold-tricky                           2.8072+-0.0262     ?      3.0736+-0.5586        ? might be 1.0949x slower
   is-undefined-fold                                  2.6684+-0.1452            2.6371+-0.0301          might be 1.0119x faster
   JSONP-negative-0                                   0.2512+-0.0307     ?      0.2543+-0.0186        ? might be 1.0124x slower
   large-int-captured                                 3.9194+-0.2470            3.7739+-0.1667          might be 1.0386x faster
   large-int-neg                                     13.9124+-0.2626     ?     14.0268+-0.5026        ?
   large-int                                         12.9276+-0.2431     ?     13.3826+-0.6343        ? might be 1.0352x slower
   load-varargs-elimination                          20.7050+-0.6937     ?     20.9970+-1.5988        ? might be 1.0141x slower
   logical-not-weird-types                            2.7457+-0.0355     ?      2.8655+-0.1192        ? might be 1.0436x slower
   logical-not                                        3.8721+-0.0980     ?      4.0562+-0.3533        ? might be 1.0475x slower
   lots-of-fields                                     8.4889+-0.1485     ?      8.8735+-0.3558        ? might be 1.0453x slower
   make-indexed-storage                               2.8316+-0.1228            2.7818+-0.0519          might be 1.0179x faster
   make-rope-cse                                      3.8218+-0.5091            3.5540+-0.0738          might be 1.0753x faster
   marsaglia-larger-ints                             31.5935+-0.4695     ?     31.9410+-1.1375        ? might be 1.0110x slower
   marsaglia-osr-entry                               21.3730+-0.6321           20.9876+-0.3617          might be 1.0184x faster
   math-with-out-of-bounds-array-values              21.8956+-0.7243     ?     22.1317+-1.2004        ? might be 1.0108x slower
   max-boolean                                        2.7966+-0.4559            2.6514+-0.0654          might be 1.0548x faster
   method-on-number                                  17.5921+-2.3271           16.1689+-0.9431          might be 1.0880x faster
   min-boolean                                        2.5912+-0.0596     ?      2.6452+-0.0487        ? might be 1.0208x slower
   minus-boolean-double                               3.0644+-0.0229     ?      3.1033+-0.0781        ? might be 1.0127x slower
   minus-boolean                                      2.3256+-0.0849     ?      2.3626+-0.0771        ? might be 1.0159x slower
   misc-strict-eq                                    27.5782+-0.6645     ?     28.5178+-1.9061        ? might be 1.0341x slower
   mod-boolean-double                                11.0269+-0.3246           10.9732+-0.0827        
   mod-boolean                                        8.2103+-0.0451     ?      8.3065+-0.1911        ? might be 1.0117x slower
   mul-boolean-double                                 3.6419+-0.1250     ?      3.7218+-0.2017        ? might be 1.0219x slower
   mul-boolean                                        2.8734+-0.1285            2.8043+-0.0723          might be 1.0247x faster
   neg-boolean                                        3.1650+-0.1830            3.0705+-0.0554          might be 1.0308x faster
   negative-zero-divide                               0.3574+-0.0606            0.3281+-0.0047          might be 1.0894x faster
   negative-zero-modulo                               0.3252+-0.0039     ?      0.3497+-0.0410        ? might be 1.0756x slower
   negative-zero-negate                               0.4047+-0.2153            0.3241+-0.0176          might be 1.2485x faster
   nested-function-parsing                           44.4465+-0.7348     ?     44.5638+-0.7258        ?
   new-array-buffer-dead                             89.0078+-1.7278           87.2928+-1.0476          might be 1.0196x faster
   new-array-buffer-push                              6.4101+-0.7057            6.0497+-0.3552          might be 1.0596x faster
   new-array-dead                                    15.4235+-1.2700           15.2636+-0.9277          might be 1.0105x faster
   new-array-push                                     3.5560+-0.4794            3.3837+-0.2020          might be 1.0509x faster
   no-inline-constructor                             32.0130+-1.6072     ?     33.0959+-1.8180        ? might be 1.0338x slower
   number-test                                        3.1161+-0.6992            3.0123+-0.3902          might be 1.0344x faster
   object-closure-call                                5.1105+-0.0520            5.0861+-0.0664        
   object-get-own-property-symbols-on-large-array   
                                                      4.1708+-0.3296            4.1292+-0.2494          might be 1.0101x faster
   object-test                                        2.7287+-0.1827            2.6386+-0.0463          might be 1.0341x faster
   obvious-sink-pathology-taken                      98.7021+-1.4791     ?     99.0081+-1.1866        ?
   obvious-sink-pathology                            93.5946+-1.4385     ?     94.3019+-1.0521        ?
   obviously-elidable-new-object                     29.6667+-1.7614           29.5003+-1.9391        
   plus-boolean-arith                                 2.3333+-0.0510     ?      2.3924+-0.0567        ? might be 1.0254x slower
   plus-boolean-double                                3.1956+-0.1133            3.0765+-0.0539          might be 1.0387x faster
   plus-boolean                                       2.6000+-0.1819            2.4764+-0.0548          might be 1.0499x faster
   poly-chain-access-different-prototypes-simple   
                                                      3.2030+-0.0531     ?      3.4128+-0.1765        ? might be 1.0655x slower
   poly-chain-access-different-prototypes             3.2477+-0.1094     ?      3.2568+-0.0385        ?
   poly-chain-access-simpler                          3.3506+-0.4195     ?      3.4652+-0.0766        ? might be 1.0342x slower
   poly-chain-access                                  3.2027+-0.0381     ?      3.3022+-0.0802        ? might be 1.0311x slower
   poly-stricteq                                     50.5701+-2.4948     ?     50.9478+-2.2033        ?
   polymorphic-array-call                             1.2616+-0.1126                ERROR             
   polymorphic-get-by-id                              2.8157+-0.1135     ?      2.8413+-0.0797        ?
   polymorphic-put-by-id                             24.7850+-1.0770     !     28.5172+-0.6276        ! definitely 1.1506x slower
   polymorphic-put-by-val-with-string                25.0303+-0.8124     !     29.5797+-1.7070        ! definitely 1.1818x slower
   polymorphic-put-by-val-with-symbol                25.5333+-1.2361     !     27.6089+-0.3341        ! definitely 1.0813x slower
   polymorphic-structure                             12.9117+-0.3324     ?     13.0308+-0.5017        ?
   polyvariant-monomorphic-get-by-id                  6.3628+-0.8938     ?      7.3165+-1.2692        ? might be 1.1499x slower
   proto-getter-access                                8.2995+-0.2186     ?      8.3900+-0.2011        ? might be 1.0109x slower
   prototype-access-with-mutating-prototype           5.3836+-0.0769     ?      5.4852+-0.1530        ? might be 1.0189x slower
   put-by-id-replace-and-transition                   7.8712+-0.6463            7.5909+-0.3264          might be 1.0369x faster
   put-by-id-slightly-polymorphic                     2.6514+-0.1192     ?      2.7445+-0.1776        ? might be 1.0351x slower
   put-by-id                                          9.5186+-0.4856     ?      9.5272+-0.3246        ?
   put-by-val-direct                                  0.4873+-0.2740            0.3386+-0.0210          might be 1.4395x faster
   put-by-val-large-index-blank-indexing-type   
                                                      5.1635+-0.2846     ?      5.4386+-0.6054        ? might be 1.0533x slower
   put-by-val-machine-int                             2.4363+-0.1803            2.4097+-0.1703          might be 1.0110x faster
   put-by-val-with-string-replace-and-transition   
                                                      9.7352+-0.0957     ?     10.2951+-0.6629        ? might be 1.0575x slower
   put-by-val-with-string-slightly-polymorphic   
                                                      2.9011+-0.1494            2.8328+-0.0399          might be 1.0241x faster
   put-by-val-with-string                            10.2152+-0.5029     ?     10.2219+-0.4663        ?
   put-by-val-with-symbol-replace-and-transition   
                                                     11.5022+-0.4566     ?     12.0575+-0.9607        ? might be 1.0483x slower
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.1166+-0.0834            3.1126+-0.0678        
   put-by-val-with-symbol                            11.0364+-0.5235           10.2553+-0.5247          might be 1.0762x faster
   rare-osr-exit-on-local                            13.4074+-0.1971     ?     13.9234+-0.7151        ? might be 1.0385x slower
   register-pressure-from-osr                        16.4147+-0.4987     ?     16.5071+-0.4117        ?
   repeat-multi-get-by-offset                        20.7601+-0.2696     ?     20.9120+-0.7323        ?
   setter-prototype                                   7.6626+-0.2313     ?      7.6734+-0.2092        ?
   setter                                             5.5045+-0.4129            5.4978+-0.4401        
   simple-activation-demo                            24.3068+-0.4168     ?     24.4869+-0.8986        ?
   simple-getter-access                              10.6019+-0.2463           10.5633+-0.2311        
   simple-poly-call-nested                            8.4321+-0.7550            8.2975+-0.8184          might be 1.0162x faster
   simple-poly-call                                   1.1296+-0.0323            1.1294+-0.0291        
   sin-boolean                                       20.6144+-1.8443     ?     21.0148+-1.8351        ? might be 1.0194x slower
   singleton-scope                                   55.0364+-1.1251     ?     55.4321+-0.9536        ?
   sink-function                                      9.8300+-0.4396     ?     10.3881+-1.2097        ? might be 1.0568x slower
   sink-huge-activation                              16.1642+-1.2933     ?     17.0401+-0.7199        ? might be 1.0542x slower
   sinkable-new-object-dag                           55.5725+-1.5707           54.5355+-1.3000          might be 1.0190x faster
   sinkable-new-object-taken                         43.5704+-1.5172           43.5632+-0.9638        
   sinkable-new-object                               29.4796+-0.3823     ?     29.6930+-0.3820        ?
   slow-array-profile-convergence                     2.3567+-0.0810     ?      2.3761+-0.0334        ?
   slow-convergence                                   2.2894+-0.0625            2.2575+-0.0461          might be 1.0142x faster
   slow-ternaries                                    17.5651+-0.4812           17.2562+-0.3153          might be 1.0179x faster
   sorting-benchmark                                 16.8188+-0.2816     ?     17.3362+-1.1051        ? might be 1.0308x slower
   sparse-conditional                                 1.1884+-0.1133            1.1177+-0.0057          might be 1.0632x faster
   splice-to-remove                                  12.1964+-0.9621           11.8202+-0.1882          might be 1.0318x faster
   string-char-code-at                               13.1814+-0.4328           12.9048+-0.4135          might be 1.0214x faster
   string-concat-object                               2.0890+-0.1280     ?      2.3130+-0.3069        ? might be 1.1072x slower
   string-concat-pair-object                          2.1667+-0.2016            2.1027+-0.1746          might be 1.0305x faster
   string-concat-pair-simple                          9.1200+-0.2439     ?     10.2148+-1.3996        ? might be 1.1201x slower
   string-concat-simple                               9.3874+-0.4654     ?      9.7610+-0.7386        ? might be 1.0398x slower
   string-cons-repeat                                 6.7603+-0.7195            6.5241+-0.4478          might be 1.0362x faster
   string-cons-tower                                  6.6130+-0.2664     ?      6.6937+-0.4509        ? might be 1.0122x slower
   string-equality                                   15.8530+-0.2138     ?     15.9399+-0.2099        ?
   string-get-by-val-big-char                         6.5070+-0.1476            6.4845+-0.1965        
   string-get-by-val-out-of-bounds-insane             3.0780+-0.1275     ?      3.0957+-0.1170        ?
   string-get-by-val-out-of-bounds                    4.2801+-0.6171            3.9026+-0.0661          might be 1.0967x faster
   string-get-by-val                                  2.7802+-0.0207     ?      2.7954+-0.0465        ?
   string-hash                                        1.7963+-0.0223            1.7885+-0.0553        
   string-long-ident-equality                        13.3568+-0.3418           13.2543+-0.2242        
   string-out-of-bounds                              10.0272+-0.2119           10.0070+-0.2392        
   string-repeat-arith                               27.3014+-0.9589           27.1584+-0.4409        
   string-sub                                        53.5487+-1.4652           53.1037+-1.6422        
   string-test                                        2.8773+-0.2132            2.7502+-0.0607          might be 1.0462x faster
   string-var-equality                               25.7118+-0.5069           25.2362+-0.4450          might be 1.0188x faster
   structure-hoist-over-transitions                   2.3719+-0.0493     ?      2.4723+-0.2688        ? might be 1.0423x slower
   substring-concat-weird                            35.9517+-1.0117     ?     36.3435+-1.4392        ? might be 1.0109x slower
   substring-concat                                  39.7954+-1.2485     ?     39.9030+-1.1510        ?
   substring                                         45.2133+-1.3888           44.2791+-0.6978          might be 1.0211x faster
   switch-char-constant                               2.6959+-0.1427            2.6221+-0.0473          might be 1.0281x faster
   switch-char                                        5.6748+-0.7996     ?      5.7040+-0.8403        ?
   switch-constant                                    8.0575+-0.7252            7.8456+-0.7597          might be 1.0270x faster
   switch-string-basic-big-var                       13.3040+-0.2213     ?     13.3959+-0.2766        ?
   switch-string-basic-big                           14.1127+-0.9837           13.9955+-0.8126        
   switch-string-basic-var                           12.9421+-0.4662           12.6441+-0.2105          might be 1.0236x faster
   switch-string-basic                               12.3180+-0.1770           12.2356+-0.2656        
   switch-string-big-length-tower-var                17.7317+-0.4247     ?     17.7591+-0.3601        ?
   switch-string-length-tower-var                    13.3729+-0.3905           13.0472+-0.2952          might be 1.0250x faster
   switch-string-length-tower                        11.6212+-0.1933     ?     11.6571+-0.5260        ?
   switch-string-short                               11.8155+-0.5449           11.5797+-0.1011          might be 1.0204x faster
   switch                                            11.2640+-0.4091     ?     11.3058+-0.5703        ?
   tear-off-arguments-simple                          2.9888+-0.1363     ?      3.0495+-0.1585        ? might be 1.0203x slower
   tear-off-arguments                                 4.1885+-0.2707            4.0549+-0.5055          might be 1.0330x faster
   temporal-structure                                11.7441+-0.1933     ?     11.7633+-0.2253        ?
   to-int32-boolean                                  12.6164+-0.4174           12.3920+-0.0933          might be 1.0181x faster
   try-catch-get-by-val-cloned-arguments             14.0280+-0.5272           13.9606+-0.7588        
   try-catch-get-by-val-direct-arguments              6.4890+-0.6329            6.2231+-0.2252          might be 1.0427x faster
   try-catch-get-by-val-scoped-arguments              7.6760+-0.3974            7.4541+-0.2315          might be 1.0298x faster
   typed-array-get-set-by-val-profiling              27.0093+-0.9579           26.7186+-0.5656          might be 1.0109x faster
   undefined-property-access                        224.9176+-0.8511     ?    225.8445+-2.0551        ?
   undefined-test                                     2.8604+-0.0736     ?      2.9276+-0.0392        ? might be 1.0235x slower
   unprofiled-licm                                   13.6104+-0.2384     ?     13.9234+-0.5151        ? might be 1.0230x slower
   varargs-call                                      12.4609+-0.2951     ?     12.5722+-0.2279        ?
   varargs-construct-inline                          22.8646+-1.0615           21.7610+-1.1961          might be 1.0507x faster
   varargs-construct                                 20.4170+-1.2253           19.8159+-0.9795          might be 1.0303x faster
   varargs-inline                                     8.1285+-0.3946            7.7846+-0.1182          might be 1.0442x faster
   varargs-strict-mode                                9.0262+-0.6311            8.6633+-0.1398          might be 1.0419x faster
   varargs                                            8.5977+-0.1317     ?      9.0539+-1.1400        ? might be 1.0531x slower
   weird-inlining-const-prop                          2.0829+-0.0803            2.0679+-0.2963        

   <geometric>                                        7.7813+-0.0288                ERROR             

                                                        TipOfTree                 NewPolyIC                                     
AsmBench:
   bigfib.cpp                                       448.3273+-8.3243     ?    453.2424+-5.6490        ? might be 1.0110x slower
   cray.c                                           398.2515+-3.2341          398.1871+-2.4686        
   dry.c                                            420.0529+-7.9347          412.8385+-7.9821          might be 1.0175x faster
   FloatMM.c                                        681.9023+-2.0043     ?    684.2348+-3.5513        ?
   gcc-loops.cpp                                   3423.1442+-17.6593        3416.4462+-20.5228       
   n-body.c                                         819.8316+-1.5053     ?    823.9700+-7.8652        ?
   Quicksort.c                                      405.2087+-6.5606          404.3651+-0.8151        
   stepanov_container.cpp                          3546.6263+-16.1474        3526.1716+-22.6991       
   Towers.c                                         235.6921+-1.8398     ?    236.7061+-3.7922        ?

   <geometric>                                      714.5940+-2.0892          714.3088+-2.2449          might be 1.0004x faster

                                                        TipOfTree                 NewPolyIC                                     
CompressionBench:
   huffman                                           58.9485+-0.8693     ?     59.9698+-0.6593        ? might be 1.0173x slower
   arithmetic-simple                                270.1069+-0.6587     ?    271.5894+-2.7625        ?
   arithmetic-precise                               243.8536+-3.0425          240.2072+-1.9811          might be 1.0152x faster
   arithmetic-complex-precise                       241.4851+-1.6367     ?    242.3879+-3.3590        ?
   arithmetic-precise-order-0                       278.4817+-0.7713     ?    280.1524+-1.9989        ?
   arithmetic-precise-order-1                       305.4280+-5.7719          304.0262+-1.8489        
   arithmetic-precise-order-2                       350.2224+-2.1488     ?    350.7878+-4.8364        ?
   arithmetic-simple-order-1                        325.7271+-1.3399     ?    326.7786+-2.9401        ?
   arithmetic-simple-order-2                        380.1700+-3.9336     ^    374.6579+-1.4940        ^ definitely 1.0147x faster
   lz-string                                        312.2294+-3.3868          311.1443+-5.5307        

   <geometric>                                      253.1143+-0.6356          253.0992+-0.7479          might be 1.0001x faster

                                                        TipOfTree                 NewPolyIC                                     
Geomean of preferred means:
   <scaled-result>                                   50.9769+-0.1137                ERROR
Comment 32 Filip Pizlo 2015-09-09 16:07:51 PDT
(In reply to comment #30)
> (In reply to comment #29)
> > Comment on attachment 260868 [details]
> > the patch
> > 
> > Mac EWS failure appears repeatable. There seems to be a bug here.
> 
> Yup, I'm looking at it.

This turned out to be an existing bug in BinarySwitch.  This patch makes it easy to reproduce this using typed array tests.  I'll upload a new patch shortly that fixes that BinarySwitch bug and adds a test...
Comment 33 Filip Pizlo 2015-09-09 16:14:23 PDT
Created attachment 260886 [details]
the patch

And now, with fixes to the array-message-passing bug.
Comment 34 WebKit Commit Bot 2015-09-09 16:16:37 PDT
Attachment 260886 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:560:  Declaration has space between type name and * in numberOfRegsForCall * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:629:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:677:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:840:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:870:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:143:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:217:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61:  The parameter name "value" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 35 Filip Pizlo 2015-09-09 20:00:50 PDT
Created attachment 260906 [details]
the patch

Fixes for 32-bit x86.
Comment 36 WebKit Commit Bot 2015-09-09 20:03:54 PDT
Attachment 260906 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:560:  Declaration has space between type name and * in numberOfRegsForCall * sizeof  [whitespace/declaration] [3]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:629:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:677:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:844:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:875:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:143:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/BinarySwitch.cpp:217:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp:56:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61:  The parameter name "value" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 in 29 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 37 Michael Saboff 2015-09-10 11:16:27 PDT
Comment on attachment 260906 [details]
the patch

r=me
Comment 38 Filip Pizlo 2015-09-10 12:50:18 PDT
Landed in http://trac.webkit.org/changeset/189586
Comment 39 Chris Dumez 2015-09-10 19:50:07 PDT
Looks like a 4% progression on Speedometer :)