RESOLVED FIXED 145705
Introduce getter definition into static hash tables and use it for getters in RegExp.prototype.
https://bugs.webkit.org/show_bug.cgi?id=145705
Summary Introduce getter definition into static hash tables and use it for getters in...
Geoffrey Garen
Reported 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.
Attachments
Patch (40.43 KB, patch)
2015-06-07 13:54 PDT, Yusuke Suzuki
no flags
Patch (40.33 KB, patch)
2015-06-07 14:04 PDT, Yusuke Suzuki
no flags
Patch (42.70 KB, patch)
2015-06-07 14:18 PDT, Yusuke Suzuki
no flags
Patch (40.56 KB, patch)
2015-06-07 14:19 PDT, Yusuke Suzuki
no flags
Patch (48.68 KB, patch)
2015-06-07 14:46 PDT, Yusuke Suzuki
no flags
Patch (48.61 KB, patch)
2015-06-07 15:49 PDT, Yusuke Suzuki
no flags
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
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
Patch (86.24 KB, patch)
2015-06-07 21:27 PDT, Yusuke Suzuki
no flags
Patch (86.37 KB, patch)
2015-06-09 06:44 PDT, Yusuke Suzuki
darin: review+
Jordan Harband
Comment 1 2015-06-05 13:11:40 PDT
*** Bug 145706 has been marked as a duplicate of this bug. ***
Jordan Harband
Comment 2 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.
Yusuke Suzuki
Comment 3 2015-06-07 09:54:33 PDT
Other examples: Map.prototype.size, Set.prototype.size
Yusuke Suzuki
Comment 4 2015-06-07 13:44:52 PDT
*** Bug 145738 has been marked as a duplicate of this bug. ***
Yusuke Suzuki
Comment 5 2015-06-07 13:54:38 PDT
Yusuke Suzuki
Comment 6 2015-06-07 14:04:38 PDT
Yusuke Suzuki
Comment 7 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.
Yusuke Suzuki
Comment 8 2015-06-07 14:18:20 PDT
Yusuke Suzuki
Comment 9 2015-06-07 14:19:11 PDT
Yusuke Suzuki
Comment 10 2015-06-07 14:46:32 PDT
Yusuke Suzuki
Comment 11 2015-06-07 15:49:20 PDT
Build Bot
Comment 12 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
Build Bot
Comment 13 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
Build Bot
Comment 14 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
Build Bot
Comment 15 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
Darin Adler
Comment 16 2015-06-07 17:43:54 PDT
Need to investigate those 20 failures. Should be pretty quick to figure out what’s going on!
Darin Adler
Comment 17 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.
Yusuke Suzuki
Comment 18 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.
Yusuke Suzuki
Comment 19 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 :)
Darin Adler
Comment 20 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!
Yusuke Suzuki
Comment 21 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!
Yusuke Suzuki
Comment 22 2015-06-07 21:27:28 PDT
Yusuke Suzuki
Comment 23 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
Darin Adler
Comment 24 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?
Geoffrey Garen
Comment 25 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?
Yusuke Suzuki
Comment 26 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?
Yusuke Suzuki
Comment 27 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).
Jordan Harband
Comment 28 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.
Yusuke Suzuki
Comment 29 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
Yusuke Suzuki
Comment 30 2015-06-09 06:44:13 PDT
Yusuke Suzuki
Comment 31 2015-06-09 06:44:29 PDT
Changed the name and rebased the patch (just for its ChangeLog).
Darin Adler
Comment 32 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.
Yusuke Suzuki
Comment 33 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.
Yusuke Suzuki
Comment 34 2015-06-09 11:43:22 PDT
Yusuke Suzuki
Comment 35 2015-06-09 15:21:38 PDT
Joseph Pecoraro
Comment 36 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.
Darin Adler
Comment 37 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.
Note You need to log in before you can comment on or make changes to this bug.