| Summary: | Introduce getter definition into static hash tables and use it for getters in RegExp.prototype. | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Geoffrey Garen <ggaren> | ||||||||||||||||||||||
| Component: | JavaScriptCore | Assignee: | Yusuke Suzuki <ysuzuki> | ||||||||||||||||||||||
| Status: | RESOLVED FIXED | ||||||||||||||||||||||||
| Severity: | Normal | CC: | buildbot, darin, joepeck, ljharb, rniwa, ysuzuki | ||||||||||||||||||||||
| Priority: | P2 | ||||||||||||||||||||||||
| Version: | 528+ (Nightly build) | ||||||||||||||||||||||||
| Hardware: | Unspecified | ||||||||||||||||||||||||
| OS: | Unspecified | ||||||||||||||||||||||||
| Bug Depends on: | |||||||||||||||||||||||||
| Bug Blocks: | 145599 | ||||||||||||||||||||||||
| Attachments: |
|
||||||||||||||||||||||||
|
Description
Geoffrey Garen
2015-06-05 11:42:29 PDT
*** Bug 145706 has been marked as a duplicate of this bug. *** * According to the spec, RegExp.prototype.global, for example, is indeed a prototype property accessor in ES6, not an own property accessor. Other examples: Map.prototype.size, Set.prototype.size *** Bug 145738 has been marked as a duplicate of this bug. *** Created attachment 254446 [details]
Patch
Created attachment 254447 [details]
Patch
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. Created attachment 254448 [details]
Patch
Created attachment 254449 [details]
Patch
Created attachment 254450 [details]
Patch
Created attachment 254455 [details]
Patch
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 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 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 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
Need to investigate those 20 failures. Should be pretty quick to figure out what’s going on! 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. (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. (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 :) (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! (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! Created attachment 254472 [details]
Patch
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
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? > Other examples: Map.prototype.size, Set.prototype.size
What is our approach for these other properties, outside of the RegExp prototype?
(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? (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). (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. 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
Created attachment 254564 [details]
Patch
Changed the name and rebased the patch (just for its ChangeLog). 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 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. Committed r185370: <http://trac.webkit.org/changeset/185370> 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. (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. |