Bug 148717 - 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
Summary: There should be one stub hanging off an inline cache that contains code for a...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: Other
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
: 148718 (view as bug list)
Depends on: 148718 148915 148943
Blocks: 148610
  Show dependency treegraph
 
Reported: 2015-09-02 10:39 PDT by Filip Pizlo
Modified: 2015-09-10 19:50 PDT (History)
16 users (show)

See Also:


Attachments
work in progress (46.52 KB, patch)
2015-09-04 15:04 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
just a bit more (53.87 KB, patch)
2015-09-04 16:02 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
some more stuff (65.22 KB, patch)
2015-09-05 11:44 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
more glue (96.12 KB, patch)
2015-09-05 13:14 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
starting to get interesting (116.04 KB, patch)
2015-09-06 12:06 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
inching towards victory (160.99 KB, patch)
2015-09-06 13:16 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
making this change a little less incremental (183.93 KB, patch)
2015-09-07 13:28 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it is written (201.04 KB, patch)
2015-09-08 10:36 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
rebased (201.98 KB, patch)
2015-09-08 10:39 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
inching towards victory (229.86 KB, patch)
2015-09-08 11:32 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it compiles! (236.45 KB, patch)
2015-09-08 13:02 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it does simple things (245.83 KB, patch)
2015-09-08 14:46 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
more (265.66 KB, patch)
2015-09-08 16:06 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
rebased again (266.11 KB, patch)
2015-09-08 16:31 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
it's passing tests so much (266.11 KB, patch)
2015-09-08 16:53 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (267.87 KB, patch)
2015-09-08 22:39 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (269.57 KB, patch)
2015-09-08 22:44 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (269.65 KB, patch)
2015-09-09 12:52 PDT, Filip Pizlo
ggaren: review-
buildbot: commit-queue-
Details | Formatted Diff | Diff
Archive of layout-test-results from ews103 for mac-mavericks (617.78 KB, application/zip)
2015-09-09 13:41 PDT, Build Bot
no flags Details
the patch (288.22 KB, patch)
2015-09-09 16:14 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (289.65 KB, patch)
2015-09-09 20:00 PDT, Filip Pizlo
msaboff: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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 :)