Bug 145705 - Introduce getter definition into static hash tables and use it for getters in RegExp.prototype.
Summary: Introduce getter definition into static hash tables and use it for getters in...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Yusuke Suzuki
URL:
Keywords:
: 145706 145738 (view as bug list)
Depends on:
Blocks: 145599
  Show dependency treegraph
 
Reported: 2015-06-05 11:42 PDT by Geoffrey Garen
Modified: 2015-06-16 13:43 PDT (History)
6 users (show)

See Also:


Attachments
Patch (40.43 KB, patch)
2015-06-07 13:54 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (40.33 KB, patch)
2015-06-07 14:04 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (42.70 KB, patch)
2015-06-07 14:18 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (40.56 KB, patch)
2015-06-07 14:19 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (48.68 KB, patch)
2015-06-07 14:46 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (48.61 KB, patch)
2015-06-07 15:49 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Archive of layout-test-results from ews103 for mac-mavericks (684.85 KB, application/zip)
2015-06-07 16:41 PDT, Build Bot
no flags Details
Archive of layout-test-results from ews107 for mac-mavericks-wk2 (738.37 KB, application/zip)
2015-06-07 17:14 PDT, Build Bot
no flags Details
Patch (86.24 KB, patch)
2015-06-07 21:27 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (86.37 KB, patch)
2015-06-09 06:44 PDT, Yusuke Suzuki
darin: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Geoffrey Garen 2015-06-05 11:42:29 PDT
See, for example, https://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.flags.

We've already made DOM properties accessors. Now we need to do it for JS properties in most cases.

Note that JS properties are slightly different from DOM properties because they are own property accessors, rather than prototype property accessors.
Comment 1 Jordan Harband 2015-06-05 13:11:40 PDT
*** Bug 145706 has been marked as a duplicate of this bug. ***
Comment 2 Jordan Harband 2015-06-05 13:13:02 PDT
* According to the spec, RegExp.prototype.global, for example, is indeed a prototype property accessor in ES6, not an own property accessor.
Comment 3 Yusuke Suzuki 2015-06-07 09:54:33 PDT
Other examples: Map.prototype.size, Set.prototype.size
Comment 4 Yusuke Suzuki 2015-06-07 13:44:52 PDT
*** Bug 145738 has been marked as a duplicate of this bug. ***
Comment 5 Yusuke Suzuki 2015-06-07 13:54:38 PDT
Created attachment 254446 [details]
Patch
Comment 6 Yusuke Suzuki 2015-06-07 14:04:38 PDT
Created attachment 254447 [details]
Patch
Comment 7 Yusuke Suzuki 2015-06-07 14:08:00 PDT
Comment on attachment 254447 [details]
Patch

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

Added comments for the ease of the review.

> Source/JavaScriptCore/create_hash_table:100
> +            $hasSetter = "true";

`hasSetter` is needed because it implicitly adds null function setters.

> Source/JavaScriptCore/runtime/JSObject.cpp:82
> +            if ((!(iter->attributes() & DontEnum) || mode.includeDontEnumProperties()) && !((iter->attributes() & BuiltinOrFunctionOrAccessor) && didReify))

Add property name for accessors in static hash table.

> Source/JavaScriptCore/runtime/JSObject.cpp:436
> +                if (!obj->staticFunctionsReified() || !(entry->attributes() & BuiltinOrFunctionOrAccessor)) {

If the object is already reified, BuiltinOrFunctionOrAccessor entries should be reified into the structure's hashtable and object's value.
So this `putEntry` should not be executed.

> Source/JavaScriptCore/runtime/JSObject.cpp:1299
> +        if (!(entry->attributes() & BuiltinOrFunctionOrAccessor)) {

In JSObject::deleteProperty, we always reify the object's static functions.
So `thisObject->staticFunctionsReified()` is always true.

> Source/JavaScriptCore/runtime/JSObject.cpp:1659
> +            if (iter->attributes() & BuiltinOrFunctionOrAccessor)

When reifying the static functions, we also reify the accessors.

> Source/JavaScriptCore/runtime/Lookup.cpp:78
> +            thisObj->putDirectNonIndexAccessor(vm, propertyName, accessor, entry->attributes());

Reify the accessor (getter).

> Source/JavaScriptCore/runtime/Lookup.cpp:86
> +        slot.setCacheableGetterSlot(thisObj, attributes, jsCast<GetterSetter*>(thisObj->getDirect(offset)), offset);

In the case for accessor, we set cacheable getter slot.

> Source/JavaScriptCore/runtime/Lookup.h:214
> +    if (entry->attributes() & BuiltinOrFunctionOrAccessor)

Also reify the accessor.

> Source/JavaScriptCore/runtime/Lookup.h:276
> +            throwTypeError(exec, StrictModeReadonlyPropertyWriteError);

This is called when the accessor is not reified. So null setter should work, this raises the error if it's in strict mode.
Comment 8 Yusuke Suzuki 2015-06-07 14:18:20 PDT
Created attachment 254448 [details]
Patch
Comment 9 Yusuke Suzuki 2015-06-07 14:19:11 PDT
Created attachment 254449 [details]
Patch
Comment 10 Yusuke Suzuki 2015-06-07 14:46:32 PDT
Created attachment 254450 [details]
Patch
Comment 11 Yusuke Suzuki 2015-06-07 15:49:20 PDT
Created attachment 254455 [details]
Patch
Comment 12 Build Bot 2015-06-07 16:41:54 PDT
Comment on attachment 254455 [details]
Patch

Attachment 254455 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/5157365313699840

New failing tests:
js/dom/getOwnPropertyDescriptor.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A8.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A10.html
ietestcenter/Javascript/15.2.3.3-4-215.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A8.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A10.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A10.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A10.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A9.html
js/mozilla/strict/15.10.7.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A8.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A9.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A9.html
js/pic/cached-named-property-getter.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A9.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A8.html
ietestcenter/Javascript/15.2.3.3-4-212.html
ietestcenter/Javascript/15.2.3.3-4-213.html
ietestcenter/Javascript/15.2.3.3-4-214.html
Comment 13 Build Bot 2015-06-07 16:41:58 PDT
Created attachment 254459 [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 14 Build Bot 2015-06-07 17:14:42 PDT
Comment on attachment 254455 [details]
Patch

Attachment 254455 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/5149776643358720

New failing tests:
ietestcenter/Javascript/15.2.3.3-4-214.html
js/dom/getOwnPropertyDescriptor.html
ietestcenter/Javascript/15.2.3.3-4-215.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A8.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A9.html
js/mozilla/strict/15.10.7.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A10.html
js/pic/cached-named-property-getter.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A10.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A9.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A8.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A9.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A10.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A9.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A8.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A8.html
ietestcenter/Javascript/15.2.3.3-4-212.html
ietestcenter/Javascript/15.2.3.3-4-213.html
sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A10.html
Comment 15 Build Bot 2015-06-07 17:14:45 PDT
Created attachment 254462 [details]
Archive of layout-test-results from ews107 for mac-mavericks-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews107  Port: mac-mavericks-wk2  Platform: Mac OS X 10.9.5
Comment 16 Darin Adler 2015-06-07 17:43:54 PDT
Need to investigate those 20 failures. Should be pretty quick to figure out what’s going on!
Comment 17 Darin Adler 2015-06-07 17:44:55 PDT
What about the performance testing aspect of making this change?

I’ll be happy to review once the patch passes tests (or includes changes to the tests or test expectations) and is known to be performance neutral or better.
Comment 18 Yusuke Suzuki 2015-06-07 17:46:53 PDT
(In reply to comment #16)
> Need to investigate those 20 failures. Should be pretty quick to figure out
> what’s going on!

Yeah, that is because this ES6 change breaks the ES5 compatibility!
So sputnik tests (ES5 conformance suite) are broken by it.
I'll check the tests and add skip marks.
Comment 19 Yusuke Suzuki 2015-06-07 17:48:05 PDT
(In reply to comment #17)
> What about the performance testing aspect of making this change?
> 
> I’ll be happy to review once the patch passes tests (or includes changes to
> the tests or test expectations) and is known to be performance neutral or
> better.

Yay, I'll take a performance results with run-javascriptcore-benchmarks :)
Comment 20 Darin Adler 2015-06-07 18:00:10 PDT
(In reply to comment #18)
> Yeah, that is because this ES6 change breaks the ES5 compatibility!
> So sputnik tests (ES5 conformance suite) are broken by it.
> I'll check the tests and add skip marks.

It would be best to change the tests to expect the correct behavior we now intend. The tests themselves aren’t sacred.

Second best would be to change the test expected output.

Skipping the tests using TestExpectations would be the third best solution; not so great to just stop running the tests!
Comment 21 Yusuke Suzuki 2015-06-07 18:38:00 PDT
(In reply to comment #20)
> (In reply to comment #18)
> > Yeah, that is because this ES6 change breaks the ES5 compatibility!
> > So sputnik tests (ES5 conformance suite) are broken by it.
> > I'll check the tests and add skip marks.
> 
> It would be best to change the tests to expect the correct behavior we now
> intend. The tests themselves aren’t sacred.
> 
> Second best would be to change the test expected output.
> 
> Skipping the tests using TestExpectations would be the third best solution;
> not so great to just stop running the tests!

OK, so I'll modify the sputnik tests itself to match to the ES6 spec!
Comment 22 Yusuke Suzuki 2015-06-07 21:27:28 PDT
Created attachment 254472 [details]
Patch
Comment 23 Yusuke Suzuki 2015-06-08 00:25:21 PDT
Peformance results. Looks neutral.

CPU: i7-2860QM CPU @ 2.50GH x8, hyperthreaded (phys 4 cores)
RAM: 8GB
OS: Ubuntu 14.02 Linux 3.13.0
Port: GTK
FTL: enabled

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on gpgpu.

VMs tested:
"baseline" at /home/yusuke/dev/WebKit/WebKitBuild/Release/bin/jsc
"getter" at /home/yusuke/dev/WebKit/WebKitBuild/accessors/Release/bin/jsc

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

                                                         baseline                   getter                                      
SunSpider:
   3d-cube                                           10.3230+-4.0632     ?     11.1653+-0.9033        ? might be 1.0816x slower
   3d-morph                                          16.4561+-2.2480     ?     16.9640+-0.9715        ? might be 1.0309x slower
   3d-raytrace                                        9.4132+-4.4028     ?     10.8628+-3.5102        ? might be 1.1540x slower
   access-binary-trees                                6.5598+-3.1906            5.5635+-3.3830          might be 1.1791x faster
   access-fannkuch                                   12.1863+-3.2042     ?     16.0941+-2.3842        ? might be 1.3207x slower
   access-nbody                                       4.3480+-0.6436     ?      4.7012+-1.6812        ? might be 1.0812x slower
   access-nsieve                                      4.6207+-0.9652     ?      4.8882+-0.1844        ? might be 1.0579x slower
   bitops-3bit-bits-in-byte                           3.0846+-0.5336            2.8175+-0.7706          might be 1.0948x faster
   bitops-bits-in-byte                                4.8378+-0.8606     ?      5.9041+-1.3213        ? might be 1.2204x slower
   bitops-bitwise-and                                 3.3404+-0.4870            3.1406+-1.2549          might be 1.0636x faster
   bitops-nsieve-bits                                 5.9001+-2.0684     ?      8.1649+-4.0449        ? might be 1.3839x slower
   controlflow-recursive                              3.7723+-1.8601     ?      5.2147+-1.4110        ? might be 1.3824x slower
   crypto-aes                                         6.5762+-0.5407            5.3261+-1.1592          might be 1.2347x faster
   crypto-md5                                         5.7382+-2.9827            5.1003+-2.5527          might be 1.1251x faster
   crypto-sha1                                        5.2145+-1.2318            4.9030+-2.6823          might be 1.0635x faster
   date-format-tofte                                 13.9526+-4.2163           13.3479+-2.3907          might be 1.0453x faster
   date-format-xparb                                 12.0873+-3.2927           11.9645+-4.0928          might be 1.0103x faster
   math-cordic                                        4.6383+-1.1481     ?      4.8565+-0.6403        ? might be 1.0470x slower
   math-partial-sums                                  9.7541+-0.6589            9.7297+-0.7509        
   math-spectral-norm                                 3.8190+-1.9522     ?      4.1092+-0.6828        ? might be 1.0760x slower
   regexp-dna                                         8.3877+-2.5831     ?      8.4338+-1.7495        ?
   string-base64                                      5.5024+-1.1888            5.1218+-0.4556          might be 1.0743x faster
   string-fasta                                      14.7618+-3.1325     ?     17.5420+-3.8480        ? might be 1.1883x slower
   string-tagcloud                                    9.7322+-0.2359     ?      9.9119+-0.1656        ? might be 1.0185x slower
   string-unpack-code                                22.9291+-1.2684           22.3365+-0.6997          might be 1.0265x faster
   string-validate-input                              7.3927+-1.9316            6.1503+-2.4571          might be 1.2020x faster

   <arithmetic>                                       8.2819+-0.7857     ?      8.6275+-0.7516        ? might be 1.0417x slower

                                                         baseline                   getter                                      
LongSpider:
   3d-cube                                          988.4072+-103.8567   ?   1301.6490+-239.7318      ? might be 1.3169x slower
   3d-morph                                        2456.1057+-33.4359        2446.2429+-5.5280        
   3d-raytrace                                      841.4002+-33.1241         826.4860+-20.7400         might be 1.0180x faster
   access-binary-trees                             1173.6040+-37.1489        1170.2628+-22.9595       
   access-fannkuch                                  360.2272+-12.9763         354.3157+-20.9689         might be 1.0167x faster
   access-nbody                                     659.5788+-21.5715         659.3807+-23.1208       
   access-nsieve                                    454.5856+-4.2163          454.3597+-6.9062        
   bitops-3bit-bits-in-byte                          47.3704+-1.2085     ?     47.7468+-0.6954        ?
   bitops-bits-in-byte                              106.6196+-14.4380         104.1619+-4.4699          might be 1.0236x faster
   bitops-nsieve-bits                               435.4111+-3.0308     ?    440.3595+-8.0448        ? might be 1.0114x slower
   controlflow-recursive                            553.6455+-6.3174     ?    584.5848+-141.3550      ? might be 1.0559x slower
   crypto-aes                                       827.4767+-13.7649         818.6660+-22.1602         might be 1.0108x faster
   crypto-md5                                       599.1583+-11.5600    ?    635.6490+-77.0835       ? might be 1.0609x slower
   crypto-sha1                                      801.2195+-23.8479    ?    841.0009+-100.0217      ? might be 1.0497x slower
   date-format-tofte                                918.2163+-19.2521         912.9515+-20.1609       
   date-format-xparb                               1068.8472+-11.2135    ?   1079.5463+-56.2135       ? might be 1.0100x slower
   hash-map                                         194.9741+-15.4533    ?    206.5687+-37.3025       ? might be 1.0595x slower
   math-cordic                                      638.1446+-5.1001          637.7376+-3.2906        
   math-partial-sums                                954.6194+-7.0291          949.5220+-4.0937        
   math-spectral-norm                               921.2036+-60.1841         911.3962+-9.2090          might be 1.0108x faster
   string-base64                                    398.9460+-17.2029    ?    406.8372+-13.1423       ? might be 1.0198x slower
   string-fasta                                     574.2558+-45.6582    ?    601.6500+-22.4709       ? might be 1.0477x slower
   string-tagcloud                                  233.3093+-19.3945         228.2748+-12.4247         might be 1.0221x faster

   <geometric>                                      540.4231+-8.2126     ?    551.2099+-9.7871        ? might be 1.0200x slower

                                                         baseline                   getter                                      
V8Spider:
   crypto                                            61.4042+-4.4561     ?     68.4435+-15.4427       ? might be 1.1146x slower
   deltablue                                         95.4640+-16.5596          92.9590+-12.7835         might be 1.0269x faster
   earley-boyer                                      54.4643+-7.5653     ?     54.4751+-2.5282        ?
   raytrace                                          43.7204+-9.1979           41.3267+-6.7536          might be 1.0579x faster
   regexp                                            87.9823+-2.0413     ?     88.5507+-3.9264        ?
   richards                                          81.0155+-7.4014           77.8958+-2.0447          might be 1.0401x faster
   splay                                             47.2629+-9.7251     ?     47.5660+-6.0125        ?

   <geometric>                                       64.4126+-1.2956     ?     64.5027+-4.6126        ? might be 1.0014x slower

                                                         baseline                   getter                                      
Octane:
   encrypt                                           0.25027+-0.00372    ?     0.25244+-0.00469       ?
   decrypt                                           4.43072+-0.03482    ?     4.48285+-0.18384       ? might be 1.0118x slower
   deltablue                                x2       0.22372+-0.00727    ?     0.22888+-0.00976       ? might be 1.0230x slower
   earley                                            0.47746+-0.02216    ?     0.49270+-0.01776       ? might be 1.0319x slower
   boyer                                             6.00263+-0.08106    ?     6.00862+-0.04066       ?
   navier-stokes                            x2       5.32181+-0.02307    ?     5.32292+-0.01866       ?
   raytrace                                 x2       1.53026+-0.10320    ?     1.53405+-0.06794       ?
   richards                                 x2       0.13944+-0.00516          0.13792+-0.00149         might be 1.0110x faster
   splay                                    x2       0.42325+-0.00819    ?     0.42584+-0.00911       ?
   regexp                                   x2      34.66524+-0.52512         33.97383+-0.38724         might be 1.0204x faster
   pdfjs                                    x2      51.19051+-2.82132    ?    52.03869+-1.52161       ? might be 1.0166x slower
   mandreel                                 x2      58.17220+-4.13871    ?    59.01388+-3.42149       ? might be 1.0145x slower
   gbemu                                    x2      50.82903+-2.87794         50.23660+-0.29821         might be 1.0118x faster
   closure                                           0.57645+-0.00874    ?     0.58256+-0.00635       ? might be 1.0106x slower
   jquery                                            7.86113+-0.07301    ?     7.90271+-0.12613       ?
   box2d                                    x2      14.34789+-0.54763         14.23976+-0.37181       
   zlib                                     x2     494.30098+-21.18483       468.38991+-95.53691        might be 1.0553x faster
   typescript                               x2     883.07257+-26.67532   ?   947.63361+-140.92577     ? might be 1.0731x slower

   <geometric>                                       7.50006+-0.08564    ?     7.52754+-0.04846       ? might be 1.0037x slower

                                                         baseline                   getter                                      
Kraken:
   ai-astar                                          234.153+-11.551     ?     242.285+-22.183        ? might be 1.0347x slower
   audio-beat-detection                               98.458+-7.595      !     118.472+-2.507         ! definitely 1.2033x slower
   audio-dft                                          95.188+-6.229      ?     100.485+-5.898         ? might be 1.0557x slower
   audio-fft                                          68.564+-9.678             68.375+-11.899        
   audio-oscillator                                   78.481+-1.640      ?      84.621+-10.004        ? might be 1.0782x slower
   imaging-darkroom                                  153.563+-2.657      ?     159.542+-14.262        ? might be 1.0389x slower
   imaging-desaturate                                 75.705+-4.650             71.419+-0.232           might be 1.0600x faster
   imaging-gaussian-blur                             117.387+-5.097      ?     119.979+-12.944        ? might be 1.0221x slower
   json-parse-financial                               58.621+-3.212             56.614+-3.820           might be 1.0355x faster
   json-stringify-tinderbox                           30.019+-1.648      ?      30.946+-0.439         ? might be 1.0309x slower
   stanford-crypto-aes                                66.331+-1.596      ?      66.701+-1.230         ?
   stanford-crypto-ccm                                54.692+-4.202      ?      55.494+-2.343         ? might be 1.0147x slower
   stanford-crypto-pbkdf2                            125.581+-13.937     ?     130.594+-2.533         ? might be 1.0399x slower
   stanford-crypto-sha256-iterative                   44.329+-3.017             43.820+-2.285           might be 1.0116x faster

   <arithmetic>                                       92.934+-2.552      ?      96.382+-2.500         ? might be 1.0371x slower

                                                         baseline                   getter                                      
JSRegress:
   string-get-by-val-big-char                         8.8832+-1.7520            8.3902+-1.5671          might be 1.0588x faster
   slow-convergence                                   3.9822+-1.2230            3.8671+-0.2749          might be 1.0298x faster
   int-or-other-abs-zero-then-get-by-val             24.4916+-1.4950           23.4986+-0.0712          might be 1.0423x faster
   switch-string-basic                               16.3914+-1.3605           16.2147+-1.8476          might be 1.0109x faster
   integer-modulo                                     4.1779+-2.7008            3.0214+-0.8955          might be 1.3828x faster
   fold-double-to-int                                14.9537+-0.5983     ?     15.2994+-1.3926        ? might be 1.0231x slower
   is-object-or-null-trickier-internal-function   
                                                     15.0844+-2.2885           13.3765+-1.3843          might be 1.1277x faster
   setter-prototype                                  10.3587+-1.0325           10.2032+-0.9129          might be 1.0152x faster
   adapt-to-double-divide                            16.1141+-0.2945     ?     17.1070+-2.7250        ? might be 1.0616x slower
   tear-off-arguments                                 7.8327+-3.4449            7.4809+-2.0225          might be 1.0470x faster
   polymorphic-get-by-id                              4.8622+-1.0162     ?      5.2905+-0.7535        ? might be 1.0881x slower
   is-object-or-null-fold-tricky                      9.6392+-3.8582            9.1734+-1.9929          might be 1.0508x faster
   inline-arguments-local-escape                      6.6157+-1.5252            5.8052+-2.7154          might be 1.1396x faster
   int-or-other-sub                                   5.5308+-1.7420     ?      5.9887+-0.3606        ? might be 1.0828x slower
   new-array-dead                                    17.8738+-0.9380     ?     18.8530+-4.9126        ? might be 1.0548x slower
   rare-osr-exit-on-local                            18.5712+-2.3827           16.8760+-1.2559          might be 1.1005x faster
   obvious-sink-pathology                           156.2297+-1.9234     ?    158.4262+-7.1033        ? might be 1.0141x slower
   infer-one-time-closure                            11.9185+-0.7623           11.7297+-0.4118          might be 1.0161x faster
   in-one-case-true                                  13.3398+-3.3687           12.3655+-1.9575          might be 1.0788x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     25.2865+-1.5795     ?     25.4233+-3.0492        ?
   infer-closure-const-then-reenter-no-inline   
                                                     56.7157+-1.6932     ?     58.6693+-3.5370        ? might be 1.0344x slower
   array-prototype-reduce                            82.9460+-6.3156     ?     88.6211+-8.1100        ? might be 1.0684x slower
   call-spread-apply                                 33.9653+-4.9860     ?     38.2787+-6.7130        ? might be 1.1270x slower
   destructuring-arguments                           20.3765+-2.1474     ?     20.5573+-2.2868        ?
   string-concat-object                               2.8409+-0.7489     ?      2.9773+-0.5946        ? might be 1.0480x slower
   arguments-named-and-reflective                    11.6335+-0.5158     ?     12.3464+-2.6405        ? might be 1.0613x slower
   singleton-scope                                   70.7254+-1.8298     ?     71.4061+-3.2979        ?
   sparse-conditional                                 1.7578+-0.2277     ?      1.7778+-0.8444        ? might be 1.0114x slower
   is-string-fold-tricky                              6.3184+-1.2760     ?      7.1950+-2.0319        ? might be 1.1387x slower
   splice-to-remove                                  17.1766+-0.8093           16.8710+-0.3777          might be 1.0181x faster
   assign-custom-setter                               5.6599+-1.2496            5.1066+-1.3706          might be 1.1083x faster
   slow-array-profile-convergence                     3.6985+-0.5568     ?      3.9565+-1.3066        ? might be 1.0698x slower
   proto-getter-access                               10.3685+-0.7281            9.9980+-0.8550          might be 1.0371x faster
   direct-arguments-getbyval                          1.9550+-0.7807     ?      2.1465+-0.8237        ? might be 1.0980x slower
   fold-put-by-id-to-multi-put-by-offset              9.0775+-2.3934            7.8926+-0.6641          might be 1.1501x faster
   to-int32-boolean                                  16.4628+-0.9103     ?     16.7012+-0.4082        ? might be 1.0145x slower
   is-object-or-null-fold-functions                   4.0665+-0.7646     ?      5.7573+-1.5596        ? might be 1.4158x slower
   Float32Array-matrix-mult                           5.6270+-1.3816     ?      6.8523+-0.7108        ? might be 1.2178x slower
   register-pressure-from-osr                        24.5025+-3.2042           23.4029+-1.5404          might be 1.0470x faster
   new-array-buffer-dead                            137.0569+-6.8037          131.6350+-12.5439         might be 1.0412x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     13.2528+-0.9505     ?     13.6937+-2.0647        ? might be 1.0333x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     48.5850+-5.1918           46.0753+-4.1268          might be 1.0545x faster
   double-to-int32-typed-array-no-inline              3.8102+-1.5734     ?      4.5188+-1.2577        ? might be 1.1860x slower
   getter-richards                                  123.4219+-21.2711         121.2499+-22.7076         might be 1.0179x faster
   new-array-push                                     5.4142+-1.1547            5.0192+-1.5853          might be 1.0787x faster
   infer-closure-const-then-put-to-scope             24.0048+-0.4163     ?     24.5353+-1.0362        ? might be 1.0221x slower
   array-splice-contiguous                           63.7034+-22.9848          59.0461+-2.2657          might be 1.0789x faster
   ftl-library-inlining-dataview                     67.0137+-5.7508           62.5038+-2.1663          might be 1.0722x faster
   indexed-properties-in-objects                      5.0897+-1.3895            4.9465+-1.3108          might be 1.0289x faster
   div-boolean-double                                 7.1096+-0.7167            6.2870+-1.2732          might be 1.1308x faster
   is-boolean-fold                                    5.0265+-1.4776            4.8142+-0.2846          might be 1.0441x faster
   int-or-other-neg-then-get-by-val                   7.0528+-0.6361     ?      8.7123+-6.3725        ? might be 1.2353x slower
   poly-stricteq                                     62.8664+-0.0594     ?     63.0904+-0.7131        ?
   polymorphic-put-by-id                             31.4540+-3.8327     ?     33.4097+-3.4036        ? might be 1.0622x slower
   try-catch-get-by-val-cloned-arguments             14.6738+-0.5921     ?     14.7553+-0.3114        ?
   polymorphic-array-call                             2.4747+-1.1741            2.0531+-1.5927          might be 1.2054x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.3148+-1.6966            7.3464+-2.1760          might be 1.1318x faster
   in-two-cases                                      14.2355+-3.4587           13.7497+-2.6173          might be 1.0353x faster
   array-access-polymorphic-structure                 7.2880+-0.9998     ?      7.7563+-1.7145        ? might be 1.0643x slower
   varargs-call                                      20.7755+-9.8260           17.2881+-0.9092          might be 1.2017x faster
   poly-chain-access                                  4.7825+-3.5403     ?      4.7966+-1.6960        ?
   get_callee_polymorphic                             4.4904+-0.7855            4.4865+-0.8078        
   cmpeq-obj-to-obj-other                            11.9513+-2.3542           11.8680+-1.7801        
   cast-int-to-double                                 8.3028+-0.2854            7.6478+-1.5348          might be 1.0856x faster
   polyvariant-monomorphic-get-by-id                  9.6422+-0.9830     ?     10.8462+-0.6476        ? might be 1.1249x slower
   global-var-const-infer-fire-from-opt               2.0482+-1.0941     ?      2.7592+-1.0277        ? might be 1.3471x slower
   array-prototype-some                              87.1243+-2.6223     ?     90.7360+-2.4418        ? might be 1.0415x slower
   logical-not-weird-types                            6.2958+-3.3354            5.0820+-1.1863          might be 1.2388x faster
   basic-set                                         10.5085+-1.1749     ?     12.8623+-4.8853        ? might be 1.2240x slower
   is-function-fold                                   4.3688+-1.0105            4.3597+-0.9934        
   switch-string-basic-var                           16.9623+-2.5483           16.8011+-1.5424        
   assign-custom-setter-polymorphic                   4.6110+-0.9426            4.2772+-0.4348          might be 1.0780x faster
   put-by-val-direct                                  0.4156+-0.1367     ?      0.4898+-0.2771        ? might be 1.1786x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     40.3209+-0.9465     ?     44.6286+-6.4803        ? might be 1.1068x slower
   simple-activation-demo                            27.1440+-0.9058           26.7034+-0.5406          might be 1.0165x faster
   string-concat-pair-simple                         14.7867+-1.7618           13.9063+-0.3353          might be 1.0633x faster
   get-by-val-out-of-bounds                           6.7338+-0.8625            6.3422+-0.5691          might be 1.0618x faster
   switch-string-length-tower-var                    17.0074+-0.9931     ?     17.0618+-1.4488        ?
   captured-assignments                               0.9055+-1.0827            0.6583+-0.3395          might be 1.3755x faster
   string-var-equality                               34.0310+-0.7520           33.7761+-0.1983        
   int-or-other-mod-then-get-by-val                   6.7659+-1.6052            5.3869+-0.4106          might be 1.2560x faster
   Int32Array-alloc-large                            29.1270+-0.9127           28.5334+-1.6800          might be 1.0208x faster
   sin-boolean                                       14.2211+-2.4995     ?     14.4560+-2.3380        ? might be 1.0165x slower
   string-concat-simple                              14.5647+-1.2683     ?     15.8234+-2.2322        ? might be 1.0864x slower
   getter-no-activation                               6.9088+-1.8353            6.8542+-1.6626        
   try-catch-get-by-val-direct-arguments              7.6157+-1.5401            7.3383+-0.6542          might be 1.0378x faster
   infer-constant-property                            4.5270+-0.7014            4.3113+-0.9435          might be 1.0500x faster
   div-boolean                                       10.7034+-0.5802     ?     10.8871+-0.4960        ? might be 1.0172x slower
   large-int                                         15.5696+-0.8665     ?     16.0131+-1.1805        ? might be 1.0285x slower
   external-arguments-putbyval                        3.9300+-1.7855     ?      4.0847+-1.3323        ? might be 1.0394x slower
   max-boolean                                        3.6917+-1.0205     ?      4.4956+-0.7057        ? might be 1.2178x slower
   get-by-id-proto-or-self                           20.3623+-6.8770           16.7329+-0.9900          might be 1.2169x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      9.7265+-2.6531     ?     10.0416+-3.5520        ? might be 1.0324x slower
   string-equality                                   18.7085+-0.1060     ?     18.8229+-0.5738        ?
   getter                                             8.9125+-4.0093            8.0376+-1.6335          might be 1.1088x faster
   Int32Array-Int8Array-view-alloc                    8.1658+-2.2574     ?      8.4294+-1.1884        ? might be 1.0323x slower
   substring-concat                                  56.5549+-2.8680           55.0577+-1.9595          might be 1.0272x faster
   is-boolean-fold-tricky                             7.1913+-3.1997     ?      7.7053+-1.0701        ? might be 1.0715x slower
   integer-divide                                    11.9374+-0.4281     ?     12.3065+-1.0733        ? might be 1.0309x slower
   cse-new-array                                      6.1603+-6.4357            3.4731+-1.2762          might be 1.7737x faster
   is-string-fold                                     5.3667+-1.6895     ?      5.7733+-1.8755        ? might be 1.0758x slower
   object-closure-call                                7.5140+-1.4754     ?      8.2916+-1.6965        ? might be 1.1035x slower
   sinkable-new-object-dag                           75.0342+-7.4729           74.8583+-3.2487        
   string-char-code-at                               18.7067+-2.0047           16.4850+-0.5184          might be 1.1348x faster
   double-to-uint32-typed-array-no-inline             4.5161+-1.5469     ?      5.9265+-1.6279        ? might be 1.3123x slower
   Int16Array-bubble-sort                            24.1794+-3.0126           23.2206+-1.0072          might be 1.0413x faster
   switch-char                                        9.4403+-2.9750            8.3309+-2.2431          might be 1.1332x faster
   switch-char-constant                               5.9418+-3.7020            5.5098+-1.8730          might be 1.0784x faster
   infer-one-time-closure-two-vars                   11.5342+-0.4115     ?     12.2031+-1.2182        ? might be 1.0580x slower
   object-test                                        4.7840+-0.6271     ?      4.8539+-2.4919        ? might be 1.0146x slower
   external-arguments-getbyval                        2.1715+-1.0350     ?      2.5930+-1.1235        ? might be 1.1941x slower
   plus-boolean                                       4.7382+-0.4943     ?      4.7385+-0.4660        ?
   Int16Array-alloc-long-lived                       62.3611+-6.3250     ?     64.6884+-6.2642        ? might be 1.0373x slower
   fold-get-by-id-to-multi-get-by-offset              9.4597+-2.8166            9.3224+-2.5627          might be 1.0147x faster
   infer-one-time-deep-closure                       20.5997+-0.9189           20.4958+-0.9882        
   new-array-buffer-push                              7.4429+-1.2947     ?      7.7397+-0.9202        ? might be 1.0399x slower
   aliased-arguments-getbyval                         2.7332+-1.5051            1.9877+-0.6103          might be 1.3751x faster
   by-val-generic                                    10.5992+-0.6874     ?     11.8474+-1.2985        ? might be 1.1178x slower
   ArrayBuffer-Int8Array-alloc-long-lived            14.4760+-0.0797     ?     16.5432+-2.8366        ? might be 1.1428x slower
   exit-length-on-plain-object                       14.8043+-2.4525     ?     15.2105+-2.5786        ? might be 1.0274x slower
   Int32Array-alloc                                   4.0006+-0.5677     ?      4.1431+-0.7282        ? might be 1.0356x slower
   weird-inlining-const-prop                          4.0173+-0.8165            3.8715+-1.9107          might be 1.0377x faster
   DataView-custom-properties                        49.5394+-3.5110     ?     49.6008+-6.2462        ?
   HashMap-string-put-get-iterate                    35.1090+-2.1050           30.7386+-4.1897          might be 1.1422x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      4.1227+-1.8503     ?      4.7380+-0.6556        ? might be 1.1493x slower
   temporal-structure                                19.5281+-1.3932     ?     19.9352+-1.1556        ? might be 1.0208x slower
   for-of-iterate-array-values                        5.2875+-1.5676     ?      5.7975+-0.6538        ? might be 1.0965x slower
   varargs-construct                                 27.4358+-3.4641           25.6757+-2.3826          might be 1.0686x faster
   double-to-uint32-typed-array                       3.0510+-0.6159     ?      3.4272+-1.0508        ? might be 1.1233x slower
   int-or-other-mul-then-get-by-val                   6.3523+-2.3797            5.1730+-0.9120          might be 1.2280x faster
   put-by-val-machine-int                             4.0543+-1.5056     ?      4.8333+-1.4331        ? might be 1.1921x slower
   lots-of-fields                                    12.0978+-0.3226     ?     12.2164+-0.2736        ?
   infer-closure-const-then-mov-no-inline             5.3430+-1.7232     ?      7.1283+-2.8364        ? might be 1.3341x slower
   arguments                                          9.3555+-1.0077            9.2390+-0.6775          might be 1.0126x faster
   negative-zero-divide                               0.7278+-0.9070            0.4702+-0.1429          might be 1.5480x faster
   big-int-mul                                        5.4665+-1.4569     ?      7.1111+-3.5321        ? might be 1.3008x slower
   is-object-or-null-tricky-function                  6.4156+-3.1467     ?      7.3150+-2.2100        ? might be 1.1402x slower
   try-catch-get-by-val-scoped-arguments              9.6429+-2.0086            9.2307+-2.2105          might be 1.0447x faster
   is-undefined-fold-tricky                           6.4985+-3.6297     ?      7.4225+-1.7899        ? might be 1.1422x slower
   setter                                             7.7082+-1.0800     ?      8.4237+-2.9865        ? might be 1.0928x slower
   neg-boolean                                        4.8508+-1.7528     ?      5.4103+-1.2672        ? might be 1.1153x slower
   poly-chain-access-simpler                          6.1728+-1.1857            6.0245+-2.6305          might be 1.0246x faster
   slow-ternaries                                    25.7009+-2.0834           25.3673+-1.5604          might be 1.0132x faster
   put-by-id-slightly-polymorphic                     5.6105+-2.3105            5.2133+-0.9899          might be 1.0762x faster
   arguments-out-of-bounds                           14.6353+-0.5682     ?     15.1395+-0.9579        ? might be 1.0345x slower
   sink-function                                     12.3397+-4.2077           11.9464+-1.2224          might be 1.0329x faster
   marsaglia-larger-ints                             45.4575+-1.8370           45.1631+-2.2095        
   undefined-test                                     6.0220+-4.6538     ?      6.4003+-4.1134        ? might be 1.0628x slower
   imul-mixed                                         7.6622+-2.6555     ?      7.8145+-0.8794        ? might be 1.0199x slower
   global-var-const-infer                             1.1018+-0.6596     ?      1.1404+-0.5090        ? might be 1.0351x slower
   asmjs_bool_bug                                    11.4750+-5.1635            9.4351+-1.0552          might be 1.2162x faster
   double-pollution-putbyoffset                       6.6577+-0.8633     ?      8.6827+-1.5018        ? might be 1.3042x slower
   is-object-or-null-fold                             5.4119+-1.7503            4.7247+-1.0315          might be 1.1454x faster
   cell-argument                                      9.3351+-1.9623            9.3137+-2.0573        
   int-or-other-add                                   7.5134+-2.0397            7.2435+-3.3846          might be 1.0373x faster
   plus-boolean-arith                                 3.8430+-2.2328     ?      4.6429+-2.0168        ? might be 1.2082x slower
   ArrayBuffer-Int32Array-byteOffset                  5.3787+-1.3832     ?      5.5637+-1.0703        ? might be 1.0344x slower
   mod-boolean                                       10.1085+-1.6746     ?     10.8793+-1.5357        ? might be 1.0763x slower
   infer-closure-const-then-mov                      17.5980+-0.2638           17.4058+-0.5771          might be 1.0110x faster
   large-int-neg                                     17.7740+-0.8873     ?     18.3607+-2.6140        ? might be 1.0330x slower
   fround                                            19.3422+-1.1304           19.2353+-2.6545        
   elidable-new-object-dag                           54.7352+-0.6016           51.8035+-3.9269          might be 1.0566x faster
   make-indexed-storage                               4.2959+-1.2289            4.2385+-1.1170          might be 1.0136x faster
   int-or-other-add-then-get-by-val                   6.9764+-0.2493            5.7896+-1.1037          might be 1.2050x faster
   string-cons-repeat                                 8.8722+-1.5920            8.4109+-0.8905          might be 1.0548x faster
   logical-not                                        7.0560+-1.2291            6.0543+-1.4387          might be 1.1655x faster
   poly-chain-access-different-prototypes-simple   
                                                      5.4112+-1.5033            4.9287+-2.6382          might be 1.0979x faster
   fixed-typed-array-storage-var-index                2.0802+-0.3884     ?      2.9802+-2.9699        ? might be 1.4326x slower
   function-test                                      4.3973+-1.4149     ?      5.3840+-1.2059        ? might be 1.2244x slower
   string-cons-tower                                  8.7622+-2.0568            8.1680+-0.1097          might be 1.0727x faster
   destructuring-swap                                 7.2610+-1.2059     ?      7.5537+-0.7075        ? might be 1.0403x slower
   is-function-fold-tricky                            7.0948+-3.3878            6.8475+-1.8370          might be 1.0361x faster
   array-prototype-reduceRight                       82.1002+-7.3149     ?     87.9996+-6.7243        ? might be 1.0719x slower
   int-or-other-max-then-get-by-val                   7.6414+-5.5885            6.3525+-0.6659          might be 1.2029x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.9555+-1.4647     ?      9.3651+-1.6568        ? might be 1.0457x slower
   method-on-number                                  22.7105+-2.8668           22.6803+-5.2276        
   put-by-id-replace-and-transition                  11.5889+-1.2393     ?     12.0598+-0.8016        ? might be 1.0406x slower
   int-or-other-neg-zero-then-get-by-val             24.0981+-1.6158     ?     24.2920+-1.7279        ?
   varargs-strict-mode                               11.7465+-1.5231     ?     13.2859+-5.2696        ? might be 1.1311x slower
   string-get-by-val-out-of-bounds-insane             4.1568+-0.9965     ?      5.0901+-1.7093        ? might be 1.2245x slower
   imul-double-only                                   6.9634+-0.3741     ?      7.2103+-1.4500        ? might be 1.0355x slower
   for-of-iterate-array-keys                          6.0405+-1.8636            5.5374+-0.6359          might be 1.0909x faster
   string-get-by-val                                  7.1317+-4.7910            4.8613+-1.2471          might be 1.4670x faster
   nested-function-parsing                           48.3391+-9.1782     ?     49.2237+-6.2367        ? might be 1.0183x slower
   string-repeat-arith                               32.6808+-0.0378     !     34.0563+-0.8025        ! definitely 1.0421x slower
   inline-arguments-aliased-access                    6.8166+-1.5882            6.1537+-0.7595          might be 1.1077x faster
   allocate-big-object                                4.3902+-1.0615            3.9790+-0.9492          might be 1.1033x faster
   is-object-or-null-fold-less-tricky                 6.5669+-1.6167     ?      7.6674+-2.8150        ? might be 1.1676x slower
   elidable-new-object-tree                          56.3439+-2.7910           54.5577+-4.5163          might be 1.0327x faster
   ArrayBuffer-Int8Array-alloc                       12.8304+-2.4915     ?     13.0385+-2.7271        ? might be 1.0162x slower
   repeat-multi-get-by-offset                        28.1002+-2.1543           26.9302+-1.1084          might be 1.0434x faster
   int52-spill                                        7.8425+-2.0673     ?      9.5682+-3.2758        ? might be 1.2200x slower
   no-inline-constructor                             46.7170+-7.8566     ?     47.8759+-3.3009        ? might be 1.0248x slower
   hoist-make-rope                                   10.4988+-1.6768            9.7495+-0.5008          might be 1.0769x faster
   arguments-strict-mode                              9.8630+-0.3754     ?     10.1672+-0.5072        ? might be 1.0308x slower
   function-with-eval                               116.4890+-6.1066          113.7255+-3.8706          might be 1.0243x faster
   ArrayBuffer-DataView-alloc-long-lived             17.8302+-2.1191           16.8207+-0.3843          might be 1.0600x faster
   simple-poly-call-nested                           10.8621+-1.2017     ^      8.2761+-0.4650        ^ definitely 1.3125x faster
   switch-string-big-length-tower-var                22.1411+-1.4904           21.9422+-1.5713        
   getter-prototype                                  14.9095+-0.8831     ?     14.9625+-1.2692        ?
   number-test                                        4.7469+-1.1135     ?      6.8779+-3.0165        ? might be 1.4489x slower
   Int16Array-load-int-mul                            2.9390+-0.8005            2.3409+-0.9044          might be 1.2555x faster
   put-by-id                                         14.5820+-1.9405     ?     15.3002+-1.1080        ? might be 1.0493x slower
   imul-int-only                                      9.4279+-0.4270     ?     10.2710+-0.6809        ? might be 1.0894x slower
   gcse                                               7.4787+-3.1497            7.1877+-2.9355          might be 1.0405x faster
   create-lots-of-functions                          15.5141+-2.9103     ?     15.8767+-1.2052        ? might be 1.0234x slower
   in-four-cases                                     22.1227+-3.2174           21.7256+-1.7157          might be 1.0183x faster
   elidable-new-object-then-call                     46.0463+-3.6218     ?     47.1389+-7.3065        ? might be 1.0237x slower
   int-or-other-sub-then-get-by-val                   7.7904+-2.7895            6.8862+-2.9930          might be 1.1313x faster
   mul-boolean-double                                 4.5432+-0.8328     ?      5.5367+-1.7923        ? might be 1.2187x slower
   mod-boolean-double                                10.1258+-1.4624     ?     12.4865+-4.6681        ? might be 1.2331x slower
   inline-arguments-access                            6.7278+-1.6268            5.7758+-0.4910          might be 1.1648x faster
   substring-concat-weird                            52.7516+-3.8232           51.4892+-3.4491          might be 1.0245x faster
   varargs-construct-inline                          33.0733+-2.9129           32.3633+-1.7174          might be 1.0219x faster
   HashMap-put-get-iterate                           35.9802+-4.3646           34.2162+-6.2093          might be 1.0516x faster
   string-long-ident-equality                        16.1250+-1.7934     ?     17.1013+-2.7056        ? might be 1.0605x slower
   mul-boolean                                        4.8669+-2.2995            4.5317+-2.0234          might be 1.0740x faster
   get-by-id-check-structure-elimination              7.8381+-3.1309            6.6538+-1.3779          might be 1.1780x faster
   marsaglia-osr-entry                               23.9727+-0.6853           23.1990+-0.4569          might be 1.0333x faster
   double-real-use                                   32.0235+-2.3941     ?     32.5395+-2.6529        ? might be 1.0161x slower
   Float64Array-alloc-long-lived                     91.9993+-14.8524    ?     92.3975+-7.4854        ?
   misc-strict-eq                                    39.0068+-5.4116           37.3108+-3.2405          might be 1.0455x faster
   make-rope-cse                                      4.7201+-0.3130     ?      5.0812+-0.8707        ? might be 1.0765x slower
   array-with-double-sum                              5.5493+-3.1006            5.3317+-2.4752          might be 1.0408x faster
   substring                                         64.4695+-4.0352           64.1913+-4.2172        
   array-with-double-increment                        5.8163+-0.1892            5.7850+-1.1847        
   is-object-or-null-trickier-function                8.2694+-3.2838            6.9198+-1.3071          might be 1.1950x faster
   for-of-iterate-array-entries                       6.0328+-1.7620     ?      6.8140+-2.7305        ? might be 1.1295x slower
   array-nonarray-polymorhpic-access                 34.7365+-1.9938     ?     35.5375+-2.8276        ? might be 1.0231x slower
   varargs                                           11.7798+-1.7012     ?     13.2123+-4.0062        ? might be 1.1216x slower
   string-out-of-bounds                              14.7551+-0.1735     ?     15.4832+-1.0968        ? might be 1.0493x slower
   inlined-put-by-id-transition                      13.1639+-1.8281     ?     14.3455+-2.0879        ? might be 1.0898x slower
   minus-boolean-double                               4.4438+-1.2211     ?      4.8381+-2.2370        ? might be 1.0887x slower
   is-object-or-null-tricky-internal-function   
                                                     12.0088+-1.6116     ?     12.0152+-3.6503        ?
   delay-tear-off-arguments-strictmode               15.3054+-2.1130           14.7632+-2.1311          might be 1.0367x faster
   array-prototype-every                             87.5558+-5.7169     ?     91.5235+-2.5995        ? might be 1.0453x slower
   chain-getter-access                                9.9037+-1.1610            9.7643+-1.2015          might be 1.0143x faster
   int-or-other-min-then-get-by-val                   7.9807+-2.2891            7.2366+-2.5765          might be 1.1028x faster
   HashMap-put-get-iterate-keys                      35.4937+-5.2969           33.1345+-4.3215          might be 1.0712x faster
   double-pollution-getbyval                         11.2567+-1.9682           10.6805+-2.0788          might be 1.0539x faster
   structure-hoist-over-transitions                   3.8353+-0.7418     ?      4.2856+-2.0304        ? might be 1.1174x slower
   polymorphic-structure                             19.7928+-1.2390     ?     19.8965+-0.7876        ?
   sorting-benchmark                                 20.8198+-0.7809     ?     21.2403+-2.2732        ? might be 1.0202x slower
   fixed-typed-array-storage                          1.7819+-1.5324            1.5869+-0.3382          might be 1.1229x faster
   load-varargs-elimination                          26.8545+-2.3035           25.2877+-1.5647          might be 1.0620x faster
   switch-string-length-tower                        17.2148+-6.6668           14.7036+-1.3251          might be 1.1708x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.2538+-3.9275            8.6346+-2.6501          might be 1.1875x faster
   Int8Array-load-with-byteLength                     6.0152+-3.0016            5.3220+-0.1004          might be 1.1302x faster
   Float64Array-to-Int16Array-set                    82.2368+-1.1417     ?     82.3735+-2.4814        ?
   infer-constant-global-property                    11.1029+-2.7105            8.8560+-1.5906          might be 1.2537x faster
   int-overflow-local                                 8.9207+-4.6067            7.4145+-2.9279          might be 1.2031x faster
   min-boolean                                        4.1860+-1.3460     ?      4.3467+-1.3041        ? might be 1.0384x slower
   simple-getter-access                              12.4350+-1.2601           12.1867+-0.9660          might be 1.0204x faster
   string-hash                                        3.0005+-0.7036     ?      3.1470+-0.2655        ? might be 1.0488x slower
   arity-mismatch-inlining                            2.4017+-2.1046            1.4911+-0.3309          might be 1.6107x faster
   obviously-elidable-new-object                     36.6205+-2.1640     ?     39.7610+-5.0348        ? might be 1.0858x slower
   deltablue-varargs                                240.4654+-11.2851    ?    251.9252+-28.2871       ? might be 1.0477x slower
   gcse-poly-get                                     22.7367+-4.1271     ?     22.8854+-3.8557        ?
   hoist-poly-check-structure-effectful-loop   
                                                      7.1647+-1.5501     ?      7.6143+-2.1978        ? might be 1.0627x slower
   minus-boolean                                      5.0896+-0.7966            4.5015+-1.2218          might be 1.1307x faster
   gcse-poly-get-less-obvious                        20.6161+-2.3509     ?     24.7565+-9.1957        ? might be 1.2008x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.5679+-4.6371     ?     12.7689+-3.0775        ? might be 1.0160x slower
   branch-fold                                        4.9904+-0.7038     ?      5.6003+-0.3358        ? might be 1.1222x slower
   double-to-int32-typed-array                        2.6613+-0.7436     ?      3.2363+-0.2779        ? might be 1.2161x slower
   plus-boolean-double                                5.1202+-0.7805     ?      5.2736+-1.1306        ? might be 1.0299x slower
   hoist-poly-check-structure                         5.7947+-0.9631            5.7853+-1.0668        
   infer-one-time-closure-ten-vars                   12.4998+-0.9211           12.0691+-0.2745          might be 1.0357x faster
   is-function-fold-tricky-internal-function   
                                                     13.6042+-2.8034     ?     15.4563+-4.4555        ? might be 1.1361x slower
   array-with-double-mul-add                          8.8180+-0.8842     ?      9.7174+-3.3112        ? might be 1.1020x slower
   array-prototype-map                               96.9193+-2.9890     ?    101.3975+-1.6175        ? might be 1.0462x slower
   varargs-inline                                    10.7228+-1.4941           10.3257+-1.4375          might be 1.0385x faster
   sink-huge-activation                              17.1338+-0.2363     ?     17.1432+-0.2726        ?
   undefined-property-access                        349.1501+-2.5960     ?    350.0294+-3.5400        ?
   array-with-int32-add-sub                           9.6657+-3.8159            8.3862+-1.2272          might be 1.1526x faster
   function-dot-apply                                 3.3913+-0.9164     ?      4.0384+-1.1212        ? might be 1.1908x slower
   string-sub                                        65.1849+-0.5001     !     69.2465+-2.6018        ! definitely 1.0623x slower
   boolean-test                                       6.1905+-1.9328            4.4915+-0.8032          might be 1.3783x faster
   emscripten-cube2hash                              44.5956+-13.6638          37.6902+-0.9560          might be 1.1832x faster
   Int32Array-alloc-long-lived                       79.1379+-10.5424          70.6843+-11.2973         might be 1.1196x faster
   get-by-id-self-or-proto                           19.3063+-3.9490           18.9977+-2.4933          might be 1.0162x faster
   cse-new-array-buffer                               3.3207+-1.6962     ?      3.7485+-1.5003        ? might be 1.1288x slower
   sinkable-new-object                               43.7780+-7.8640           40.7987+-6.0041          might be 1.0730x faster
   put-by-val-large-index-blank-indexing-type   
                                                      7.0325+-1.5763            6.9683+-0.4995        
   Int8Array-load                                     5.7188+-1.3483     ?      6.9263+-4.9545        ? might be 1.2112x slower
   int-or-other-abs-then-get-by-val                   6.8693+-1.8508     ?      7.2922+-0.2117        ? might be 1.0616x slower
   abs-boolean                                        5.6455+-3.8819     ?      6.8693+-4.6973        ? might be 1.2168x slower
   call-spread-call                                  30.9291+-5.7472           26.6448+-4.2795          might be 1.1608x faster
   unprofiled-licm                                   22.2950+-1.3953     ?     22.5674+-1.3838        ? might be 1.0122x slower
   constant-test                                      7.5817+-0.9649            7.5743+-1.1717        
   cfg-simplify                                       4.7234+-0.8813     ?      5.6883+-2.4740        ? might be 1.2043x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      4.2255+-1.2996     ?      5.1588+-1.3130        ? might be 1.2209x slower
   fold-put-structure                                 8.0140+-2.4284     ?      8.4830+-1.9542        ? might be 1.0585x slower
   get-by-id-chain-from-try-block                     7.4703+-0.9167     ?      7.9667+-0.9454        ? might be 1.0665x slower
   poly-chain-access-different-prototypes             3.7373+-0.7134     ?      4.6546+-0.8487        ? might be 1.2454x slower
   is-number-fold-tricky                              6.5468+-2.1957            6.4642+-1.3805          might be 1.0128x faster
   get_callee_monomorphic                             4.6603+-0.9689            3.9256+-1.4454          might be 1.1872x faster
   deconstructing-parameters-overridden-by-function   
                                                      0.6049+-0.1373            0.5256+-0.1281          might be 1.1510x faster
   empty-string-plus-int                              6.7292+-1.2315     ?      7.2722+-1.3511        ? might be 1.0807x slower
   Float32Array-to-Float64Array-set                  69.4158+-1.6638     ?     70.8792+-1.7876        ? might be 1.0211x slower
   switch-string-short                               14.6476+-0.5278           14.5165+-1.8859        
   switch-string-basic-big                           20.3075+-3.2017           19.2927+-0.7418          might be 1.0526x faster
   double-get-by-val-out-of-bounds                    6.6159+-2.0197     ?      6.9761+-1.4101        ? might be 1.0544x slower
   large-int-captured                                 6.7094+-1.3384     ?      6.9195+-1.9564        ? might be 1.0313x slower
   elidable-new-object-roflcopter                    56.9435+-7.0526     ?     59.6132+-1.7295        ? might be 1.0469x slower
   string-get-by-val-out-of-bounds                    7.7397+-3.2624     ?      8.6117+-3.1124        ? might be 1.1127x slower
   array-with-double-add                              6.3223+-2.2941     ?      7.3443+-1.1566        ? might be 1.1616x slower
   math-with-out-of-bounds-array-values              47.8530+-3.2483           46.3965+-1.6278          might be 1.0314x faster
   string-test                                        5.7697+-4.8165            4.6992+-1.4714          might be 1.2278x faster
   is-undefined-fold                                  5.0409+-1.2416            4.9846+-0.5833          might be 1.0113x faster
   switch                                            15.4948+-1.9173     ?     16.1633+-0.9283        ? might be 1.0431x slower
   inline-get-scoped-var                              6.0886+-1.0132     ?      6.7295+-0.5720        ? might be 1.1053x slower
   tear-off-arguments-simple                          6.5222+-6.5590            4.7232+-1.3569          might be 1.3809x faster
   negative-zero-modulo                               0.5500+-0.3151            0.4091+-0.1775          might be 1.3445x faster
   infer-closure-const-then-reenter                  24.3223+-0.5132     ?     26.2472+-1.5374        ? might be 1.0791x slower
   array-prototype-forEach                           83.9317+-1.8819     ?     99.0679+-29.5304       ? might be 1.1803x slower
   switch-constant                                   10.3116+-0.6479     ?     11.3105+-1.8213        ? might be 1.0969x slower
   negative-zero-negate                               0.3604+-0.0872     ?      0.4815+-0.1583        ? might be 1.3360x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                      9.8422+-0.8694     ?      9.8590+-1.7197        ?
   in-one-case-false                                 12.8660+-3.3813           12.4235+-1.7838          might be 1.0356x faster
   int-or-other-div-then-get-by-val                   6.7734+-2.5185     ?      7.3165+-4.3053        ? might be 1.0802x slower
   typed-array-get-set-by-val-profiling              35.9301+-1.1647           35.4850+-1.1787          might be 1.0125x faster
   Int8Array-alloc-long-lived                        54.5483+-7.1763     ?     55.1339+-15.7691       ? might be 1.0107x slower
   simple-poly-call                                   3.3564+-2.7223            2.5880+-1.7576          might be 1.2969x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                     10.9725+-5.2625            7.5115+-2.6546          might be 1.4607x faster
   switch-string-basic-big-var                       24.7490+-4.1215           23.5123+-4.4974          might be 1.0526x faster
   Int16Array-to-Int32Array-set                      67.1387+-3.1812     ?     69.0470+-4.0365        ? might be 1.0284x slower
   sinkable-new-object-taken                         59.2067+-3.3338     ?     60.2160+-6.9190        ? might be 1.0170x slower
   string-concat-pair-object                          3.0573+-0.3834            2.9270+-0.5356          might be 1.0445x faster
   branch-on-string-as-boolean                       18.6170+-1.8525           17.8083+-0.9511          might be 1.0454x faster
   is-number-fold                                     5.5078+-0.7407            4.6496+-1.6574          might be 1.1846x faster
   obvious-sink-pathology-taken                     165.9370+-9.0544          164.5182+-7.8403        
   ftl-library-inlining                              72.7180+-6.0107           69.9018+-3.6556          might be 1.0403x faster
   array-with-int32-or-double-sum                     5.3359+-1.9830     ?      5.9783+-2.7595        ? might be 1.1204x slower
   Int16Array-bubble-sort-with-byteLength            26.4332+-7.9183           24.4418+-2.8525          might be 1.0815x faster

   <geometric>                                       11.1343+-0.1288     ?     11.1444+-0.1748        ? might be 1.0009x slower

                                                         baseline                   getter                                      
Geomean of preferred means:
   <scaled-result>                                   36.1580+-0.7622     ?     36.7828+-0.9930        ? might be 1.0173x slower
Comment 24 Darin Adler 2015-06-08 06:40:06 PDT
Are you sure that is neutral? The thing I see is "might be 1.0173x slower"; could be a 2% slowdown? I may be insufficiently experienced at reading these in modern times. Even if it is a bit slower, maybe it’s fixable?
Comment 25 Geoffrey Garen 2015-06-08 09:45:35 PDT
> Other examples: Map.prototype.size, Set.prototype.size

What is our approach for these other properties, outside of the RegExp prototype?
Comment 26 Yusuke Suzuki 2015-06-08 10:17:45 PDT
(In reply to comment #25)
> > Other examples: Map.prototype.size, Set.prototype.size
> 
> What is our approach for these other properties, outside of the RegExp
> prototype?

Now, Map.prototype.size / Set.prototype.size are not handled in this patch.
Is it preferable to handling both in this patch?
Comment 27 Yusuke Suzuki 2015-06-08 10:19:52 PDT
(In reply to comment #24)
> Are you sure that is neutral? The thing I see is "might be 1.0173x slower";
> could be a 2% slowdown? I may be insufficiently experienced at reading these
> in modern times. Even if it is a bit slower, maybe it’s fixable?

After investigating the test, I think it's not related to this patch.
Now I'm building JSC on a little bit stable machine (OSX Yosemite, 8GB RAM, 2.5GHz Intel Core i7, MacBook Pro Late 2011).
Comment 28 Jordan Harband 2015-06-08 10:28:17 PDT
(In reply to comment #25)
> > Other examples: Map.prototype.size, Set.prototype.size
> 
> What is our approach for these other properties, outside of the RegExp
> prototype?

I don't think this ticket is accurate with "in most cases" (https://twitter.com/domenic/status/606902166331244544)

This bug should just be for RegExp.prototype, and other cases evaluated separately. Also, `Map#size` and `Set#size` are already accessors, so nothing need be done there.
Comment 29 Yusuke Suzuki 2015-06-08 10:52:42 PDT
Re-take the performance results on a little bit stable machine I have.

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

VMs tested:
"Baseline" at /Users/yusuke/dev/WebKit/WebKitBuild/before/Release/jsc
"Mine" at /Users/yusuke/dev/WebKit/WebKitBuild/after/Release/jsc

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

                                                         Baseline                    Mine                                       
SunSpider:
   3d-cube                                            5.6590+-0.1464            5.6163+-0.2959        
   3d-morph                                           6.1058+-0.1700            6.1032+-0.0485        
   3d-raytrace                                        7.4339+-0.6499            7.1401+-0.0658          might be 1.0411x faster
   access-binary-trees                                2.4994+-0.0184     ?      2.5514+-0.1654        ? might be 1.0208x slower
   access-fannkuch                                    6.4725+-0.0974     ?      6.5842+-0.1322        ? might be 1.0173x slower
   access-nbody                                       3.1141+-0.0514            3.0987+-0.1871        
   access-nsieve                                      3.6317+-0.7017            3.4952+-0.4285          might be 1.0390x faster
   bitops-3bit-bits-in-byte                           2.1733+-0.5410     ?      2.1784+-0.6069        ?
   bitops-bits-in-byte                                3.8953+-0.0646            3.8824+-0.0706        
   bitops-bitwise-and                                 2.4476+-0.1806            2.3331+-0.1468          might be 1.0491x faster
   bitops-nsieve-bits                                 3.6110+-0.0993     ?      3.6537+-0.1224        ? might be 1.0118x slower
   controlflow-recursive                              2.4987+-0.0520            2.4550+-0.0332          might be 1.0178x faster
   crypto-aes                                         6.0521+-1.9952            4.9818+-0.1809          might be 1.2148x faster
   crypto-md5                                         3.0688+-0.0974     ?      3.1055+-0.0337        ? might be 1.0120x slower
   crypto-sha1                                        3.0035+-0.3494            2.8161+-0.0558          might be 1.0665x faster
   date-format-tofte                                  9.8870+-0.5664            9.8802+-0.1799        
   date-format-xparb                                  6.0217+-0.1193     ?      7.3400+-1.6127        ? might be 1.2189x slower
   math-cordic                                        3.4538+-0.1090     ?      3.4883+-0.1427        ? might be 1.0100x slower
   math-partial-sums                                  6.0971+-0.3046     ?      7.5121+-4.7979        ? might be 1.2321x slower
   math-spectral-norm                                 2.7241+-0.6675     ?      2.7784+-0.9980        ? might be 1.0199x slower
   regexp-dna                                         9.4318+-5.2212            7.7123+-0.1507          might be 1.2230x faster
   string-base64                                      5.4747+-0.1077            5.3619+-0.1512          might be 1.0210x faster
   string-fasta                                       7.2662+-0.2140     ?      7.5695+-1.1199        ? might be 1.0417x slower
   string-tagcloud                                   12.7958+-3.0700           12.1534+-1.8103          might be 1.0529x faster
   string-unpack-code                                24.8722+-4.6402           24.1253+-7.0384          might be 1.0310x faster
   string-validate-input                              5.6713+-0.1135            5.6547+-0.0954        

   <arithmetic>                                       5.9755+-0.2593            5.9066+-0.1717          might be 1.0117x faster

                                                         Baseline                    Mine                                       
LongSpider:
   3d-cube                                         1011.9418+-13.3620    ?   1024.6695+-37.1753       ? might be 1.0126x slower
   3d-morph                                        1597.8281+-17.0703        1592.4365+-5.5024        
   3d-raytrace                                      790.3740+-14.4934         788.0941+-3.4475        
   access-binary-trees                             1108.1889+-18.5358        1088.8977+-12.6768         might be 1.0177x faster
   access-fannkuch                                  372.8125+-10.4846         364.1034+-8.6540          might be 1.0239x faster
   access-nbody                                     656.7310+-2.8109     ?    661.4237+-9.3150        ?
   access-nsieve                                    516.9030+-11.7697    ?    518.9552+-17.1323       ?
   bitops-3bit-bits-in-byte                          53.7661+-4.8624           52.6782+-1.8393          might be 1.0207x faster
   bitops-bits-in-byte                               99.3181+-6.3148           98.1710+-2.5330          might be 1.0117x faster
   bitops-nsieve-bits                               473.9080+-15.9284         466.3887+-8.2539          might be 1.0161x faster
   controlflow-recursive                            520.6407+-5.9715          520.3293+-5.6448        
   crypto-aes                                       791.4548+-17.3972    ?    800.8324+-23.9210       ? might be 1.0118x slower
   crypto-md5                                       589.7576+-16.2834    ?    602.3058+-11.1307       ? might be 1.0213x slower
   crypto-sha1                                      798.0026+-1.3979          785.5300+-11.5246         might be 1.0159x faster
   date-format-tofte                                802.4333+-15.5446         794.1496+-13.2638         might be 1.0104x faster
   date-format-xparb                                841.7493+-35.0372    ?    844.4915+-22.8269       ?
   hash-map                                         198.7936+-9.0237     ?    199.6422+-1.8307        ?
   math-cordic                                      640.1660+-8.6116     ?    659.7245+-44.5742       ? might be 1.0306x slower
   math-partial-sums                                585.6443+-10.3482    ?    589.7396+-9.6065        ?
   math-spectral-norm                               909.7902+-5.6380     ?    910.5305+-11.4917       ?
   string-base64                                    475.4145+-6.3581          464.7233+-8.9435          might be 1.0230x faster
   string-fasta                                     467.3401+-5.9994     ?    470.3335+-6.8562        ?
   string-tagcloud                                  216.8984+-3.5951     ?    218.8555+-3.8178        ?

   <geometric>                                      510.6440+-1.7632          510.0562+-3.7384          might be 1.0012x faster

                                                         Baseline                    Mine                                       
V8Spider:
   crypto                                            63.5532+-1.1604           63.2187+-4.5578        
   deltablue                                        108.6254+-20.0269         108.0656+-8.0728        
   earley-boyer                                      51.6337+-3.0036     ?     52.5487+-2.5275        ? might be 1.0177x slower
   raytrace                                          43.1588+-2.7017           41.9937+-2.4578          might be 1.0277x faster
   regexp                                            92.9943+-8.6910           90.3668+-5.1416          might be 1.0291x faster
   richards                                          90.7831+-2.0854           90.6643+-1.3680        
   splay                                             43.8575+-3.3469           43.3805+-2.9629          might be 1.0110x faster

   <geometric>                                       66.3417+-2.0110           65.8018+-1.5227          might be 1.0082x faster

                                                         Baseline                    Mine                                       
Octane:
   encrypt                                           0.25786+-0.00463          0.25731+-0.00283       
   decrypt                                           4.47863+-0.03528    ?     4.47987+-0.02683       ?
   deltablue                                x2       0.21464+-0.00357          0.21408+-0.00364       
   earley                                            0.45126+-0.01088          0.44404+-0.00722         might be 1.0163x faster
   boyer                                             5.89364+-0.06519    ?     5.91028+-0.11855       ?
   navier-stokes                            x2       5.42090+-0.02607          5.42048+-0.05216       
   raytrace                                 x2       1.46947+-0.08080          1.45100+-0.11877         might be 1.0127x faster
   richards                                 x2       0.13104+-0.00216    ?     0.13206+-0.00207       ?
   splay                                    x2       0.43392+-0.00250    ?     0.43436+-0.00254       ?
   regexp                                   x2      34.59714+-0.44245    ?    34.93202+-0.46103       ?
   pdfjs                                    x2      48.40014+-0.65795    ?    48.72852+-1.20294       ?
   mandreel                                 x2      61.12263+-0.57779    ?    61.63420+-1.56071       ?
   gbemu                                    x2      49.60141+-5.12651         48.05380+-1.60300         might be 1.0322x faster
   closure                                           0.61033+-0.00817          0.60774+-0.00603       
   jquery                                            8.07721+-0.05129          8.01207+-0.09967       
   box2d                                    x2      13.24907+-0.06016    ?    13.41294+-0.44917       ? might be 1.0124x slower
   zlib                                     x2     431.00798+-30.20475   ?   439.95426+-5.86641       ? might be 1.0208x slower
   typescript                               x2     870.09998+-10.69744   ?   882.04584+-15.19327      ? might be 1.0137x slower

   <geometric>                                       7.33214+-0.08227    ?     7.34205+-0.04170       ? might be 1.0014x slower

                                                         Baseline                    Mine                                       
JSRegress:
   abs-boolean                                        3.2203+-0.1945            3.1720+-0.1164          might be 1.0152x faster
   adapt-to-double-divide                            17.2360+-0.5737           17.0312+-0.2831          might be 1.0120x faster
   aliased-arguments-getbyval                         1.3729+-0.0502     ?      1.4008+-0.0708        ? might be 1.0203x slower
   allocate-big-object                                3.0092+-0.0981     ?      3.0477+-0.0565        ? might be 1.0128x slower
   arguments-named-and-reflective                    12.8433+-0.8412           12.7335+-0.4447        
   arguments-out-of-bounds                           16.6956+-3.9587           16.6311+-3.8346        
   arguments-strict-mode                             12.8360+-3.8405           11.9272+-1.2902          might be 1.0762x faster
   arguments                                          9.9014+-0.3286     ?     10.0978+-0.4629        ? might be 1.0198x slower
   arity-mismatch-inlining                            0.9686+-0.0578     ?      0.9821+-0.0393        ? might be 1.0140x slower
   array-access-polymorphic-structure                 8.9720+-3.5119            7.6586+-0.2840          might be 1.1715x faster
   array-nonarray-polymorhpic-access                 36.7117+-2.5962           35.7428+-5.5054          might be 1.0271x faster
   array-prototype-every                             98.2296+-8.7225     ?    101.8570+-5.2562        ? might be 1.0369x slower
   array-prototype-forEach                           93.5289+-1.5892     ?     98.1909+-10.9714       ? might be 1.0498x slower
   array-prototype-map                              108.9283+-5.8934          108.0038+-3.7106        
   array-prototype-reduce                            95.5877+-5.5826           93.9107+-4.6227          might be 1.0179x faster
   array-prototype-reduceRight                       93.7086+-8.0278           92.4825+-2.8583          might be 1.0133x faster
   array-prototype-some                              98.8543+-4.9620     ?     99.6542+-3.8416        ?
   array-splice-contiguous                           44.3437+-1.0354     ?     45.2654+-1.3391        ? might be 1.0208x slower
   array-with-double-add                              4.3548+-0.1802     ?      4.3668+-0.1648        ?
   array-with-double-increment                        3.7970+-0.1123     ?      3.8566+-0.1485        ? might be 1.0157x slower
   array-with-double-mul-add                          5.4610+-0.3410            5.3241+-0.1099          might be 1.0257x faster
   array-with-double-sum                              3.6862+-0.3287            3.6830+-0.5645        
   array-with-int32-add-sub                           7.8126+-0.3251            7.6937+-0.0211          might be 1.0155x faster
   array-with-int32-or-double-sum                     3.4714+-0.0402     ?      3.5721+-0.1541        ? might be 1.0290x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     41.0140+-6.1712           40.1607+-6.0185          might be 1.0212x faster
   ArrayBuffer-DataView-alloc-long-lived             19.7679+-14.4102          16.5525+-4.5736          might be 1.1943x faster
   ArrayBuffer-Int32Array-byteOffset                  4.5427+-0.2283            4.5302+-0.2754        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     36.6625+-2.5241     ?     39.5987+-6.7669        ? might be 1.0801x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     26.8660+-5.3450           25.4923+-4.3483          might be 1.0539x faster
   ArrayBuffer-Int8Array-alloc-long-lived            14.4576+-0.8053           14.2610+-0.7838          might be 1.0138x faster
   ArrayBuffer-Int8Array-alloc                       15.0232+-5.6985           14.4177+-4.1158          might be 1.0420x faster
   asmjs_bool_bug                                     7.7941+-0.1362     ?      8.0250+-0.8835        ? might be 1.0296x slower
   assign-custom-setter-polymorphic                   3.3018+-0.1452     ?      3.8550+-1.5700        ? might be 1.1676x slower
   assign-custom-setter                               4.4750+-0.1810     ?      4.6882+-0.1697        ? might be 1.0476x slower
   basic-set                                          9.6240+-0.1389     ?      9.9232+-0.5319        ? might be 1.0311x slower
   big-int-mul                                        4.7480+-0.1321            4.7169+-0.0640        
   boolean-test                                       3.4479+-0.0923     ?      3.6615+-0.6361        ? might be 1.0620x slower
   branch-fold                                        4.4744+-0.1728            4.3790+-0.1046          might be 1.0218x faster
   branch-on-string-as-boolean                       19.9630+-0.2990     ?     22.6799+-4.1198        ? might be 1.1361x slower
   by-val-generic                                     9.5750+-1.7466            8.9412+-0.2151          might be 1.0709x faster
   call-spread-apply                                 34.3611+-4.7153     ?     35.2235+-5.5853        ? might be 1.0251x slower
   call-spread-call                                  27.3337+-0.7046     ?     28.6573+-3.4485        ? might be 1.0484x slower
   captured-assignments                               0.5240+-0.0152            0.5175+-0.0135          might be 1.0127x faster
   cast-int-to-double                                 5.9592+-0.1353            5.9381+-0.0139        
   cell-argument                                      8.9578+-0.2515            8.9111+-0.2825        
   cfg-simplify                                       3.2618+-0.0676     ?      3.2792+-0.1191        ?
   chain-getter-access                               10.0270+-0.3643           10.0055+-0.3002        
   cmpeq-obj-to-obj-other                            12.5806+-2.0797           11.4635+-0.8125          might be 1.0975x faster
   constant-test                                      5.6241+-0.0302     ?      5.6425+-0.0563        ?
   create-lots-of-functions                          12.8890+-0.0759     ?     12.9506+-0.3291        ?
   cse-new-array-buffer                               2.6310+-0.0804     ?      2.7346+-0.1221        ? might be 1.0394x slower
   cse-new-array                                      2.8115+-0.0375            2.8083+-0.1375        
   DataView-custom-properties                        43.8121+-3.9246     ?     46.3737+-3.1874        ? might be 1.0585x slower
   deconstructing-parameters-overridden-by-function   
                                                      0.5737+-0.0093     ?      0.5844+-0.0466        ? might be 1.0186x slower
   delay-tear-off-arguments-strictmode               16.0645+-1.0336     ?     17.0630+-3.7326        ? might be 1.0622x slower
   deltablue-varargs                                226.5117+-3.1954     ?    227.6398+-9.3877        ?
   destructuring-arguments                           20.1973+-2.3316           18.9424+-0.7719          might be 1.0662x faster
   destructuring-swap                                 5.5252+-0.1472     ?      5.5623+-0.2433        ?
   direct-arguments-getbyval                          1.4612+-0.1158            1.3307+-0.0703          might be 1.0981x faster
   div-boolean-double                                 5.5425+-0.0217     ?      5.5477+-0.0414        ?
   div-boolean                                        8.2067+-0.1302            8.1479+-0.0661        
   double-get-by-val-out-of-bounds                    5.0138+-0.0581     ?      5.1362+-0.1032        ? might be 1.0244x slower
   double-pollution-getbyval                          9.1201+-0.0326     ?      9.3698+-0.8800        ? might be 1.0274x slower
   double-pollution-putbyoffset                       4.8142+-0.0997            4.7669+-0.1053        
   double-real-use                                   31.8212+-2.1299     ?     32.0040+-2.0134        ?
   double-to-int32-typed-array-no-inline              2.4829+-0.0365     ?      2.5421+-0.0972        ? might be 1.0238x slower
   double-to-int32-typed-array                        2.4722+-0.4788            2.1817+-0.0328          might be 1.1331x faster
   double-to-uint32-typed-array-no-inline             2.5677+-0.0333     ?      2.5965+-0.1434        ? might be 1.0112x slower
   double-to-uint32-typed-array                       2.2618+-0.0916            2.2342+-0.0382          might be 1.0124x faster
   elidable-new-object-dag                           53.5077+-6.4391           51.8428+-4.5294          might be 1.0321x faster
   elidable-new-object-roflcopter                    49.7682+-5.7703     ?     50.6580+-6.2284        ? might be 1.0179x slower
   elidable-new-object-then-call                     48.6162+-5.2665           46.8713+-3.8508          might be 1.0372x faster
   elidable-new-object-tree                          55.0359+-2.8816           54.4592+-4.3932          might be 1.0106x faster
   empty-string-plus-int                              7.5477+-3.7125     ?      7.6516+-3.7422        ? might be 1.0138x slower
   emscripten-cube2hash                              43.7556+-3.0276           43.0240+-4.0967          might be 1.0170x faster
   exit-length-on-plain-object                       15.7245+-0.2412     ?     16.3611+-1.6587        ? might be 1.0405x slower
   external-arguments-getbyval                        1.4049+-0.1016            1.3812+-0.0366          might be 1.0171x faster
   external-arguments-putbyval                        2.7996+-0.4817            2.6830+-0.0816          might be 1.0435x faster
   fixed-typed-array-storage-var-index                1.3777+-0.0223     ?      1.5955+-0.6224        ? might be 1.1580x slower
   fixed-typed-array-storage                          1.0139+-0.0214     ?      1.0283+-0.0534        ? might be 1.0143x slower
   Float32Array-matrix-mult                           4.7501+-0.1802     ?      4.8168+-0.2031        ? might be 1.0140x slower
   Float32Array-to-Float64Array-set                  56.7501+-0.6144     ?     57.9482+-1.7555        ? might be 1.0211x slower
   Float64Array-alloc-long-lived                     79.0063+-3.0523     ?     80.8173+-3.8994        ? might be 1.0229x slower
   Float64Array-to-Int16Array-set                    77.4875+-5.2683           74.7937+-8.6817          might be 1.0360x faster
   fold-double-to-int                                17.1495+-1.8951     ?     17.3486+-2.0173        ? might be 1.0116x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.5899+-0.8536     ?     11.2811+-1.2971        ? might be 1.0653x slower
   fold-get-by-id-to-multi-get-by-offset             10.7054+-0.2915     ?     10.9856+-0.6257        ? might be 1.0262x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.9630+-1.2391     ?     10.0630+-1.3614        ? might be 1.1227x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     10.2752+-0.8692            8.6302+-1.9887          might be 1.1906x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.0980+-1.4318     ?      9.6800+-1.1187        ? might be 1.0640x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.4967+-0.7126     ?      7.5602+-0.3584        ?
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     10.9550+-0.8458     ?     11.4787+-0.7467        ? might be 1.0478x slower
   fold-put-by-id-to-multi-put-by-offset             10.3741+-0.8984     ?     11.0219+-1.5000        ? might be 1.0624x slower
   fold-put-structure                                 7.5172+-0.1691            7.3671+-2.1537          might be 1.0204x faster
   for-of-iterate-array-entries                       5.3880+-0.1336            5.2672+-0.1298          might be 1.0229x faster
   for-of-iterate-array-keys                          4.4026+-0.0188            4.3932+-0.0317        
   for-of-iterate-array-values                        4.3788+-0.4864            4.2913+-0.2151          might be 1.0204x faster
   fround                                            20.9208+-0.5737           20.3185+-0.1639          might be 1.0296x faster
   ftl-library-inlining-dataview                     68.8507+-0.3855     ?     69.1755+-1.0154        ?
   ftl-library-inlining                             117.1528+-4.4519     ?    119.2127+-10.3716       ? might be 1.0176x slower
   function-dot-apply                                 2.4020+-0.0459     ?      2.4246+-0.0988        ?
   function-test                                      3.1953+-0.1290     ?      3.2180+-0.1054        ?
   function-with-eval                               119.6375+-13.6813         118.8553+-4.1745        
   gcse-poly-get-less-obvious                        19.8271+-0.6027           19.7947+-1.8178        
   gcse-poly-get                                     26.2233+-7.0327           21.6472+-2.3008          might be 1.2114x faster
   gcse                                               5.0670+-0.1311     ?      5.0766+-0.1639        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.1968+-0.8083            2.9631+-0.1172          might be 1.0789x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      7.0033+-0.0339     ?      7.0320+-0.0424        ?
   get-by-id-chain-from-try-block                     6.9980+-0.2173     ?      8.3325+-4.2046        ? might be 1.1907x slower
   get-by-id-check-structure-elimination              5.9366+-0.1882            5.8863+-0.0554        
   get-by-id-proto-or-self                           18.6093+-0.9385     ?     19.3323+-1.4584        ? might be 1.0389x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.3752+-0.7561            3.2128+-0.1159          might be 1.0506x faster
   get-by-id-self-or-proto                           20.3293+-3.2557           18.6575+-1.4498          might be 1.0896x faster
   get-by-val-out-of-bounds                           4.9225+-0.0953     ?      4.9288+-0.0489        ?
   get_callee_monomorphic                             3.2603+-0.1460            3.2160+-0.0840          might be 1.0138x faster
   get_callee_polymorphic                             4.3520+-1.1148            4.0363+-0.4303          might be 1.0782x faster
   getter-no-activation                               5.4545+-0.0645            5.4492+-0.0111        
   getter-prototype                                  15.2780+-0.2974           15.1519+-0.2066        
   getter-richards                                  134.7772+-9.7071          134.1329+-5.7169        
   getter                                             6.1947+-0.4528            6.1627+-0.3521        
   global-var-const-infer-fire-from-opt               1.0341+-0.1009     ?      1.2120+-0.4432        ? might be 1.1721x slower
   global-var-const-infer                             0.9547+-0.1428            0.9296+-0.1716          might be 1.0270x faster
   HashMap-put-get-iterate-keys                      34.3432+-4.6165           31.9937+-1.2465          might be 1.0734x faster
   HashMap-put-get-iterate                           32.7965+-1.2302     ?     33.1775+-3.0083        ? might be 1.0116x slower
   HashMap-string-put-get-iterate                    32.2284+-2.2742           32.0828+-4.1031        
   hoist-make-rope                                   14.2027+-4.5656           13.4718+-1.2890          might be 1.0543x faster
   hoist-poly-check-structure-effectful-loop   
                                                      5.5842+-0.0543            5.5685+-0.0368        
   hoist-poly-check-structure                         3.9491+-0.1426     ?      4.0046+-0.0776        ? might be 1.0140x slower
   imul-double-only                                   8.9958+-1.0635     ?      9.9385+-4.6171        ? might be 1.1048x slower
   imul-int-only                                     10.8339+-0.7062           10.1346+-0.4057          might be 1.0690x faster
   imul-mixed                                         8.0379+-0.2206     ?      8.1835+-0.1612        ? might be 1.0181x slower
   in-four-cases                                     22.8190+-1.0047           22.4958+-0.4647          might be 1.0144x faster
   in-one-case-false                                 11.6093+-0.0713           11.6022+-0.1401        
   in-one-case-true                                  11.6323+-0.1609           11.4933+-0.0873          might be 1.0121x faster
   in-two-cases                                      12.2965+-0.4238           12.1730+-0.0431          might be 1.0101x faster
   indexed-properties-in-objects                      3.3658+-0.4913            3.1904+-0.1003          might be 1.0550x faster
   infer-closure-const-then-mov-no-inline             4.5187+-0.3118     ?      4.5233+-0.4257        ?
   infer-closure-const-then-mov                      20.9950+-0.2361     ?     21.2225+-0.4561        ? might be 1.0108x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     14.3294+-3.0504           12.9688+-0.4681          might be 1.1049x faster
   infer-closure-const-then-put-to-scope             25.7725+-3.5657           25.0695+-2.3093          might be 1.0280x faster
   infer-closure-const-then-reenter-no-inline   
                                                     56.2971+-0.4301     ?     57.5267+-3.0752        ? might be 1.0218x slower
   infer-closure-const-then-reenter                  24.5037+-0.1938           24.4990+-0.2752        
   infer-constant-global-property                     3.6913+-0.1244     ?      3.7807+-0.2272        ? might be 1.0242x slower
   infer-constant-property                            3.0391+-0.1674            3.0192+-0.1193        
   infer-one-time-closure-ten-vars                   14.7400+-4.9504           13.0287+-0.3150          might be 1.1313x faster
   infer-one-time-closure-two-vars                   13.3864+-1.8930           12.6661+-0.9088          might be 1.0569x faster
   infer-one-time-closure                            12.6097+-0.5628           12.3367+-0.3149          might be 1.0221x faster
   infer-one-time-deep-closure                       21.2126+-0.4667     ?     21.2598+-0.7186        ?
   inline-arguments-access                            4.9100+-0.0878     ?      5.0970+-0.5691        ? might be 1.0381x slower
   inline-arguments-aliased-access                    5.0714+-0.1905            4.9692+-0.0554          might be 1.0205x faster
   inline-arguments-local-escape                      5.0663+-0.3799            5.0345+-0.2707        
   inline-get-scoped-var                              5.4769+-0.3028     ?      5.5074+-0.3907        ?
   inlined-put-by-id-transition                      13.4531+-0.8091           13.1435+-0.6455          might be 1.0236x faster
   int-or-other-abs-then-get-by-val                   5.6118+-0.1022            5.5810+-0.0395        
   int-or-other-abs-zero-then-get-by-val             19.8276+-0.2253           19.7888+-2.3013        
   int-or-other-add-then-get-by-val                   5.3658+-0.0228     ?      5.3737+-0.0144        ?
   int-or-other-add                                   5.7277+-0.0829     ?      5.7340+-0.0688        ?
   int-or-other-div-then-get-by-val                   4.9788+-1.1134            4.6340+-0.0146          might be 1.0744x faster
   int-or-other-max-then-get-by-val                   4.6920+-0.0487     ?      4.6978+-0.0332        ?
   int-or-other-min-then-get-by-val                   4.8353+-0.2555            4.7338+-0.1094          might be 1.0214x faster
   int-or-other-mod-then-get-by-val                   4.4415+-0.0774     ?      4.4542+-0.0450        ?
   int-or-other-mul-then-get-by-val                   4.4695+-0.1257            4.4000+-0.0169          might be 1.0158x faster
   int-or-other-neg-then-get-by-val                   5.3001+-0.0752            5.2852+-0.0279        
   int-or-other-neg-zero-then-get-by-val             19.8148+-0.1916     ^     19.4117+-0.1429        ^ definitely 1.0208x faster
   int-or-other-sub-then-get-by-val                   5.4250+-0.0315     ?      5.4543+-0.0625        ?
   int-or-other-sub                                   4.1940+-0.0220     ?      4.2075+-0.0110        ?
   int-overflow-local                                 5.2838+-0.0283     ?      5.2926+-0.0131        ?
   Int16Array-alloc-long-lived                       57.3973+-5.6207     ?     58.9490+-1.9528        ? might be 1.0270x slower
   Int16Array-bubble-sort-with-byteLength            23.8937+-1.7626           23.2281+-1.6982          might be 1.0287x faster
   Int16Array-bubble-sort                            23.1624+-0.3539     ?     23.2029+-0.3427        ?
   Int16Array-load-int-mul                            1.7651+-0.0815     ?      1.9953+-0.7787        ? might be 1.1304x slower
   Int16Array-to-Int32Array-set                      60.5853+-0.3585     ^     59.4720+-0.5138        ^ definitely 1.0187x faster
   Int32Array-alloc-large                            30.4472+-1.1901           28.3816+-3.2544          might be 1.0728x faster
   Int32Array-alloc-long-lived                       62.5002+-3.8054           62.4352+-3.6428        
   Int32Array-alloc                                   4.4374+-1.9453            3.7000+-0.1285          might be 1.1993x faster
   Int32Array-Int8Array-view-alloc                    7.6110+-0.2992     ?      7.6720+-0.2879        ?
   int52-spill                                        6.5381+-1.3387            6.2883+-0.1095          might be 1.0397x faster
   Int8Array-alloc-long-lived                        51.3732+-3.7690     ?     51.5912+-6.0611        ?
   Int8Array-load-with-byteLength                     4.2064+-0.7232            3.9149+-0.0497          might be 1.0745x faster
   Int8Array-load                                     4.1205+-0.5346            4.0629+-0.0509          might be 1.0142x faster
   integer-divide                                    11.7767+-0.5267           11.7748+-0.2872        
   integer-modulo                                     2.2379+-0.1067     ?      2.5913+-1.0585        ? might be 1.1579x slower
   is-boolean-fold-tricky                             4.7258+-0.1983            4.6561+-0.1733          might be 1.0150x faster
   is-boolean-fold                                    3.4204+-0.0806            3.4130+-0.1700        
   is-function-fold-tricky-internal-function   
                                                     12.6127+-1.1193     ?     13.0942+-1.6605        ? might be 1.0382x slower
   is-function-fold-tricky                            4.8950+-0.2397     ?      4.9863+-0.1679        ? might be 1.0186x slower
   is-function-fold                                   3.5258+-0.1253     ?      3.8748+-1.5596        ? might be 1.0990x slower
   is-number-fold-tricky                              4.8602+-0.2554            4.7742+-0.0770          might be 1.0180x faster
   is-number-fold                                     3.8470+-0.5021            3.3646+-0.0262          might be 1.1434x faster
   is-object-or-null-fold-functions                   3.5613+-0.1064            3.5160+-0.1897          might be 1.0129x faster
   is-object-or-null-fold-less-tricky                 4.8761+-0.1282            4.8076+-0.1937          might be 1.0142x faster
   is-object-or-null-fold-tricky                      7.0103+-0.0770     ?      7.0315+-0.0720        ?
   is-object-or-null-fold                             3.4748+-0.1153     ?      3.6149+-0.4972        ? might be 1.0403x slower
   is-object-or-null-trickier-function                4.7900+-0.1058     ?      4.9711+-0.3502        ? might be 1.0378x slower
   is-object-or-null-trickier-internal-function   
                                                     13.7885+-1.3576           13.4838+-0.1319          might be 1.0226x faster
   is-object-or-null-tricky-function                  4.8666+-0.3278     ?      4.9315+-0.1694        ? might be 1.0133x slower
   is-object-or-null-tricky-internal-function   
                                                      9.8936+-0.2238     ?      9.9026+-0.1256        ?
   is-string-fold-tricky                              4.7136+-0.1823            4.6628+-0.1480          might be 1.0109x faster
   is-string-fold                                     3.4226+-0.1602            3.3499+-0.0266          might be 1.0217x faster
   is-undefined-fold-tricky                           4.1583+-0.5376            3.9715+-0.0170          might be 1.0470x faster
   is-undefined-fold                                  3.4141+-0.1861     ?      3.4924+-0.1395        ? might be 1.0229x slower
   large-int-captured                                 5.3645+-0.1534            5.2603+-0.0316          might be 1.0198x faster
   large-int-neg                                     19.4058+-3.9175           17.1955+-0.8838          might be 1.1285x faster
   large-int                                         16.4410+-2.4539           16.2362+-0.4877          might be 1.0126x faster
   load-varargs-elimination                          27.1525+-3.6940           25.8515+-1.4564          might be 1.0503x faster
   logical-not-weird-types                            3.9513+-1.3795            3.4546+-0.0668          might be 1.1438x faster
   logical-not                                        5.0100+-0.0295            5.0092+-0.0373        
   lots-of-fields                                    13.6903+-3.6652     ?     15.1327+-3.9483        ? might be 1.1054x slower
   make-indexed-storage                               3.4380+-0.1118     ?      3.6924+-0.5386        ? might be 1.0740x slower
   make-rope-cse                                      5.6782+-1.2621            5.5966+-1.1744          might be 1.0146x faster
   marsaglia-larger-ints                             48.6388+-4.9930           48.0659+-5.6641          might be 1.0119x faster
   marsaglia-osr-entry                               27.9402+-4.8010           25.5784+-1.9816          might be 1.0923x faster
   math-with-out-of-bounds-array-values              27.5156+-1.2146           27.2513+-0.4761        
   max-boolean                                        3.1392+-0.1385            3.0809+-0.1433          might be 1.0189x faster
   method-on-number                                  19.7698+-1.1727           19.0416+-0.3158          might be 1.0382x faster
   min-boolean                                        3.4625+-1.5071            3.0740+-0.1019          might be 1.1264x faster
   minus-boolean-double                               3.4017+-0.1270            3.2972+-0.1190          might be 1.0317x faster
   minus-boolean                                      2.9648+-0.4134            2.8331+-0.1473          might be 1.0465x faster
   misc-strict-eq                                    40.5859+-2.4451     ?     42.2602+-5.8067        ? might be 1.0413x slower
   mod-boolean-double                                11.1805+-0.2295     ?     12.7975+-3.5235        ? might be 1.1446x slower
   mod-boolean                                        8.3790+-0.4535            8.2796+-0.1395          might be 1.0120x faster
   mul-boolean-double                                 3.9323+-0.3954            3.8707+-0.1421          might be 1.0159x faster
   mul-boolean                                        3.0146+-0.0356     ?      3.0643+-0.1245        ? might be 1.0165x slower
   neg-boolean                                        3.3849+-0.1363            3.2929+-0.0277          might be 1.0279x faster
   negative-zero-divide                               0.4008+-0.0140            0.3903+-0.0154          might be 1.0269x faster
   negative-zero-modulo                               0.3883+-0.0298     ?      0.5334+-0.4611        ? might be 1.3736x slower
   negative-zero-negate                               0.4747+-0.3158            0.4515+-0.2510          might be 1.0514x faster
   nested-function-parsing                           46.5453+-4.8440           46.5215+-3.7350        
   new-array-buffer-dead                            132.1357+-3.5477          132.0585+-5.1249        
   new-array-buffer-push                              8.5154+-3.3975            7.5657+-0.1547          might be 1.1255x faster
   new-array-dead                                    21.6713+-3.9982           20.1432+-0.4073          might be 1.0759x faster
   new-array-push                                     4.6719+-0.1924            4.6093+-0.1288          might be 1.0136x faster
   no-inline-constructor                             48.6768+-4.4713           48.6542+-5.5702        
   number-test                                        3.4465+-0.0848     ?      3.6093+-0.6640        ? might be 1.0472x slower
   object-closure-call                                6.6762+-0.1792            6.6570+-0.1481        
   object-test                                        3.1378+-0.1435     ?      3.1546+-0.0557        ?
   obvious-sink-pathology-taken                     159.3154+-3.2527     ?    164.6355+-11.1326       ? might be 1.0334x slower
   obvious-sink-pathology                           153.9712+-5.1602          150.8895+-7.7431          might be 1.0204x faster
   obviously-elidable-new-object                     43.8258+-4.7993           42.2515+-2.2845          might be 1.0373x faster
   plus-boolean-arith                                 2.9552+-0.1058     ?      2.9924+-0.0911        ? might be 1.0126x slower
   plus-boolean-double                                3.3673+-0.2052            3.2745+-0.0110          might be 1.0284x faster
   plus-boolean                                       2.9864+-0.0220     ?      3.0657+-0.1616        ? might be 1.0266x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.7223+-0.4563            3.4429+-0.1043          might be 1.0812x faster
   poly-chain-access-different-prototypes             3.1865+-0.4856            3.1585+-0.6807        
   poly-chain-access-simpler                          3.5633+-0.3809            3.4485+-0.1895          might be 1.0333x faster
   poly-chain-access                                  2.9302+-0.1169     ?      2.9928+-0.1348        ? might be 1.0214x slower
   poly-stricteq                                     64.4421+-0.2971           64.1725+-0.2245        
   polymorphic-array-call                             1.4791+-0.0204     ?      1.5060+-0.1008        ? might be 1.0182x slower
   polymorphic-get-by-id                              3.5897+-0.5520            3.5305+-0.4419          might be 1.0168x faster
   polymorphic-put-by-id                             36.0311+-3.4431           34.0986+-2.8510          might be 1.0567x faster
   polymorphic-structure                             19.7670+-0.3335     ?     21.3568+-5.0095        ? might be 1.0804x slower
   polyvariant-monomorphic-get-by-id                  9.5027+-0.1453            9.4805+-0.1619        
   proto-getter-access                                9.9935+-0.3171     ?     10.1820+-0.8125        ? might be 1.0189x slower
   put-by-id-replace-and-transition                  10.6723+-0.2242     ?     10.7100+-0.1183        ?
   put-by-id-slightly-polymorphic                     3.6301+-1.3616            3.1919+-0.1000          might be 1.1373x faster
   put-by-id                                         16.4205+-2.6588           15.0837+-1.1979          might be 1.0886x faster
   put-by-val-direct                                  0.4515+-0.1567            0.4451+-0.1751          might be 1.0144x faster
   put-by-val-large-index-blank-indexing-type   
                                                      6.8824+-0.7923     ?      7.5638+-1.3024        ? might be 1.0990x slower
   put-by-val-machine-int                             3.0292+-0.1380     ?      3.0447+-0.1670        ?
   rare-osr-exit-on-local                            16.5243+-0.2774           16.4348+-0.2475        
   register-pressure-from-osr                        23.1164+-1.3701     ?     23.9534+-4.0668        ? might be 1.0362x slower
   repeat-multi-get-by-offset                        28.9618+-4.4097           26.9902+-0.2823          might be 1.0730x faster
   setter-prototype                                  10.7710+-0.3706     ?     10.7938+-0.1458        ?
   setter                                             6.1991+-0.1504     ?      6.8801+-0.8430        ? might be 1.1098x slower
   simple-activation-demo                            27.3453+-1.2724     ?     28.2598+-3.6776        ? might be 1.0334x slower
   simple-getter-access                              12.8262+-0.2307     ?     12.9067+-0.4459        ?
   simple-poly-call-nested                            8.6797+-0.4070            8.4525+-0.2780          might be 1.0269x faster
   simple-poly-call                                   1.4460+-0.0744            1.4434+-0.0314        
   sin-boolean                                       22.1412+-5.2329     ?     22.7329+-3.5336        ? might be 1.0267x slower
   singleton-scope                                   68.3464+-0.3309           68.2884+-0.3281        
   sink-function                                     13.1364+-0.4843     ?     13.2363+-0.3828        ?
   sink-huge-activation                              19.2575+-0.5110           18.9757+-0.5072          might be 1.0149x faster
   sinkable-new-object-dag                           83.2670+-2.8131           81.8956+-5.3067          might be 1.0167x faster
   sinkable-new-object-taken                         58.7160+-5.1176     ?     59.6504+-3.5159        ? might be 1.0159x slower
   sinkable-new-object                               43.6718+-3.4087     ?     44.8962+-1.8484        ? might be 1.0280x slower
   slow-array-profile-convergence                     4.0090+-1.6502            3.2118+-0.1392          might be 1.2482x faster
   slow-convergence                                   2.9677+-0.0467     ?      3.2560+-0.4964        ? might be 1.0972x slower
   slow-ternaries                                    25.6522+-1.8501     ?     26.8622+-5.2568        ? might be 1.0472x slower
   sorting-benchmark                                 21.4618+-3.4800           20.8793+-1.3563          might be 1.0279x faster
   sparse-conditional                                 1.6041+-0.5841            1.4025+-0.0667          might be 1.1438x faster
   splice-to-remove                                  18.8461+-4.2157           17.1693+-0.3483          might be 1.0977x faster
   string-char-code-at                               16.5883+-0.8330     ?     18.6528+-7.9444        ? might be 1.1245x slower
   string-concat-object                               2.7195+-0.0542     ?      3.3341+-1.6897        ? might be 1.2260x slower
   string-concat-pair-object                          2.8721+-0.2093            2.8414+-0.0932          might be 1.0108x faster
   string-concat-pair-simple                         16.9977+-3.5484           15.0210+-2.7872          might be 1.1316x faster
   string-concat-simple                              16.5022+-3.2940     ?     16.6695+-3.5701        ? might be 1.0101x slower
   string-cons-repeat                                10.0593+-3.3828     ?     10.2039+-2.9125        ? might be 1.0144x slower
   string-cons-tower                                  8.9941+-0.3408            8.9540+-0.2615        
   string-equality                                   18.5232+-0.3456     ?     20.8510+-4.3420        ? might be 1.1257x slower
   string-get-by-val-big-char                         8.5632+-0.3288     ?      8.6866+-0.1891        ? might be 1.0144x slower
   string-get-by-val-out-of-bounds-insane             4.4302+-0.4998            4.3070+-0.1236          might be 1.0286x faster
   string-get-by-val-out-of-bounds                    5.9038+-0.1122            5.8696+-0.0480        
   string-get-by-val                                  3.9386+-0.4433            3.8030+-0.2028          might be 1.0357x faster
   string-hash                                        2.4052+-0.0323     ?      2.6518+-0.8689        ? might be 1.1025x slower
   string-long-ident-equality                        15.3735+-0.4652     ?     15.4388+-0.3210        ?
   string-out-of-bounds                              19.2407+-4.4023           16.4205+-2.0732          might be 1.1717x faster
   string-repeat-arith                               44.2236+-5.6896           38.5403+-4.2759          might be 1.1475x faster
   string-sub                                        84.2205+-5.7109           78.4138+-13.5227         might be 1.0741x faster
   string-test                                        3.3108+-0.0700            3.2469+-0.0853          might be 1.0197x faster
   string-var-equality                               34.3693+-0.4406     ?     35.6979+-3.1775        ? might be 1.0387x slower
   structure-hoist-over-transitions                   3.0018+-0.1020            2.9971+-0.1559        
   substring-concat-weird                            46.4565+-0.5890     ?     46.5802+-0.7410        ?
   substring-concat                                  49.7126+-0.8808     ?     51.6993+-4.5483        ? might be 1.0400x slower
   substring                                         60.2829+-8.6794           55.0290+-4.4260          might be 1.0955x faster
   switch-char-constant                               3.3047+-1.0506            2.9798+-0.0095          might be 1.1090x faster
   switch-char                                        7.3178+-0.8335            7.0242+-0.9519          might be 1.0418x faster
   switch-constant                                    9.6271+-0.7063     ?     10.4117+-3.0805        ? might be 1.0815x slower
   switch-string-basic-big-var                       21.7107+-4.1292           20.4088+-0.3117          might be 1.0638x faster
   switch-string-basic-big                           17.4602+-0.3632           17.3452+-0.4258        
   switch-string-basic-var                           17.8597+-3.3139           16.6417+-0.1873          might be 1.0732x faster
   switch-string-basic                               16.5704+-4.1911           15.9893+-1.9369          might be 1.0363x faster
   switch-string-big-length-tower-var                22.6145+-3.4720           21.3845+-0.3080          might be 1.0575x faster
   switch-string-length-tower-var                    16.9377+-0.4714     ?     18.8063+-3.3283        ? might be 1.1103x slower
   switch-string-length-tower                        14.2855+-0.3909     ?     16.5535+-4.3880        ? might be 1.1588x slower
   switch-string-short                               14.3780+-0.3088     ?     15.6671+-4.8127        ? might be 1.0897x slower
   switch                                            14.3378+-1.6624           13.9407+-0.0637          might be 1.0285x faster
   tear-off-arguments-simple                          3.8374+-0.0772            3.8284+-0.1216        
   tear-off-arguments                                 5.4048+-0.1515            5.3742+-0.0726        
   temporal-structure                                14.5143+-0.3034     ?     14.6072+-0.5366        ?
   to-int32-boolean                                  16.7267+-1.1388     ?     17.0177+-1.4415        ? might be 1.0174x slower
   try-catch-get-by-val-cloned-arguments             16.5273+-0.3573     ?     17.9636+-5.1493        ? might be 1.0869x slower
   try-catch-get-by-val-direct-arguments              9.7147+-4.8480     ?     11.1543+-3.8354        ? might be 1.1482x slower
   try-catch-get-by-val-scoped-arguments             10.5196+-4.8720            9.6581+-3.1784          might be 1.0892x faster
   typed-array-get-set-by-val-profiling              36.4501+-1.4475     ?     39.2926+-4.5969        ? might be 1.0780x slower
   undefined-property-access                        370.0005+-2.8379          364.0804+-4.1531          might be 1.0163x faster
   undefined-test                                     3.4080+-0.0998            3.3348+-0.1471          might be 1.0219x faster
   unprofiled-licm                                   25.1173+-3.8495           23.5251+-0.3411          might be 1.0677x faster
   varargs-call                                      16.8080+-1.3137           16.3125+-0.3114          might be 1.0304x faster
   varargs-construct-inline                          32.9828+-2.6799           32.7115+-3.0864        
   varargs-construct                                 26.3964+-3.3177           25.0063+-0.4314          might be 1.0556x faster
   varargs-inline                                     9.8303+-0.2636            9.8077+-0.0848        
   varargs-strict-mode                               10.7872+-0.2571           10.7691+-0.2770        
   varargs                                           10.6591+-0.2619     ?     10.8317+-0.4570        ? might be 1.0162x slower
   weird-inlining-const-prop                          2.6885+-0.7399            2.5542+-0.2489          might be 1.0526x faster

   <geometric>                                        9.7148+-0.0663            9.6727+-0.0350          might be 1.0044x faster

                                                         Baseline                    Mine                                       
Geomean of preferred means:
   <scaled-result>                                   42.8312+-0.5274           42.6281+-0.3125          might be 1.0048x faster
Comment 30 Yusuke Suzuki 2015-06-09 06:44:13 PDT
Created attachment 254564 [details]
Patch
Comment 31 Yusuke Suzuki 2015-06-09 06:44:29 PDT
Changed the name and rebased the patch (just for its ChangeLog).
Comment 32 Darin Adler 2015-06-09 09:58:25 PDT
Comment on attachment 254564 [details]
Patch

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

> Source/JavaScriptCore/runtime/Lookup.h:273
> +        // TODO: Support a setter property.

We don’t use TODO in this project. We use FIXME. But also I don’t think this needs a FIXME.
Comment 33 Yusuke Suzuki 2015-06-09 11:38:18 PDT
Comment on attachment 254564 [details]
Patch

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

Thank you for your review :)

>> Source/JavaScriptCore/runtime/Lookup.h:273
>> +        // TODO: Support a setter property.
> 
> We don’t use TODO in this project. We use FIXME. But also I don’t think this needs a FIXME.

OK, so just dropping this comment.
Comment 34 Yusuke Suzuki 2015-06-09 11:43:22 PDT
Committed r185370: <http://trac.webkit.org/changeset/185370>
Comment 35 Yusuke Suzuki 2015-06-09 15:21:38 PDT
Handled in https://bugs.webkit.org/show_bug.cgi?id=145815
Comment 36 Joseph Pecoraro 2015-06-16 12:52:50 PDT
Comment on attachment 254564 [details]
Patch

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

> LayoutTests/ChangeLog:36
> +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A10.html:
> +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A8.html:
> +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A9.html:
> +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A10.html:
> +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A8.html:

Should we be modifying these Conformance tests? I was under the impression we should just fail them if the language has changed and just include newer tests covering the new behavior.
Comment 37 Darin Adler 2015-06-16 13:43:19 PDT
(In reply to comment #36)
> Comment on attachment 254564 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=254564&action=review
> 
> > LayoutTests/ChangeLog:36
> > +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A10.html:
> > +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A8.html:
> > +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A9.html:
> > +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A10.html:
> > +        * sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A8.html:
> 
> Should we be modifying these Conformance tests? I was under the impression
> we should just fail them if the language has changed and just include newer
> tests covering the new behavior.

I encouraged Yusuke to do this. I don’t think there’s a good strong argument either way. I do think that tests that fail and we expect to always fail forever are confusing.