| Summary: | Introduce put_by_id like IC into put_by_val when the given name is String or Symbol | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Yusuke Suzuki <ysuzuki> | ||||||||||||||
| Component: | JavaScriptCore | Assignee: | Yusuke Suzuki <ysuzuki> | ||||||||||||||
| Status: | RESOLVED FIXED | ||||||||||||||||
| Severity: | Normal | CC: | fpizlo, ggaren, mark.lam, msaboff, saam | ||||||||||||||
| Priority: | P2 | ||||||||||||||||
| Version: | 528+ (Nightly build) | ||||||||||||||||
| Hardware: | Unspecified | ||||||||||||||||
| OS: | Unspecified | ||||||||||||||||
| Bug Depends on: | 149158 | ||||||||||||||||
| Bug Blocks: | |||||||||||||||||
| Attachments: |
|
||||||||||||||||
|
Description
Yusuke Suzuki
2015-08-06 17:49:28 PDT
Created attachment 258527 [details]
Patch
WIP: the logic is almost completed. I'll do a refactoring & add tests (splitting out the ident guard in baseline code to the function etc.)
This will improve the following
var obj = {
[key]: value
};
initializations at the same time :)
Created attachment 258544 [details]
Patch
Benchmark results.
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on Yusukes-MacBook-Pro (MacBookPro11,3).
VMs tested:
"master" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/master-for-put-by-val/Release/jsc
"ic" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/put-by-val/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.
master ic
SunSpider:
3d-cube 4.6475+-0.5510 4.5507+-0.2860 might be 1.0213x faster
3d-morph 5.3203+-0.0821 ? 5.4310+-0.5118 ? might be 1.0208x slower
3d-raytrace 5.6584+-0.7394 5.4026+-0.4226 might be 1.0473x faster
access-binary-trees 1.9963+-0.1685 1.9078+-0.1089 might be 1.0464x faster
access-fannkuch 5.4057+-0.2264 ? 5.5830+-0.3601 ? might be 1.0328x slower
access-nbody 2.5447+-0.0383 ? 2.6700+-0.2888 ? might be 1.0492x slower
access-nsieve 2.9828+-0.0873 ? 3.1432+-0.3277 ? might be 1.0538x slower
bitops-3bit-bits-in-byte 1.4982+-0.0742 1.4454+-0.0591 might be 1.0366x faster
bitops-bits-in-byte 3.2570+-0.0762 ? 3.3142+-0.1078 ? might be 1.0176x slower
bitops-bitwise-and 2.1485+-0.3037 1.9880+-0.0391 might be 1.0807x faster
bitops-nsieve-bits 2.9438+-0.0831 2.9420+-0.0261
controlflow-recursive 2.0002+-0.1176 ? 2.0281+-0.1715 ? might be 1.0139x slower
crypto-aes 3.8498+-0.2089 ? 4.0342+-0.4514 ? might be 1.0479x slower
crypto-md5 2.4705+-0.1021 ? 2.5795+-0.1916 ? might be 1.0441x slower
crypto-sha1 2.4130+-0.1983 ? 2.5687+-0.5378 ? might be 1.0645x slower
date-format-tofte 6.7535+-0.2203 ? 6.7904+-0.2469 ?
date-format-xparb 4.7384+-0.6966 4.5208+-0.2107 might be 1.0481x faster
math-cordic 2.8754+-0.3016 2.7780+-0.0323 might be 1.0351x faster
math-partial-sums 5.3906+-0.1271 5.3134+-0.1641 might be 1.0145x faster
math-spectral-norm 1.8530+-0.0518 1.8110+-0.0554 might be 1.0232x faster
regexp-dna 6.6661+-0.1668 6.5053+-0.2547 might be 1.0247x faster
string-base64 4.3551+-0.2986 ? 4.3760+-0.1540 ?
string-fasta 5.7739+-0.1392 ? 5.7973+-0.0913 ?
string-tagcloud 8.2440+-0.3629 ? 8.2941+-0.4753 ?
string-unpack-code 20.2731+-0.5952 ? 20.5186+-0.8743 ? might be 1.0121x slower
string-validate-input 4.6454+-0.2557 4.6300+-0.3546
<arithmetic> 4.6425+-0.0577 ? 4.6509+-0.0370 ? might be 1.0018x slower
master ic
LongSpider:
3d-cube 790.6931+-13.5212 787.5883+-10.1992
3d-morph 1557.5891+-37.6890 1540.4322+-5.6723 might be 1.0111x faster
3d-raytrace 640.2073+-11.8724 ? 642.3800+-6.6345 ?
access-binary-trees 834.2610+-7.5012 826.9417+-16.3687
access-fannkuch 283.0827+-10.2899 ? 283.9883+-5.2871 ?
access-nbody 524.9025+-11.3726 524.0589+-6.5879
access-nsieve 364.8574+-20.5739 362.6217+-22.9277
bitops-3bit-bits-in-byte 41.2823+-2.6050 41.0333+-0.7918
bitops-bits-in-byte 81.5703+-2.0667 ? 81.7900+-1.6201 ?
bitops-nsieve-bits 414.2668+-11.9621 ? 421.4171+-9.9181 ? might be 1.0173x slower
controlflow-recursive 432.9592+-8.9942 ? 435.4891+-7.3905 ?
crypto-aes 591.4529+-14.4930 ? 600.5972+-11.5379 ? might be 1.0155x slower
crypto-md5 483.5461+-8.4535 481.2392+-3.3776
crypto-sha1 657.1677+-28.2210 650.8355+-6.2456
date-format-tofte 517.4740+-5.5356 ? 519.7972+-4.6140 ?
date-format-xparb 640.6627+-5.5499 ? 645.3862+-4.8937 ?
hash-map 154.9420+-2.8106 ? 155.7394+-2.9022 ?
math-cordic 504.1088+-6.9831 498.2603+-6.9737 might be 1.0117x faster
math-partial-sums 505.8552+-5.5137 503.8810+-6.6426
math-spectral-norm 567.8605+-8.4526 ? 570.8371+-7.9574 ?
string-base64 355.7360+-8.6966 ? 358.8772+-13.1868 ?
string-fasta 371.1290+-4.3836 369.3702+-6.7752
string-tagcloud 184.1840+-2.9461 183.5414+-3.3726
<geometric> 400.6519+-3.0585 ? 400.7128+-2.3267 ? might be 1.0002x slower
master ic
V8Spider:
crypto 49.8808+-3.4730 ? 51.0818+-2.9611 ? might be 1.0241x slower
deltablue 82.6540+-4.0320 ? 87.5795+-11.8431 ? might be 1.0596x slower
earley-boyer 39.6241+-1.1683 ? 39.9680+-0.9492 ?
raytrace 29.6940+-3.4426 ? 29.8050+-0.9096 ?
regexp 71.5437+-20.3625 63.4915+-1.5867 might be 1.1268x faster
richards 71.1310+-2.1558 ? 71.3584+-1.4709 ?
splay 32.9628+-1.7137 ? 35.0010+-1.3698 ? might be 1.0618x slower
<geometric> 50.1934+-1.5189 ? 50.5430+-1.5713 ? might be 1.0070x slower
master ic
Octane:
encrypt 0.20858+-0.00695 0.20772+-0.00529
decrypt 3.55052+-0.10304 3.49026+-0.09273 might be 1.0173x faster
deltablue x2 0.15801+-0.00199 ? 0.15917+-0.00111 ?
earley 0.28187+-0.00428 ? 0.28201+-0.00501 ?
boyer 4.29192+-0.17404 ? 4.32426+-0.27663 ?
navier-stokes x2 5.12083+-0.08797 ? 5.17124+-0.10096 ?
raytrace x2 1.11400+-0.03343 1.04216+-0.10683 might be 1.0689x faster
richards x2 0.10178+-0.00182 ? 0.10476+-0.00515 ? might be 1.0293x slower
splay x2 0.35192+-0.01115 0.34540+-0.00302 might be 1.0188x faster
regexp x2 25.63553+-0.39604 ! 26.44431+-0.34988 ! definitely 1.0315x slower
pdfjs x2 38.47738+-0.74088 ? 38.53297+-0.74144 ?
mandreel x2 45.99513+-1.43799 ? 46.45711+-1.72120 ? might be 1.0100x slower
gbemu x2 36.10856+-3.06677 34.82200+-0.56778 might be 1.0369x faster
closure 0.57473+-0.00418 ? 0.57615+-0.00307 ?
jquery 7.46465+-0.18401 7.36353+-0.16144 might be 1.0137x faster
box2d x2 10.26098+-0.28105 ? 10.31194+-0.17225 ?
zlib x2 392.32231+-7.39001 389.48822+-6.64758
typescript x2 664.83917+-26.82186 ? 677.30731+-20.06463 ? might be 1.0188x slower
<geometric> 5.79189+-0.04609 5.78043+-0.03344 might be 1.0020x faster
master ic
Kraken:
ai-astar 241.365+-5.118 238.731+-14.272 might be 1.0110x faster
audio-beat-detection 59.148+-0.479 58.943+-0.492
audio-dft 97.255+-2.436 ? 99.207+-3.193 ? might be 1.0201x slower
audio-fft 35.490+-0.199 35.489+-0.064
audio-oscillator 62.692+-0.703 62.353+-0.472
imaging-darkroom 60.752+-0.993 60.462+-0.494
imaging-desaturate 56.198+-0.811 54.646+-5.503 might be 1.0284x faster
imaging-gaussian-blur 85.531+-2.129 85.211+-1.705
json-parse-financial 39.943+-0.670 39.793+-0.742
json-stringify-tinderbox 23.121+-0.621 ? 24.341+-1.220 ? might be 1.0527x slower
stanford-crypto-aes 41.827+-0.675 ? 42.299+-1.026 ? might be 1.0113x slower
stanford-crypto-ccm 36.805+-4.181 35.615+-0.989 might be 1.0334x faster
stanford-crypto-pbkdf2 96.699+-1.800 ? 96.792+-1.776 ?
stanford-crypto-sha256-iterative 37.039+-0.777 ? 37.141+-0.543 ?
<arithmetic> 69.562+-0.584 69.359+-1.025 might be 1.0029x faster
master ic
JSRegress:
abc-forward-loop-equal 29.5349+-0.4325 ? 30.1417+-0.7411 ? might be 1.0205x slower
abc-postfix-backward-loop 30.3881+-1.8454 29.7782+-0.6846 might be 1.0205x faster
abc-simple-backward-loop 29.2748+-0.9834 ? 29.7107+-1.0847 ? might be 1.0149x slower
abc-simple-forward-loop 29.4175+-0.6109 ? 29.5807+-1.3308 ?
abc-skippy-loop 21.0942+-0.9842 ? 21.4785+-0.8209 ? might be 1.0182x slower
abs-boolean 2.4377+-0.0390 ? 2.4465+-0.1482 ?
adapt-to-double-divide 17.0712+-1.5894 16.5235+-0.4986 might be 1.0331x faster
aliased-arguments-getbyval 1.1270+-0.0960 ? 1.1277+-0.0559 ?
allocate-big-object 2.3806+-0.5520 2.3558+-0.2988 might be 1.0105x faster
arguments-named-and-reflective 10.9250+-0.2171 ? 10.9985+-0.1123 ?
arguments-out-of-bounds 10.2409+-0.4871 10.0610+-0.8294 might be 1.0179x faster
arguments-strict-mode 9.5701+-0.0788 ? 9.9498+-0.6374 ? might be 1.0397x slower
arguments 8.4837+-0.1373 8.4786+-0.3615
arity-mismatch-inlining 0.8566+-0.0383 ? 0.8638+-0.0807 ?
array-access-polymorphic-structure 5.9321+-0.0565 5.8259+-0.4725 might be 1.0182x faster
array-nonarray-polymorhpic-access 25.6738+-2.9647 24.9973+-0.4445 might be 1.0271x faster
array-prototype-every 74.7607+-0.7317 ! 77.0168+-1.3753 ! definitely 1.0302x slower
array-prototype-forEach 76.3755+-3.8228 ? 76.5848+-1.6686 ?
array-prototype-map 84.6031+-3.8424 ? 84.9257+-1.1804 ?
array-prototype-reduce 71.3008+-0.8740 ! 72.7335+-0.4567 ! definitely 1.0201x slower
array-prototype-reduceRight 70.7880+-0.3378 ! 72.3152+-0.7542 ! definitely 1.0216x slower
array-prototype-some 75.0168+-1.2033 ? 77.4734+-2.3301 ? might be 1.0327x slower
array-splice-contiguous 21.6472+-1.4235 ? 21.6954+-3.2630 ?
array-with-double-add 3.4468+-0.2582 3.4083+-0.0832 might be 1.0113x faster
array-with-double-increment 3.1373+-0.4050 3.1258+-0.1265
array-with-double-mul-add 4.2200+-0.1570 ? 4.2841+-0.1567 ? might be 1.0152x slower
array-with-double-sum 3.1790+-0.0181 ? 3.2094+-0.0800 ?
array-with-int32-add-sub 6.0376+-0.3826 5.9330+-0.2281 might be 1.0176x faster
array-with-int32-or-double-sum 3.1977+-0.0380 ? 3.2883+-0.1684 ? might be 1.0283x slower
ArrayBuffer-DataView-alloc-large-long-lived
27.5721+-0.4786 27.1799+-0.2859 might be 1.0144x faster
ArrayBuffer-DataView-alloc-long-lived 12.7885+-0.9658 12.4843+-0.3017 might be 1.0244x faster
ArrayBuffer-Int32Array-byteOffset 3.6060+-0.0626 ? 3.6370+-0.1378 ?
ArrayBuffer-Int8Array-alloc-large-long-lived
27.5753+-0.3262 ? 27.6735+-0.3342 ?
ArrayBuffer-Int8Array-alloc-long-lived-buffer
22.3538+-3.6202 20.5285+-0.8385 might be 1.0889x faster
ArrayBuffer-Int8Array-alloc-long-lived 11.7630+-0.4432 ? 11.8922+-0.4388 ? might be 1.0110x slower
ArrayBuffer-Int8Array-alloc 10.2290+-0.6987 10.2125+-0.0908
asmjs_bool_bug 7.3741+-0.2386 ? 7.3948+-0.5272 ?
assign-custom-setter-polymorphic 2.5842+-0.2781 ? 2.5860+-0.0752 ?
assign-custom-setter 3.5677+-0.1675 ? 3.6045+-0.1705 ? might be 1.0103x slower
basic-set 8.1844+-0.2188 ? 8.4503+-0.7564 ? might be 1.0325x slower
big-int-mul 3.5646+-0.0882 ? 3.5755+-0.2538 ?
boolean-test 2.8558+-0.0346 ? 2.8853+-0.0761 ? might be 1.0103x slower
branch-fold 3.6555+-0.0953 3.6146+-0.0345 might be 1.0113x faster
branch-on-string-as-boolean 16.6915+-0.7732 ? 16.7361+-1.7111 ?
by-val-generic 6.2684+-0.7254 ^ 2.4961+-0.2687 ^ definitely 2.5113x faster
call-spread-apply 27.1887+-0.4604 27.0333+-0.7023
call-spread-call 21.2281+-0.2446 ? 21.7821+-0.5512 ? might be 1.0261x slower
captured-assignments 0.4021+-0.0034 ? 0.4115+-0.0232 ? might be 1.0234x slower
cast-int-to-double 5.1140+-0.0789 ? 5.2098+-0.2577 ? might be 1.0187x slower
cell-argument 6.7245+-0.7767 6.3568+-0.4255 might be 1.0579x faster
cfg-simplify 2.8438+-0.2415 2.7834+-0.0855 might be 1.0217x faster
chain-getter-access 8.2030+-0.2021 ? 8.2617+-0.3916 ?
cmpeq-obj-to-obj-other 11.7332+-0.8180 ? 12.2717+-0.7339 ? might be 1.0459x slower
constant-test 4.8991+-0.1095 4.8477+-0.0431 might be 1.0106x faster
create-lots-of-functions 9.4425+-0.7893 9.3236+-0.5627 might be 1.0128x faster
cse-new-array-buffer 2.2452+-0.2537 2.1927+-0.1405 might be 1.0239x faster
cse-new-array 2.3092+-0.2842 2.2518+-0.1467 might be 1.0255x faster
DataView-custom-properties 31.9301+-0.9217 ? 32.0884+-0.6309 ?
delay-tear-off-arguments-strictmode 12.9837+-0.3987 ? 13.0328+-0.9882 ?
deltablue-varargs 148.5550+-3.7878 ? 148.5592+-1.1082 ?
destructuring-arguments 167.8102+-3.7216 165.8862+-1.8769 might be 1.0116x faster
destructuring-parameters-overridden-by-function
0.4476+-0.0664 0.4343+-0.0290 might be 1.0305x faster
destructuring-swap 4.7032+-0.1038 ? 4.7423+-0.0462 ?
direct-arguments-getbyval 1.1734+-0.1909 1.1034+-0.0831 might be 1.0634x faster
div-boolean-double 5.4445+-0.1707 5.3592+-0.0598 might be 1.0159x faster
div-boolean 8.5214+-0.5778 8.4855+-0.2853
double-get-by-val-out-of-bounds 4.0983+-0.2070 ? 4.2200+-0.0727 ? might be 1.0297x slower
double-pollution-getbyval 8.8740+-0.3789 ? 8.9913+-0.3688 ? might be 1.0132x slower
double-pollution-putbyoffset 3.6915+-0.1230 ? 3.7455+-0.0925 ? might be 1.0146x slower
double-real-use 27.3335+-3.1459 24.5205+-0.9451 might be 1.1147x faster
double-to-int32-typed-array-no-inline 2.0599+-0.1598 ? 2.0674+-0.1083 ?
double-to-int32-typed-array 1.7359+-0.0900 ? 1.8422+-0.1020 ? might be 1.0612x slower
double-to-uint32-typed-array-no-inline 2.1698+-0.0972 ? 2.1833+-0.1366 ?
double-to-uint32-typed-array 1.8335+-0.0348 1.8116+-0.0837 might be 1.0121x faster
elidable-new-object-dag 33.7630+-0.4547 ? 33.8813+-0.7400 ?
elidable-new-object-roflcopter 32.9035+-0.4113 ? 33.5746+-1.4670 ? might be 1.0204x slower
elidable-new-object-then-call 31.2815+-0.7437 ? 32.1315+-1.6459 ? might be 1.0272x slower
elidable-new-object-tree 36.0837+-0.5270 ? 36.5898+-0.5270 ? might be 1.0140x slower
empty-string-plus-int 5.0132+-0.4494 4.9120+-0.1849 might be 1.0206x faster
emscripten-cube2hash 26.1191+-2.2572 ? 32.4125+-17.6311 ? might be 1.2410x slower
exit-length-on-plain-object 12.8331+-0.2757 ? 13.5498+-2.3257 ? might be 1.0559x slower
external-arguments-getbyval 1.1732+-0.0919 1.1390+-0.0269 might be 1.0300x faster
external-arguments-putbyval 2.2215+-0.1638 2.0906+-0.0551 might be 1.0626x faster
fixed-typed-array-storage-var-index 1.1741+-0.0366 1.1584+-0.0949 might be 1.0135x faster
fixed-typed-array-storage 0.8331+-0.0151 ? 0.8456+-0.0588 ? might be 1.0149x slower
Float32Array-matrix-mult 3.9724+-0.2496 ? 4.2046+-0.6259 ? might be 1.0584x slower
Float32Array-to-Float64Array-set 46.4340+-1.8513 45.9855+-0.5095
Float64Array-alloc-long-lived 57.8806+-0.5310 ? 59.2067+-2.7125 ? might be 1.0229x slower
Float64Array-to-Int16Array-set 57.3400+-1.1764 ? 57.5569+-2.9608 ?
fold-double-to-int 12.8478+-0.2789 ? 12.9927+-0.3998 ? might be 1.0113x slower
fold-get-by-id-to-multi-get-by-offset-rare-int
10.8593+-0.9260 10.4496+-0.9543 might be 1.0392x faster
fold-get-by-id-to-multi-get-by-offset 9.1953+-0.6101 8.9050+-0.4934 might be 1.0326x faster
fold-multi-get-by-offset-to-get-by-offset
7.9889+-1.5941 ? 8.1481+-1.0196 ? might be 1.0199x slower
fold-multi-get-by-offset-to-poly-get-by-offset
7.6398+-1.4592 ? 8.2047+-1.4644 ? might be 1.0739x slower
fold-multi-put-by-offset-to-poly-put-by-offset
7.5921+-0.6624 ? 7.8015+-0.7334 ? might be 1.0276x slower
fold-multi-put-by-offset-to-put-by-offset
6.1060+-0.8363 5.7025+-2.1560 might be 1.0707x faster
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
8.3265+-0.7296 ? 8.8616+-0.8983 ? might be 1.0643x slower
fold-put-by-id-to-multi-put-by-offset 8.8688+-0.6047 ? 9.0264+-0.5612 ? might be 1.0178x slower
fold-put-by-val-with-string-to-multi-put-by-offset
69.8406+-8.3187 ^ 9.6357+-1.0856 ^ definitely 7.2481x faster
fold-put-by-val-with-symbol-to-multi-put-by-offset
67.9573+-1.2614 ^ 9.2725+-0.9941 ^ definitely 7.3289x faster
fold-put-structure 5.5053+-0.2245 5.3703+-1.0037 might be 1.0251x faster
for-of-iterate-array-entries 11.8885+-0.6022 11.6631+-0.2542 might be 1.0193x faster
for-of-iterate-array-keys 3.4797+-0.4778 3.3845+-0.1672 might be 1.0281x faster
for-of-iterate-array-values 3.4235+-0.2666 3.2964+-0.0745 might be 1.0385x faster
fround 18.8268+-1.3292 ? 18.9299+-1.5049 ?
ftl-library-inlining-dataview 57.0625+-0.7389 ? 58.6517+-3.7356 ? might be 1.0279x slower
ftl-library-inlining 110.3751+-3.6948 107.0713+-0.8819 might be 1.0309x faster
function-dot-apply 2.0096+-0.0544 1.9819+-0.1589 might be 1.0140x faster
function-test 2.6882+-0.0911 ? 2.7485+-0.0601 ? might be 1.0225x slower
function-with-eval 105.1115+-1.9907 ? 108.6945+-7.2032 ? might be 1.0341x slower
gcse-poly-get-less-obvious 14.5170+-0.2764 ? 14.6887+-0.6267 ? might be 1.0118x slower
gcse-poly-get 14.4799+-0.1592 ? 14.5538+-0.5983 ?
gcse 3.8489+-0.0369 3.8278+-0.1016
get-by-id-bimorphic-check-structure-elimination-simple
2.6028+-0.0603 ? 2.6510+-0.1233 ? might be 1.0185x slower
get-by-id-bimorphic-check-structure-elimination
5.9005+-0.3137 5.8845+-0.2495
get-by-id-chain-from-try-block 5.5987+-0.2719 5.5679+-0.2395
get-by-id-check-structure-elimination 4.5008+-0.2586 ? 4.5802+-0.2081 ? might be 1.0176x slower
get-by-id-proto-or-self 15.1098+-1.9108 15.1002+-2.4520
get-by-id-quadmorphic-check-structure-elimination-simple
2.8992+-0.0423 2.8879+-0.0307
get-by-id-self-or-proto 14.8160+-0.2843 14.6068+-0.5636 might be 1.0143x faster
get-by-val-out-of-bounds 3.9662+-0.0958 3.9138+-0.2395 might be 1.0134x faster
get-by-val-with-string-bimorphic-check-structure-elimination-simple
2.9312+-0.2184 2.8314+-0.0657 might be 1.0352x faster
get-by-val-with-string-bimorphic-check-structure-elimination
6.2715+-0.0856 6.1059+-0.1838 might be 1.0271x faster
get-by-val-with-string-chain-from-try-block
5.7194+-0.4913 ? 5.7660+-0.2722 ?
get-by-val-with-string-check-structure-elimination
5.2401+-0.2867 ? 5.2834+-0.2692 ?
get-by-val-with-string-proto-or-self 14.4730+-0.9660 ? 15.9333+-2.0632 ? might be 1.1009x slower
get-by-val-with-string-quadmorphic-check-structure-elimination-simple
3.2435+-0.1516 ? 3.2851+-0.1247 ? might be 1.0128x slower
get-by-val-with-string-self-or-proto 15.3465+-0.7423 15.2483+-1.2232
get-by-val-with-symbol-bimorphic-check-structure-elimination-simple
3.1494+-0.0215 ^ 3.0704+-0.0202 ^ definitely 1.0257x faster
get-by-val-with-symbol-bimorphic-check-structure-elimination
12.4795+-0.1190 ? 12.6082+-0.5383 ? might be 1.0103x slower
get-by-val-with-symbol-chain-from-try-block
6.0428+-0.4681 5.7552+-0.1620 might be 1.0500x faster
get-by-val-with-symbol-check-structure-elimination
11.1862+-0.1103 ? 11.2457+-0.1554 ?
get-by-val-with-symbol-proto-or-self 14.3878+-0.3968 ? 15.7057+-1.5625 ? might be 1.0916x slower
get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple
4.0758+-0.1681 3.9822+-0.1200 might be 1.0235x faster
get-by-val-with-symbol-self-or-proto 15.0103+-0.4396 ? 15.4728+-2.1162 ? might be 1.0308x slower
get_callee_monomorphic 2.2325+-0.2578 ? 2.5499+-0.4474 ? might be 1.1422x slower
get_callee_polymorphic 3.4028+-0.2955 3.1222+-0.3155 might be 1.0899x faster
getter-no-activation 4.8585+-0.1482 ? 5.0676+-0.1189 ? might be 1.0430x slower
getter-prototype 9.9545+-0.3941 9.7632+-0.1259 might be 1.0196x faster
getter-richards 111.5101+-7.7128 109.7234+-11.8151 might be 1.0163x faster
getter 5.4523+-0.5704 ? 5.6300+-0.3193 ? might be 1.0326x slower
global-object-access-with-mutating-structure
5.5941+-0.1928 5.4665+-0.0791 might be 1.0233x faster
global-var-const-infer-fire-from-opt 0.9236+-0.1014 0.8497+-0.1439 might be 1.0870x faster
global-var-const-infer 0.8198+-0.2162 0.7594+-0.1267 might be 1.0796x faster
HashMap-put-get-iterate-keys 25.7578+-1.4465 ? 25.8965+-2.9974 ?
HashMap-put-get-iterate 26.8336+-2.6816 25.9932+-1.4584 might be 1.0323x faster
HashMap-string-put-get-iterate 24.7007+-0.5839 24.5601+-1.3033
hoist-make-rope 8.3106+-1.4499 ? 8.8516+-0.8678 ? might be 1.0651x slower
hoist-poly-check-structure-effectful-loop
4.3356+-0.3144 4.1443+-0.1073 might be 1.0462x faster
hoist-poly-check-structure 3.2967+-0.0220 3.2790+-0.0419
imul-double-only 6.7305+-0.5226 6.4955+-0.1644 might be 1.0362x faster
imul-int-only 8.0777+-0.1375 7.9585+-0.4733 might be 1.0150x faster
imul-mixed 7.0861+-0.5583 6.5967+-0.8987 might be 1.0742x faster
in-four-cases 17.7265+-0.3689 ? 18.0688+-1.0787 ? might be 1.0193x slower
in-one-case-false 9.3591+-0.2055 9.3472+-0.3952
in-one-case-true 9.3726+-0.1403 ? 9.6580+-0.6407 ? might be 1.0305x slower
in-two-cases 9.7679+-0.5754 ? 10.0560+-0.8268 ? might be 1.0295x slower
indexed-properties-in-objects 2.8676+-0.0556 2.8490+-0.1347
infer-closure-const-then-mov-no-inline 3.1601+-0.3501 3.0872+-0.1413 might be 1.0236x faster
infer-closure-const-then-mov 17.1642+-0.6288 ? 17.2238+-0.7206 ?
infer-closure-const-then-put-to-scope-no-inline
11.9243+-0.7506 11.7864+-0.6306 might be 1.0117x faster
infer-closure-const-then-put-to-scope 22.0120+-1.0148 21.9213+-0.9968
infer-closure-const-then-reenter-no-inline
50.9547+-0.4195 ? 51.0400+-0.9705 ?
infer-closure-const-then-reenter 23.4171+-2.4238 22.7385+-1.8945 might be 1.0298x faster
infer-constant-global-property 3.4180+-0.0220 ? 3.5208+-0.1751 ? might be 1.0301x slower
infer-constant-property 2.6411+-0.0819 ? 2.6980+-0.2028 ? might be 1.0216x slower
infer-one-time-closure-ten-vars 8.8879+-0.7656 8.2870+-0.3480 might be 1.0725x faster
infer-one-time-closure-two-vars 8.2109+-0.8290 ? 8.2318+-0.2320 ?
infer-one-time-closure 7.9412+-0.1566 7.8170+-0.2550 might be 1.0159x faster
infer-one-time-deep-closure 12.9716+-1.1414 ? 13.3140+-1.3430 ? might be 1.0264x slower
inline-arguments-access 3.6853+-0.3814 ? 3.7426+-0.2307 ? might be 1.0155x slower
inline-arguments-aliased-access 3.8002+-0.3319 3.7708+-0.5180
inline-arguments-local-escape 3.9166+-1.2548 3.6365+-0.0565 might be 1.0770x faster
inline-get-scoped-var 4.7989+-0.3730 4.6271+-0.1841 might be 1.0371x faster
inlined-put-by-id-transition 10.2325+-0.5806 10.0850+-1.0722 might be 1.0146x faster
inlined-put-by-val-with-string-transition
116.7754+-2.4339 ^ 73.8770+-1.3856 ^ definitely 1.5807x faster
inlined-put-by-val-with-symbol-transition
117.3695+-5.2318 ^ 73.1078+-3.7026 ^ definitely 1.6054x faster
int-or-other-abs-then-get-by-val 4.8240+-0.1962 ? 4.8371+-0.0296 ?
int-or-other-abs-zero-then-get-by-val 16.4916+-1.5400 16.1529+-0.4335 might be 1.0210x faster
int-or-other-add-then-get-by-val 4.1135+-0.0731 ? 4.3105+-0.5752 ? might be 1.0479x slower
int-or-other-add 5.0170+-0.4011 ? 5.0503+-0.1563 ?
int-or-other-div-then-get-by-val 3.9658+-0.4530 3.7502+-0.0436 might be 1.0575x faster
int-or-other-max-then-get-by-val 4.0077+-0.1418 ? 4.0280+-0.0392 ?
int-or-other-min-then-get-by-val 3.9775+-0.0696 ? 4.0277+-0.0495 ? might be 1.0126x slower
int-or-other-mod-then-get-by-val 3.5260+-0.0796 ? 3.5715+-0.1012 ? might be 1.0129x slower
int-or-other-mul-then-get-by-val 3.7001+-0.1977 3.5883+-0.0786 might be 1.0311x faster
int-or-other-neg-then-get-by-val 4.5601+-0.0357 ? 4.5957+-0.1938 ?
int-or-other-neg-zero-then-get-by-val 16.2615+-0.4468 ? 16.3633+-0.3358 ?
int-or-other-sub-then-get-by-val 4.2277+-0.1296 4.1367+-0.1389 might be 1.0220x faster
int-or-other-sub 3.5087+-0.1709 3.4546+-0.0296 might be 1.0157x faster
int-overflow-local 4.3159+-0.0184 ? 4.3990+-0.2582 ? might be 1.0192x slower
Int16Array-alloc-long-lived 42.6980+-0.6805 ? 43.4661+-2.7291 ? might be 1.0180x slower
Int16Array-bubble-sort-with-byteLength 17.9260+-0.4888 17.8195+-0.2841
Int16Array-bubble-sort 17.7511+-0.3038 17.7039+-0.6157
Int16Array-load-int-mul 1.4377+-0.0674 ? 1.4573+-0.1137 ? might be 1.0136x slower
Int16Array-to-Int32Array-set 44.2071+-2.3429 44.1066+-1.0505
Int32Array-alloc-large 12.5785+-1.5008 12.2800+-0.5478 might be 1.0243x faster
Int32Array-alloc-long-lived 47.2896+-0.1587 ? 47.6088+-0.8994 ?
Int32Array-alloc 2.7808+-0.2902 ? 3.1058+-0.5186 ? might be 1.1169x slower
Int32Array-Int8Array-view-alloc 6.5502+-0.6617 6.4050+-0.3096 might be 1.0227x faster
int52-spill 4.7968+-0.3822 ? 4.8315+-0.5359 ?
Int8Array-alloc-long-lived 37.8353+-1.1782 ? 38.5478+-2.0139 ? might be 1.0188x slower
Int8Array-load-with-byteLength 3.4713+-0.1658 ? 3.5471+-0.1702 ? might be 1.0218x slower
Int8Array-load 3.4377+-0.0952 3.4271+-0.0497
integer-divide 10.5970+-0.1915 10.4896+-0.0201 might be 1.0102x faster
integer-modulo 1.6333+-0.0932 ? 1.6638+-0.0940 ? might be 1.0187x slower
is-boolean-fold-tricky 3.7549+-0.1465 ? 3.8073+-0.1057 ? might be 1.0139x slower
is-boolean-fold 2.6329+-0.1655 2.6001+-0.0226 might be 1.0126x faster
is-function-fold-tricky-internal-function
9.8508+-0.0780 ? 9.9405+-0.2325 ?
is-function-fold-tricky 4.2671+-0.1643 4.2640+-0.1124
is-function-fold 2.6531+-0.0809 ? 2.6567+-0.0253 ?
is-number-fold-tricky 4.0046+-0.0080 ? 4.1213+-0.2342 ? might be 1.0291x slower
is-number-fold 2.6912+-0.1877 2.6353+-0.0317 might be 1.0212x faster
is-object-or-null-fold-functions 2.6500+-0.0114 2.6355+-0.0144
is-object-or-null-fold-less-tricky 4.1417+-0.1409 4.0935+-0.0407 might be 1.0118x faster
is-object-or-null-fold-tricky 5.3962+-0.2265 5.3470+-0.1937
is-object-or-null-fold 2.6531+-0.0709 ? 2.6613+-0.0586 ?
is-object-or-null-trickier-function 4.1988+-0.1661 ? 4.2360+-0.1100 ?
is-object-or-null-trickier-internal-function
10.6475+-0.4213 ? 10.9593+-0.4468 ? might be 1.0293x slower
is-object-or-null-tricky-function 4.1293+-0.0657 ? 4.4148+-0.7151 ? might be 1.0691x slower
is-object-or-null-tricky-internal-function
7.7068+-0.2938 ? 7.8894+-0.1648 ? might be 1.0237x slower
is-string-fold-tricky 4.1323+-0.2152 4.0641+-0.0571 might be 1.0168x faster
is-string-fold 2.6721+-0.0869 2.6204+-0.0404 might be 1.0197x faster
is-undefined-fold-tricky 3.5257+-0.3867 3.4009+-0.1710 might be 1.0367x faster
is-undefined-fold 2.6155+-0.0517 ? 2.6495+-0.1051 ? might be 1.0130x slower
JSONP-negative-0 0.2363+-0.0142 0.2353+-0.0044
large-int-captured 3.9695+-0.4701 ? 4.1597+-0.1657 ? might be 1.0479x slower
large-int-neg 14.5143+-0.6395 ? 14.6890+-1.2079 ? might be 1.0120x slower
large-int 14.0668+-0.4977 13.8688+-0.2750 might be 1.0143x faster
load-varargs-elimination 22.1437+-2.7113 21.5668+-0.2185 might be 1.0268x faster
logical-not-weird-types 2.9127+-0.1013 ? 2.9623+-0.3469 ? might be 1.0170x slower
logical-not 4.3538+-0.3106 4.3154+-0.1838
lots-of-fields 9.2769+-0.1711 9.2155+-0.4540
make-indexed-storage 2.9728+-0.5521 2.7891+-0.2653 might be 1.0659x faster
make-rope-cse 3.6066+-0.1953 3.5837+-0.1173
marsaglia-larger-ints 35.0770+-4.1575 33.1194+-1.0845 might be 1.0591x faster
marsaglia-osr-entry 21.3315+-0.5130 21.2500+-1.0071
math-with-out-of-bounds-array-values 22.5037+-0.6514 22.1960+-0.8350 might be 1.0139x faster
max-boolean 2.7035+-0.1005 2.6807+-0.0655
method-on-number 16.6373+-1.6709 ? 17.3488+-0.6858 ? might be 1.0428x slower
min-boolean 2.6571+-0.0977 2.6252+-0.1030 might be 1.0121x faster
minus-boolean-double 3.1398+-0.1416 ? 3.2175+-0.2144 ? might be 1.0247x slower
minus-boolean 2.3416+-0.1565 ? 2.3867+-0.0604 ? might be 1.0193x slower
misc-strict-eq 31.3822+-0.8639 ? 32.4614+-5.1709 ? might be 1.0344x slower
mod-boolean-double 11.5531+-0.9867 11.3576+-0.2836 might be 1.0172x faster
mod-boolean 8.7325+-0.5172 8.4885+-0.3454 might be 1.0287x faster
mul-boolean-double 3.8400+-0.4311 3.6964+-0.2600 might be 1.0389x faster
mul-boolean 2.8243+-0.1040 ? 2.8593+-0.1003 ? might be 1.0124x slower
neg-boolean 3.1446+-0.0633 ? 3.1582+-0.1319 ?
negative-zero-divide 0.3218+-0.0410 0.3141+-0.0124 might be 1.0245x faster
negative-zero-modulo 0.3303+-0.0194 ? 0.3368+-0.0406 ? might be 1.0198x slower
negative-zero-negate 0.2988+-0.0209 ? 0.3047+-0.0207 ? might be 1.0198x slower
nested-function-parsing 44.9730+-2.9306 43.8319+-1.1484 might be 1.0260x faster
new-array-buffer-dead 88.8590+-1.7404 ? 89.0490+-1.0686 ?
new-array-buffer-push 5.8459+-0.1367 ? 6.1324+-0.5649 ? might be 1.0490x slower
new-array-dead 13.4521+-1.2281 ? 14.3281+-1.7657 ? might be 1.0651x slower
new-array-push 3.4800+-0.4174 3.3615+-0.1541 might be 1.0353x faster
no-inline-constructor 30.9245+-0.7907 ? 31.7120+-0.5224 ? might be 1.0255x slower
number-test 2.8687+-0.1844 ? 3.0593+-0.6453 ? might be 1.0664x slower
object-closure-call 4.8638+-0.1018 ? 4.9463+-0.3351 ? might be 1.0170x slower
object-get-own-property-symbols-on-large-array
4.2043+-0.5557 3.7700+-0.2982 might be 1.1152x faster
object-test 2.6872+-0.1957 ? 2.7119+-0.1968 ?
obvious-sink-pathology-taken 101.2792+-1.9549 ? 101.7896+-2.4232 ?
obvious-sink-pathology 95.6417+-1.2993 ? 96.0343+-1.2033 ?
obviously-elidable-new-object 28.9707+-1.2022 28.5012+-0.5308 might be 1.0165x faster
plus-boolean-arith 2.4132+-0.1272 ? 2.4982+-0.3660 ? might be 1.0352x slower
plus-boolean-double 3.1204+-0.0889 ? 3.1349+-0.0757 ?
plus-boolean 2.5878+-0.0498 2.5855+-0.0937
poly-chain-access-different-prototypes-simple
3.4817+-0.4857 3.3397+-0.1470 might be 1.0425x faster
poly-chain-access-different-prototypes 2.9945+-0.2889 2.8622+-0.0429 might be 1.0462x faster
poly-chain-access-simpler 3.2988+-0.1656 ? 3.3156+-0.0844 ?
poly-chain-access 3.3250+-0.1037 3.3011+-0.1687
poly-stricteq 50.8918+-0.8355 ? 51.1739+-2.6064 ?
polymorphic-array-call 1.5161+-0.7965 1.3165+-0.4333 might be 1.1517x faster
polymorphic-get-by-id 2.8755+-0.0859 2.8725+-0.1487
polymorphic-put-by-id 26.0439+-3.1919 25.4847+-0.9879 might be 1.0219x faster
polymorphic-put-by-val-with-string 352.8145+-9.3221 ^ 26.5709+-1.2105 ^ definitely 13.2782x faster
polymorphic-put-by-val-with-symbol 383.7432+-13.0210 ^ 26.8412+-0.7089 ^ definitely 14.2968x faster
polymorphic-structure 13.5208+-0.5404 13.2847+-0.1485 might be 1.0178x faster
polyvariant-monomorphic-get-by-id 7.1394+-0.3818 6.4504+-0.5165 might be 1.1068x faster
proto-getter-access 8.2629+-0.0766 8.1108+-0.2481 might be 1.0188x faster
prototype-access-with-mutating-prototype 5.6054+-0.6033 5.5956+-0.6121
put-by-id-replace-and-transition 7.5640+-0.1934 ? 8.2190+-1.9564 ? might be 1.0866x slower
put-by-id-slightly-polymorphic 2.6350+-0.0469 ? 2.6422+-0.0238 ?
put-by-id 9.7262+-0.4133 9.6785+-0.1797
put-by-val-direct 0.3211+-0.0186 0.3175+-0.0119 might be 1.0113x faster
put-by-val-large-index-blank-indexing-type
5.4305+-0.3740 ? 5.4499+-0.2635 ?
put-by-val-machine-int 2.4521+-0.1370 ? 2.5720+-0.3364 ? might be 1.0489x slower
put-by-val-with-string-replace-and-transition
82.3823+-3.1861 ^ 10.0022+-0.1648 ^ definitely 8.2364x faster
put-by-val-with-string-slightly-polymorphic
34.4847+-3.4010 ^ 2.8877+-0.0404 ^ definitely 11.9420x faster
put-by-val-with-string 81.0162+-2.7781 ^ 10.1260+-0.4184 ^ definitely 8.0008x faster
put-by-val-with-symbol-replace-and-transition
83.6551+-1.9612 ^ 11.5535+-0.3602 ^ definitely 7.2407x faster
put-by-val-with-symbol-slightly-polymorphic
32.7045+-0.5333 ^ 3.0827+-0.1037 ^ definitely 10.6090x faster
put-by-val-with-symbol 85.2364+-4.8715 ^ 10.0714+-0.0405 ^ definitely 8.4632x faster
rare-osr-exit-on-local 14.8043+-0.1225 14.6819+-0.3379
register-pressure-from-osr 17.4568+-1.8593 16.7767+-0.4667 might be 1.0405x faster
repeat-multi-get-by-offset 22.1917+-1.1454 ? 22.9281+-3.1813 ? might be 1.0332x slower
setter-prototype 7.4170+-0.2628 ? 7.4594+-0.2758 ?
setter 5.7578+-1.0798 5.4188+-0.9561 might be 1.0626x faster
simple-activation-demo 25.0657+-0.6325 24.8707+-0.6061
simple-getter-access 10.5906+-0.5183 ? 10.7297+-0.1945 ? might be 1.0131x slower
simple-poly-call-nested 8.7751+-0.4777 8.6422+-0.3684 might be 1.0154x faster
simple-poly-call 1.2280+-0.0619 ? 1.3392+-0.1803 ? might be 1.0906x slower
sin-boolean 17.9934+-1.3795 ? 18.0703+-0.7855 ?
singleton-scope 61.6225+-1.0441 61.3861+-0.5588
sink-function 9.2559+-0.6395 ? 9.7679+-0.3116 ? might be 1.0553x slower
sink-huge-activation 16.0507+-0.2070 ? 16.1722+-0.7151 ?
sinkable-new-object-dag 54.8903+-0.5898 ? 56.0470+-1.8273 ? might be 1.0211x slower
sinkable-new-object-taken 42.8010+-0.9374 42.6833+-0.8835
sinkable-new-object 29.9671+-1.0126 29.5977+-1.3147 might be 1.0125x faster
slow-array-profile-convergence 2.5003+-0.3042 2.3951+-0.2621 might be 1.0439x faster
slow-convergence 2.3795+-0.1281 ? 2.3818+-0.1473 ?
slow-ternaries 17.8581+-0.7963 ? 17.9630+-0.4831 ?
sorting-benchmark 17.4950+-0.5517 ? 18.9676+-2.9041 ? might be 1.0842x slower
sparse-conditional 1.1497+-0.1221 1.1280+-0.0349 might be 1.0193x faster
splice-to-remove 12.4685+-0.5337 12.4149+-0.3987
string-char-code-at 14.6117+-0.4076 ? 14.8188+-0.3967 ? might be 1.0142x slower
string-concat-object 2.1628+-0.0573 ? 2.1902+-0.2725 ? might be 1.0127x slower
string-concat-pair-object 2.0870+-0.1590 ? 2.1306+-0.0502 ? might be 1.0209x slower
string-concat-pair-simple 9.2293+-0.4726 9.2056+-0.5249
string-concat-simple 9.1588+-0.1390 ? 9.5969+-1.0112 ? might be 1.0478x slower
string-cons-repeat 6.8117+-0.8631 6.7598+-0.3876
string-cons-tower 6.6593+-0.3479 ? 6.9427+-0.5752 ? might be 1.0426x slower
string-equality 15.3721+-0.2111 ? 16.0795+-1.3242 ? might be 1.0460x slower
string-get-by-val-big-char 6.6597+-0.0834 ? 6.8694+-0.3734 ? might be 1.0315x slower
string-get-by-val-out-of-bounds-insane 3.3699+-0.1818 3.3461+-0.1859
string-get-by-val-out-of-bounds 4.1163+-0.1203 4.0862+-0.1727
string-get-by-val 2.8268+-0.0967 2.8076+-0.0271
string-hash 2.0060+-0.5613 1.8235+-0.0405 might be 1.1001x faster
string-long-ident-equality 12.7754+-0.2796 12.6277+-0.0607 might be 1.0117x faster
string-out-of-bounds 10.5608+-0.3894 10.5372+-0.5208
string-repeat-arith 28.3465+-0.4683 ? 28.3585+-3.0672 ?
string-sub 54.1116+-0.5113 ? 54.2802+-0.6925 ?
string-test 2.7214+-0.0241 ? 2.7413+-0.0791 ?
string-var-equality 26.3129+-1.0060 ? 26.6157+-0.7633 ? might be 1.0115x slower
structure-hoist-over-transitions 2.3541+-0.0813 ? 2.4064+-0.1342 ? might be 1.0222x slower
substring-concat-weird 36.5792+-1.5353 36.4404+-0.3594
substring-concat 40.1810+-0.8617 39.2656+-0.8914 might be 1.0233x faster
substring 46.3281+-2.9666 45.6537+-0.8225 might be 1.0148x faster
switch-char-constant 2.7122+-0.0387 2.6750+-0.1355 might be 1.0139x faster
switch-char 6.0180+-1.1527 ? 6.7151+-0.8783 ? might be 1.1158x slower
switch-constant 7.7316+-0.4554 ? 7.7471+-0.9145 ?
switch-string-basic-big-var 15.9236+-0.3200 ? 16.4187+-2.2855 ? might be 1.0311x slower
switch-string-basic-big 15.3672+-0.1546 15.3292+-0.4505
switch-string-basic-var 13.4644+-0.1687 ? 13.5225+-0.7999 ?
switch-string-basic 13.7495+-1.5260 13.0030+-0.1442 might be 1.0574x faster
switch-string-big-length-tower-var 18.5561+-1.1132 18.4691+-0.4692
switch-string-length-tower-var 13.5162+-0.5104 ? 13.5606+-0.5612 ?
switch-string-length-tower 11.9597+-0.1803 ? 11.9985+-0.3331 ?
switch-string-short 11.9335+-0.2098 ? 12.0862+-0.2588 ? might be 1.0128x slower
switch 12.3829+-0.4430 11.9535+-0.3162 might be 1.0359x faster
tear-off-arguments-simple 3.2495+-0.4838 3.1082+-0.0374 might be 1.0455x faster
tear-off-arguments 3.9863+-0.2201 ? 4.3047+-0.6400 ? might be 1.0799x slower
temporal-structure 12.6881+-1.6001 12.4362+-0.2905 might be 1.0203x faster
to-int32-boolean 13.5078+-0.3953 13.3716+-0.5710 might be 1.0102x faster
try-catch-get-by-val-cloned-arguments 15.4977+-2.2536 14.6653+-0.1008 might be 1.0568x faster
try-catch-get-by-val-direct-arguments 6.4634+-0.5740 ? 6.6069+-0.3359 ? might be 1.0222x slower
try-catch-get-by-val-scoped-arguments 8.0182+-0.2541 7.7623+-0.5478 might be 1.0330x faster
typed-array-get-set-by-val-profiling 28.5938+-1.7224 27.8309+-0.6035 might be 1.0274x faster
undefined-property-access 229.1655+-3.5638 228.0268+-0.2822
undefined-test 3.0630+-0.7535 2.8225+-0.0537 might be 1.0852x faster
unprofiled-licm 14.4825+-0.8009 14.4584+-0.4307
varargs-call 13.7110+-0.2849 ? 14.2435+-1.1361 ? might be 1.0388x slower
varargs-construct-inline 22.4163+-0.3904 22.1120+-0.4696 might be 1.0138x faster
varargs-construct 20.1051+-0.1352 ? 20.5405+-0.5869 ? might be 1.0217x slower
varargs-inline 8.6788+-0.3512 ? 9.0713+-0.6238 ? might be 1.0452x slower
varargs-strict-mode 9.3748+-0.2786 9.2004+-0.1886 might be 1.0190x faster
varargs 9.0817+-0.2209 9.0712+-0.0866
weird-inlining-const-prop 2.0727+-0.2098 ? 2.0750+-0.1201 ?
<geometric> 8.3689+-0.0325 ^ 7.8379+-0.0320 ^ definitely 1.0678x faster
master ic
Geomean of preferred means:
<scaled-result> 26.0810+-0.0780 ^ 25.8149+-0.1876 ^ definitely 1.0103x faster
Created attachment 258546 [details]
Patch
rebased the patch
Created attachment 258551 [details]
Patch
Leverage byValInfo->slowPathCount in these cached Id path.
It throws away put-by-val performance regressions.
There's no performance regression. And for synthetic ones, we can see significant performance improvements.
This optimization will encourage ES6 Symbols and computed properties, like
var object = { [key]: value }
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on Yusukes-MacBook-Pro (MacBookPro11,3).
VMs tested:
"master" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/master-for-put-by-val/Release/jsc
"ic" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/put-by-val/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.
master ic
SunSpider:
3d-cube 4.6110+-0.2586 4.5530+-0.1024 might be 1.0127x faster
3d-morph 5.2496+-0.2538 ? 5.3008+-0.3525 ?
3d-raytrace 5.3762+-0.4505 5.3630+-0.3617
access-binary-trees 2.0767+-0.0825 2.0555+-0.1932 might be 1.0103x faster
access-fannkuch 5.5440+-0.1497 ? 5.7629+-0.5321 ? might be 1.0395x slower
access-nbody 2.5516+-0.1703 ? 2.6977+-0.4622 ? might be 1.0573x slower
access-nsieve 3.1447+-0.1490 3.0239+-0.0680 might be 1.0399x faster
bitops-3bit-bits-in-byte 1.5470+-0.1111 1.4727+-0.0542 might be 1.0504x faster
bitops-bits-in-byte 3.3249+-0.0970 3.2793+-0.1802 might be 1.0139x faster
bitops-bitwise-and 2.0297+-0.0428 ? 2.0673+-0.2376 ? might be 1.0185x slower
bitops-nsieve-bits 2.9330+-0.0557 ? 2.9714+-0.1249 ? might be 1.0131x slower
controlflow-recursive 2.1381+-0.0708 2.0273+-0.0706 might be 1.0546x faster
crypto-aes 3.9095+-0.1959 ? 4.0664+-0.6038 ? might be 1.0401x slower
crypto-md5 2.7053+-0.2011 2.4968+-0.0936 might be 1.0835x faster
crypto-sha1 2.4725+-0.3360 ? 2.5139+-0.0745 ? might be 1.0168x slower
date-format-tofte 6.8247+-0.3900 ? 6.8788+-0.3018 ?
date-format-xparb 4.6035+-0.2513 4.5864+-0.1254
math-cordic 2.8327+-0.0769 2.8243+-0.0724
math-partial-sums 5.3962+-0.3497 5.2763+-0.0872 might be 1.0227x faster
math-spectral-norm 1.8260+-0.0786 1.8098+-0.0498
regexp-dna 6.4604+-0.0921 6.3359+-0.1521 might be 1.0197x faster
string-base64 4.4004+-0.1654 4.2919+-0.0508 might be 1.0253x faster
string-fasta 5.8106+-0.1160 5.7965+-0.2166
string-tagcloud 8.1837+-0.1425 ? 8.3093+-0.2099 ? might be 1.0153x slower
string-unpack-code 21.2210+-0.4956 20.7268+-0.9441 might be 1.0238x faster
string-validate-input 4.6554+-0.1421 4.5181+-0.0689 might be 1.0304x faster
<arithmetic> 4.6857+-0.0444 4.6541+-0.0462 might be 1.0068x faster
master ic
LongSpider:
3d-cube 793.4137+-28.5571 779.8162+-1.8580 might be 1.0174x faster
3d-morph 1536.8100+-9.9839 1530.7363+-7.9783
3d-raytrace 626.3002+-1.9250 ? 631.2438+-9.5650 ?
access-binary-trees 815.5217+-7.2649 807.2051+-11.7540 might be 1.0103x faster
access-fannkuch 282.4557+-1.4984 ? 286.8719+-13.9092 ? might be 1.0156x slower
access-nbody 517.7501+-1.4263 ? 523.4939+-16.7127 ? might be 1.0111x slower
access-nsieve 371.0728+-25.7076 363.0216+-8.9741 might be 1.0222x faster
bitops-3bit-bits-in-byte 40.8128+-0.7342 ? 40.9683+-0.7450 ?
bitops-bits-in-byte 75.4478+-1.2256 ? 76.8477+-2.6333 ? might be 1.0186x slower
bitops-nsieve-bits 414.4860+-11.2225 414.2703+-17.0280
controlflow-recursive 426.2650+-3.4753 ? 428.6634+-0.6052 ?
crypto-aes 587.1618+-5.2531 ? 589.8830+-8.6121 ?
crypto-md5 507.6640+-11.3110 503.1090+-16.8425
crypto-sha1 646.7902+-1.7814 ? 650.1407+-9.2547 ?
date-format-tofte 519.4733+-9.7951 ? 527.3456+-11.2524 ? might be 1.0152x slower
date-format-xparb 639.9252+-5.7083 638.1006+-12.0633
hash-map 156.7858+-8.1974 154.6903+-2.5655 might be 1.0135x faster
math-cordic 500.7775+-6.2904 ? 502.6120+-9.2441 ?
math-partial-sums 487.6621+-40.7226 476.2833+-4.3613 might be 1.0239x faster
math-spectral-norm 566.4171+-8.2178 562.7213+-1.9696
string-base64 354.3502+-4.8115 ? 355.1102+-9.9737 ?
string-fasta 368.4639+-2.4151 362.8258+-4.3029 might be 1.0155x faster
string-tagcloud 181.3590+-3.6526 ? 183.0856+-4.8647 ?
<geometric> 397.3372+-1.6767 396.9677+-2.9797 might be 1.0009x faster
master ic
V8Spider:
crypto 49.9987+-1.7307 ? 50.1380+-2.7564 ?
deltablue 85.2797+-7.3987 ? 90.8008+-2.7051 ? might be 1.0647x slower
earley-boyer 40.8061+-1.8009 40.2130+-0.6843 might be 1.0147x faster
raytrace 30.4333+-1.6771 29.1196+-1.7421 might be 1.0451x faster
regexp 63.2512+-1.2643 63.1186+-1.5820
richards 71.5418+-6.2622 69.8928+-2.0689 might be 1.0236x faster
splay 34.2780+-1.3294 ? 35.3563+-2.2980 ? might be 1.0315x slower
<geometric> 50.3366+-0.9743 ? 50.4352+-0.8964 ? might be 1.0020x slower
master ic
Octane:
encrypt 0.20844+-0.00190 ? 0.20947+-0.00227 ?
decrypt 3.43818+-0.01470 ? 3.44745+-0.04044 ?
deltablue x2 0.15833+-0.00227 0.15744+-0.00123
earley 0.28198+-0.00508 ? 0.28215+-0.00522 ?
boyer 4.22686+-0.04528 ? 4.32261+-0.20904 ? might be 1.0227x slower
navier-stokes x2 5.08685+-0.07102 ? 5.13387+-0.20480 ?
raytrace x2 1.05286+-0.06577 ? 1.06027+-0.09406 ?
richards x2 0.10141+-0.00151 ? 0.10367+-0.00283 ? might be 1.0223x slower
splay x2 0.35151+-0.00502 0.34610+-0.00394 might be 1.0156x faster
regexp x2 25.62353+-0.67615 25.27060+-0.57687 might be 1.0140x faster
pdfjs x2 38.38040+-0.21680 ? 38.45736+-0.60860 ?
mandreel x2 45.47939+-0.68815 ? 45.74709+-0.86948 ?
gbemu x2 34.86560+-0.29811 ? 35.70812+-1.23824 ? might be 1.0242x slower
closure 0.57971+-0.00455 0.57731+-0.00686
jquery 7.35889+-0.03863 ? 7.36952+-0.00905 ?
box2d x2 10.31713+-0.12775 10.25901+-0.11313
zlib x2 382.64616+-32.05315 ? 388.95809+-14.22319 ? might be 1.0165x slower
typescript x2 674.90784+-31.23544 674.14502+-20.76814
<geometric> 5.73566+-0.01918 ? 5.75804+-0.04203 ? might be 1.0039x slower
master ic
Kraken:
ai-astar 240.491+-5.543 236.988+-11.448 might be 1.0148x faster
audio-beat-detection 59.313+-1.303 ? 59.672+-0.827 ?
audio-dft 101.749+-9.906 ? 101.875+-4.321 ?
audio-fft 35.552+-0.114 ? 36.307+-2.298 ? might be 1.0212x slower
audio-oscillator 63.029+-2.677 62.376+-0.223 might be 1.0105x faster
imaging-darkroom 60.529+-0.447 ? 60.642+-1.115 ?
imaging-desaturate 56.381+-0.415 54.547+-4.319 might be 1.0336x faster
imaging-gaussian-blur 85.198+-1.559 ? 88.684+-9.203 ? might be 1.0409x slower
json-parse-financial 39.431+-0.831 39.300+-0.590
json-stringify-tinderbox 23.853+-1.334 23.774+-0.782
stanford-crypto-aes 42.543+-1.363 42.081+-1.296 might be 1.0110x faster
stanford-crypto-ccm 40.615+-19.059 34.907+-2.458 might be 1.1635x faster
stanford-crypto-pbkdf2 96.527+-1.298 ? 101.129+-6.774 ? might be 1.0477x slower
stanford-crypto-sha256-iterative 37.316+-0.307 ? 38.612+-4.004 ? might be 1.0347x slower
<arithmetic> 70.180+-2.410 70.064+-2.083 might be 1.0017x faster
master ic
JSRegress:
abc-forward-loop-equal 29.6027+-0.8427 29.4940+-0.9439
abc-postfix-backward-loop 30.1005+-0.9838 29.9091+-0.7314
abc-simple-backward-loop 29.0019+-0.3365 ? 29.4962+-1.0677 ? might be 1.0170x slower
abc-simple-forward-loop 29.4216+-0.7351 ? 29.5641+-0.9528 ?
abc-skippy-loop 23.0599+-3.1730 21.5892+-0.7283 might be 1.0681x faster
abs-boolean 2.4587+-0.0635 2.4528+-0.0091
adapt-to-double-divide 16.5740+-1.2061 16.4300+-0.6275
aliased-arguments-getbyval 1.1813+-0.1498 1.1111+-0.0380 might be 1.0632x faster
allocate-big-object 2.3939+-0.3973 ? 2.5241+-0.1344 ? might be 1.0544x slower
arguments-named-and-reflective 10.8132+-0.3844 ? 10.8554+-0.2082 ?
arguments-out-of-bounds 9.8085+-0.1019 ? 10.1405+-0.8127 ? might be 1.0338x slower
arguments-strict-mode 9.5280+-0.3350 ? 9.7950+-0.1545 ? might be 1.0280x slower
arguments 8.3906+-0.4119 ? 8.5326+-0.3739 ? might be 1.0169x slower
arity-mismatch-inlining 1.0264+-0.6236 0.8348+-0.0796 might be 1.2295x faster
array-access-polymorphic-structure 6.0865+-0.5064 5.9287+-0.1238 might be 1.0266x faster
array-nonarray-polymorhpic-access 25.0085+-0.9059 24.8210+-0.9713
array-prototype-every 76.7864+-0.2965 ^ 76.3371+-0.1405 ^ definitely 1.0059x faster
array-prototype-forEach 75.5010+-0.3142 74.8917+-0.4673
array-prototype-map 84.8572+-0.8004 83.8193+-2.1007 might be 1.0124x faster
array-prototype-reduce 72.4004+-0.6158 71.5593+-0.3378 might be 1.0118x faster
array-prototype-reduceRight 73.5502+-2.9887 71.4883+-0.9306 might be 1.0288x faster
array-prototype-some 78.3344+-4.8900 77.5605+-3.3940
array-splice-contiguous 21.5842+-0.8441 20.5626+-0.8408 might be 1.0497x faster
array-with-double-add 3.4706+-0.1187 3.4651+-0.2213
array-with-double-increment 3.1335+-0.1814 3.0751+-0.0160 might be 1.0190x faster
array-with-double-mul-add 4.2440+-0.2302 ? 4.2681+-0.1251 ?
array-with-double-sum 3.2264+-0.1355 3.1889+-0.0466 might be 1.0118x faster
array-with-int32-add-sub 5.7910+-0.2453 ? 5.9775+-0.1013 ? might be 1.0322x slower
array-with-int32-or-double-sum 3.2529+-0.1157 3.2495+-0.0297
ArrayBuffer-DataView-alloc-large-long-lived
27.0646+-0.4098 27.0440+-0.7682
ArrayBuffer-DataView-alloc-long-lived 13.2420+-1.5049 12.8705+-0.6466 might be 1.0289x faster
ArrayBuffer-Int32Array-byteOffset 3.6187+-0.0668 ? 3.6617+-0.2640 ? might be 1.0119x slower
ArrayBuffer-Int8Array-alloc-large-long-lived
27.4819+-0.5442 ? 27.5218+-0.0221 ?
ArrayBuffer-Int8Array-alloc-long-lived-buffer
20.7316+-0.8518 20.5146+-0.2727 might be 1.0106x faster
ArrayBuffer-Int8Array-alloc-long-lived 13.5737+-1.9011 12.6281+-1.0971 might be 1.0749x faster
ArrayBuffer-Int8Array-alloc 10.2805+-0.5955 ? 10.9620+-1.2143 ? might be 1.0663x slower
asmjs_bool_bug 7.2403+-0.1313 ? 7.4224+-0.5056 ? might be 1.0252x slower
assign-custom-setter-polymorphic 2.5180+-0.3374 ? 2.5905+-0.1916 ? might be 1.0288x slower
assign-custom-setter 3.5245+-0.2524 3.3347+-0.0322 might be 1.0569x faster
basic-set 7.8433+-0.1915 7.8104+-0.2319
big-int-mul 3.4476+-0.0769 ? 3.4782+-0.1259 ?
boolean-test 2.8865+-0.0945 2.8768+-0.0355
branch-fold 3.6255+-0.0383 ? 3.7035+-0.1792 ? might be 1.0215x slower
branch-on-string-as-boolean 16.9207+-0.2689 16.9190+-0.2813
by-val-generic 6.3497+-0.2360 ^ 2.3013+-0.1321 ^ definitely 2.7592x faster
call-spread-apply 26.5962+-0.5654 26.5776+-0.6805
call-spread-call 21.5210+-1.2144 ? 21.7841+-0.1006 ? might be 1.0122x slower
captured-assignments 0.4255+-0.0339 0.3942+-0.0164 might be 1.0793x faster
cast-int-to-double 5.5365+-1.1834 5.3498+-0.3958 might be 1.0349x faster
cell-argument 6.5525+-0.6078 6.5468+-0.6521
cfg-simplify 2.7952+-0.1278 ? 2.8091+-0.1133 ?
chain-getter-access 8.1425+-0.0754 ? 8.2031+-0.1956 ?
cmpeq-obj-to-obj-other 12.5519+-0.6915 11.7645+-2.7257 might be 1.0669x faster
constant-test 4.8746+-0.1235 ? 4.9147+-0.1921 ?
create-lots-of-functions 9.5984+-1.3850 9.3627+-0.6145 might be 1.0252x faster
cse-new-array-buffer 2.1868+-0.1190 2.1472+-0.3188 might be 1.0184x faster
cse-new-array 2.3494+-0.1701 2.2454+-0.2027 might be 1.0463x faster
DataView-custom-properties 32.3731+-0.8592 31.8456+-0.5045 might be 1.0166x faster
delay-tear-off-arguments-strictmode 12.3215+-0.1808 ? 12.7900+-1.0473 ? might be 1.0380x slower
deltablue-varargs 149.1277+-1.1687 ? 151.8160+-4.7431 ? might be 1.0180x slower
destructuring-arguments 167.5294+-5.5606 164.7269+-0.9166 might be 1.0170x faster
destructuring-parameters-overridden-by-function
0.4771+-0.1141 0.4402+-0.0431 might be 1.0837x faster
destructuring-swap 4.7137+-0.0357 ? 4.8137+-0.1040 ? might be 1.0212x slower
direct-arguments-getbyval 1.1108+-0.0345 ? 1.1958+-0.2109 ? might be 1.0765x slower
div-boolean-double 5.4399+-0.1457 5.3850+-0.0544 might be 1.0102x faster
div-boolean 8.3686+-0.2194 ? 8.4500+-0.2383 ?
double-get-by-val-out-of-bounds 4.2805+-0.4870 4.0977+-0.1230 might be 1.0446x faster
double-pollution-getbyval 8.7812+-0.0572 ? 8.8528+-0.2183 ?
double-pollution-putbyoffset 3.8027+-0.2276 3.6227+-0.1344 might be 1.0497x faster
double-real-use 25.4166+-2.9800 ? 25.5195+-3.5607 ?
double-to-int32-typed-array-no-inline 2.0755+-0.0479 2.0726+-0.0965
double-to-int32-typed-array 1.7766+-0.0293 ? 1.7879+-0.1440 ?
double-to-uint32-typed-array-no-inline 2.1171+-0.0260 ? 2.1200+-0.1020 ?
double-to-uint32-typed-array 1.8613+-0.0741 ? 1.9135+-0.1302 ? might be 1.0280x slower
elidable-new-object-dag 33.7334+-0.4795 ? 33.8478+-0.4943 ?
elidable-new-object-roflcopter 33.3395+-0.4312 33.2436+-0.5341
elidable-new-object-then-call 31.7417+-0.5705 31.1071+-2.1042 might be 1.0204x faster
elidable-new-object-tree 37.8663+-1.1710 37.1163+-0.4281 might be 1.0202x faster
empty-string-plus-int 4.9412+-0.5871 4.8378+-0.1534 might be 1.0214x faster
emscripten-cube2hash 26.2280+-2.2907 ? 30.0833+-12.1144 ? might be 1.1470x slower
exit-length-on-plain-object 12.8395+-0.2411 12.5593+-0.4780 might be 1.0223x faster
external-arguments-getbyval 1.1553+-0.0231 ? 1.1630+-0.0769 ?
external-arguments-putbyval 2.2350+-0.2979 2.1983+-0.0576 might be 1.0167x faster
fixed-typed-array-storage-var-index 1.1647+-0.0714 1.1492+-0.0802 might be 1.0134x faster
fixed-typed-array-storage 0.8732+-0.0339 0.8625+-0.0443 might be 1.0125x faster
Float32Array-matrix-mult 3.9515+-0.0880 ? 4.2126+-0.3339 ? might be 1.0661x slower
Float32Array-to-Float64Array-set 47.2201+-0.3312 ^ 45.7769+-0.5825 ^ definitely 1.0315x faster
Float64Array-alloc-long-lived 58.0226+-0.6399 ? 58.2520+-0.2601 ?
Float64Array-to-Int16Array-set 56.4713+-0.4054 ? 57.5864+-1.2502 ? might be 1.0197x slower
fold-double-to-int 12.9063+-0.3385 ? 13.1258+-0.5133 ? might be 1.0170x slower
fold-get-by-id-to-multi-get-by-offset-rare-int
10.9520+-0.5436 10.3846+-0.9998 might be 1.0546x faster
fold-get-by-id-to-multi-get-by-offset 9.3873+-0.6626 8.3970+-2.0448 might be 1.1179x faster
fold-multi-get-by-offset-to-get-by-offset
8.7089+-0.9243 ? 9.0277+-0.5512 ? might be 1.0366x slower
fold-multi-get-by-offset-to-poly-get-by-offset
7.5157+-0.4872 ? 8.0903+-1.5728 ? might be 1.0765x slower
fold-multi-put-by-offset-to-poly-put-by-offset
7.8795+-0.7333 7.5596+-0.9728 might be 1.0423x faster
fold-multi-put-by-offset-to-put-by-offset
5.1548+-1.8105 4.6422+-2.1106 might be 1.1104x faster
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
8.8376+-1.5614 8.3023+-0.5199 might be 1.0645x faster
fold-put-by-id-to-multi-put-by-offset 8.6062+-0.7649 ? 8.9911+-0.9906 ? might be 1.0447x slower
fold-put-by-val-with-string-to-multi-put-by-offset
67.3643+-3.0387 ^ 9.4009+-0.7271 ^ definitely 7.1657x faster
fold-put-by-val-with-symbol-to-multi-put-by-offset
66.8249+-1.6586 ^ 9.3521+-0.6415 ^ definitely 7.1455x faster
fold-put-structure 5.5856+-1.7418 ? 5.9985+-0.2625 ? might be 1.0739x slower
for-of-iterate-array-entries 11.7137+-0.2403 11.3141+-0.2820 might be 1.0353x faster
for-of-iterate-array-keys 3.7169+-0.8672 3.5993+-0.3172 might be 1.0327x faster
for-of-iterate-array-values 3.3723+-0.1677 ? 3.7827+-0.6664 ? might be 1.1217x slower
fround 18.9152+-0.5867 ? 19.8879+-1.2328 ? might be 1.0514x slower
ftl-library-inlining-dataview 57.9307+-1.0538 57.1646+-0.2409 might be 1.0134x faster
ftl-library-inlining 109.2048+-0.3419 ? 110.4962+-1.0693 ? might be 1.0118x slower
function-dot-apply 2.0403+-0.0505 1.9878+-0.0505 might be 1.0264x faster
function-test 2.7062+-0.0547 ? 2.7675+-0.1178 ? might be 1.0226x slower
function-with-eval 103.8721+-1.2978 ? 105.4785+-0.3958 ? might be 1.0155x slower
gcse-poly-get-less-obvious 14.5305+-0.6317 14.5255+-0.4147
gcse-poly-get 16.4726+-0.3777 16.4145+-0.7760
gcse 3.8152+-0.0469 ? 3.9211+-0.3729 ? might be 1.0278x slower
get-by-id-bimorphic-check-structure-elimination-simple
2.6031+-0.0393 ? 2.6050+-0.0592 ?
get-by-id-bimorphic-check-structure-elimination
6.0638+-0.6275 ? 6.2859+-1.0627 ? might be 1.0366x slower
get-by-id-chain-from-try-block 5.4541+-0.1324 ? 5.5377+-0.2504 ? might be 1.0153x slower
get-by-id-check-structure-elimination 4.6000+-0.2907 4.5267+-0.1308 might be 1.0162x faster
get-by-id-proto-or-self 14.8049+-1.8851 ? 15.8771+-2.8208 ? might be 1.0724x slower
get-by-id-quadmorphic-check-structure-elimination-simple
2.8961+-0.1085 2.8665+-0.0331 might be 1.0103x faster
get-by-id-self-or-proto 14.4600+-0.5328 ? 15.7133+-1.8987 ? might be 1.0867x slower
get-by-val-out-of-bounds 4.2115+-0.5745 4.1115+-0.2703 might be 1.0243x faster
get-by-val-with-string-bimorphic-check-structure-elimination-simple
2.8085+-0.0521 2.7894+-0.0411
get-by-val-with-string-bimorphic-check-structure-elimination
6.5964+-1.4926 6.2104+-0.2093 might be 1.0622x faster
get-by-val-with-string-chain-from-try-block
6.3497+-1.1129 5.9166+-0.3515 might be 1.0732x faster
get-by-val-with-string-check-structure-elimination
5.1848+-0.1764 5.1080+-0.0954 might be 1.0150x faster
get-by-val-with-string-proto-or-self 14.7969+-0.4005 ? 15.5211+-2.1642 ? might be 1.0489x slower
get-by-val-with-string-quadmorphic-check-structure-elimination-simple
3.1897+-0.0178 ? 3.2040+-0.0896 ?
get-by-val-with-string-self-or-proto 14.6060+-0.2735 ? 15.3127+-2.9933 ? might be 1.0484x slower
get-by-val-with-symbol-bimorphic-check-structure-elimination-simple
3.0743+-0.2133 3.0740+-0.0579
get-by-val-with-symbol-bimorphic-check-structure-elimination
12.5497+-0.4306 ? 12.5562+-0.2078 ?
get-by-val-with-symbol-chain-from-try-block
5.7888+-0.3170 ? 5.7945+-0.3163 ?
get-by-val-with-symbol-check-structure-elimination
11.2458+-0.1100 ? 11.2637+-0.2185 ?
get-by-val-with-symbol-proto-or-self 14.9417+-0.9737 14.8297+-0.3053
get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple
4.0136+-0.3179 3.9988+-0.2111
get-by-val-with-symbol-self-or-proto 15.3256+-2.2573 ? 15.5142+-2.3386 ? might be 1.0123x slower
get_callee_monomorphic 2.3480+-0.2747 2.2870+-0.2013 might be 1.0267x faster
get_callee_polymorphic 3.2233+-0.0577 ? 3.5060+-0.5314 ? might be 1.0877x slower
getter-no-activation 4.9577+-0.3610 ? 4.9637+-0.3111 ?
getter-prototype 9.8403+-0.1802 ? 9.9677+-0.4027 ? might be 1.0129x slower
getter-richards 114.8677+-10.1534 113.5707+-11.8297 might be 1.0114x faster
getter 5.7976+-0.3218 5.6006+-0.9122 might be 1.0352x faster
global-object-access-with-mutating-structure
5.5773+-0.1113 5.5562+-0.1018
global-var-const-infer-fire-from-opt 0.9005+-0.1881 0.8447+-0.0540 might be 1.0660x faster
global-var-const-infer 0.6877+-0.0586 ? 0.7439+-0.0520 ? might be 1.0817x slower
HashMap-put-get-iterate-keys 25.9265+-3.1180 ? 27.1320+-3.7075 ? might be 1.0465x slower
HashMap-put-get-iterate 26.1425+-1.9203 25.9260+-2.5323
HashMap-string-put-get-iterate 24.1339+-0.5905 ? 25.0225+-1.3449 ? might be 1.0368x slower
hoist-make-rope 8.7113+-1.1605 ? 9.0999+-0.9124 ? might be 1.0446x slower
hoist-poly-check-structure-effectful-loop
4.1611+-0.2979 4.1285+-0.1275
hoist-poly-check-structure 3.4672+-0.5058 3.3218+-0.1095 might be 1.0438x faster
imul-double-only 6.5516+-0.1444 ? 6.9959+-0.5197 ? might be 1.0678x slower
imul-int-only 8.0688+-0.3728 8.0450+-0.6080
imul-mixed 6.8715+-0.6499 6.7954+-0.1998 might be 1.0112x faster
in-four-cases 17.6362+-0.2252 ? 17.9702+-0.6334 ? might be 1.0189x slower
in-one-case-false 9.4830+-0.1609 ? 9.5490+-0.2518 ?
in-one-case-true 9.7847+-0.8095 9.7187+-0.4157
in-two-cases 10.5125+-1.3344 9.9337+-0.4063 might be 1.0583x faster
indexed-properties-in-objects 2.8282+-0.0528 ? 2.8836+-0.1007 ? might be 1.0196x slower
infer-closure-const-then-mov-no-inline 3.0240+-0.0379 ? 3.0517+-0.0299 ?
infer-closure-const-then-mov 17.7538+-0.7280 17.3597+-1.4026 might be 1.0227x faster
infer-closure-const-then-put-to-scope-no-inline
11.2629+-0.5173 11.2134+-0.5000
infer-closure-const-then-put-to-scope 22.4878+-0.8617 21.4604+-0.8726 might be 1.0479x faster
infer-closure-const-then-reenter-no-inline
50.5512+-0.2501 ? 51.3043+-3.1133 ? might be 1.0149x slower
infer-closure-const-then-reenter 23.1052+-3.3069 ? 23.3792+-3.3867 ? might be 1.0119x slower
infer-constant-global-property 3.4670+-0.1472 3.4232+-0.0467 might be 1.0128x faster
infer-constant-property 2.6425+-0.0747 ? 2.6732+-0.1336 ? might be 1.0116x slower
infer-one-time-closure-ten-vars 8.6277+-0.5838 8.4818+-0.6779 might be 1.0172x faster
infer-one-time-closure-two-vars 8.2723+-0.4036 8.0453+-0.2802 might be 1.0282x faster
infer-one-time-closure 8.0640+-0.1567 ? 8.0855+-0.2236 ?
infer-one-time-deep-closure 13.1748+-0.7058 13.0330+-1.0551 might be 1.0109x faster
inline-arguments-access 3.7421+-0.4543 3.6223+-0.1667 might be 1.0331x faster
inline-arguments-aliased-access 3.6545+-0.2181 3.6235+-0.2389
inline-arguments-local-escape 4.0335+-0.7115 3.8375+-0.5888 might be 1.0511x faster
inline-get-scoped-var 4.9543+-0.5506 4.6768+-0.0864 might be 1.0593x faster
inlined-put-by-id-transition 11.1263+-1.0189 10.5570+-1.4713 might be 1.0539x faster
inlined-put-by-val-with-string-transition
113.3862+-1.4036 ^ 73.3654+-1.6418 ^ definitely 1.5455x faster
inlined-put-by-val-with-symbol-transition
116.1099+-1.8085 ^ 72.7617+-1.1073 ^ definitely 1.5958x faster
int-or-other-abs-then-get-by-val 4.8110+-0.0764 ? 4.9390+-0.3984 ? might be 1.0266x slower
int-or-other-abs-zero-then-get-by-val 18.0853+-5.8032 16.3715+-1.1820 might be 1.1047x faster
int-or-other-add-then-get-by-val 4.2315+-0.2771 4.1371+-0.2450 might be 1.0228x faster
int-or-other-add 4.9647+-0.1534 ? 4.9847+-0.2172 ?
int-or-other-div-then-get-by-val 3.7111+-0.0730 ? 3.8430+-0.3513 ? might be 1.0356x slower
int-or-other-max-then-get-by-val 4.0529+-0.2012 4.0245+-0.1486
int-or-other-min-then-get-by-val 4.1238+-0.2244 ? 4.1412+-0.2652 ?
int-or-other-mod-then-get-by-val 3.6034+-0.5050 ? 3.6573+-0.2111 ? might be 1.0150x slower
int-or-other-mul-then-get-by-val 3.7545+-0.1828 3.6014+-0.1657 might be 1.0425x faster
int-or-other-neg-then-get-by-val 4.4993+-0.0452 ? 4.6274+-0.1583 ? might be 1.0285x slower
int-or-other-neg-zero-then-get-by-val 16.1445+-0.1329 ? 16.2324+-0.1310 ?
int-or-other-sub-then-get-by-val 4.1742+-0.1669 4.0835+-0.1195 might be 1.0222x faster
int-or-other-sub 3.4584+-0.1815 3.4049+-0.0282 might be 1.0157x faster
int-overflow-local 4.3369+-0.2684 ? 4.3532+-0.1598 ?
Int16Array-alloc-long-lived 42.0009+-0.8206 ? 42.4072+-1.1132 ?
Int16Array-bubble-sort-with-byteLength 17.9250+-0.5501 ? 18.1835+-1.0359 ? might be 1.0144x slower
Int16Array-bubble-sort 18.0875+-0.6791 18.0641+-0.5452
Int16Array-load-int-mul 1.4167+-0.0171 ? 1.4268+-0.0143 ?
Int16Array-to-Int32Array-set 43.5646+-0.7894 ? 43.7563+-0.1871 ?
Int32Array-alloc-large 12.2767+-0.2897 12.1706+-0.4123
Int32Array-alloc-long-lived 47.6408+-1.3253 ? 47.8192+-0.9320 ?
Int32Array-alloc 2.7613+-0.2504 ? 2.8663+-0.3608 ? might be 1.0380x slower
Int32Array-Int8Array-view-alloc 6.5758+-0.8034 6.2656+-0.1734 might be 1.0495x faster
int52-spill 4.5895+-0.0761 ? 4.7632+-0.5120 ? might be 1.0378x slower
Int8Array-alloc-long-lived 37.9097+-1.6570 ? 38.1652+-1.7913 ?
Int8Array-load-with-byteLength 3.5231+-0.1843 3.4588+-0.1262 might be 1.0186x faster
Int8Array-load 3.4854+-0.2354 3.4274+-0.1154 might be 1.0169x faster
integer-divide 10.7545+-0.4604 10.5811+-0.1928 might be 1.0164x faster
integer-modulo 1.6625+-0.1352 1.6620+-0.0820
is-boolean-fold-tricky 3.8705+-0.2600 3.7728+-0.0605 might be 1.0259x faster
is-boolean-fold 2.6549+-0.1121 2.6466+-0.0526
is-function-fold-tricky-internal-function
10.4236+-0.4810 10.2070+-0.4766 might be 1.0212x faster
is-function-fold-tricky 4.2142+-0.2513 ? 4.2355+-0.1608 ?
is-function-fold 2.6730+-0.0298 2.6389+-0.0449 might be 1.0129x faster
is-number-fold-tricky 4.0383+-0.0972 ? 4.2274+-0.3982 ? might be 1.0468x slower
is-number-fold 2.6166+-0.0221 ? 2.6320+-0.0283 ?
is-object-or-null-fold-functions 2.6602+-0.0361 ? 2.7557+-0.1277 ? might be 1.0359x slower
is-object-or-null-fold-less-tricky 4.1884+-0.2149 4.1195+-0.0787 might be 1.0167x faster
is-object-or-null-fold-tricky 5.3125+-0.3828 ? 5.3710+-0.2273 ? might be 1.0110x slower
is-object-or-null-fold 2.7052+-0.1323 2.6432+-0.0217 might be 1.0234x faster
is-object-or-null-trickier-function 4.2444+-0.1916 4.1558+-0.1136 might be 1.0213x faster
is-object-or-null-trickier-internal-function
10.7703+-0.1671 10.4895+-0.2393 might be 1.0268x faster
is-object-or-null-tricky-function 4.1735+-0.1947 ? 4.1779+-0.2423 ?
is-object-or-null-tricky-internal-function
8.1657+-0.6859 7.8463+-0.1177 might be 1.0407x faster
is-string-fold-tricky 4.1450+-0.2770 4.1444+-0.1397
is-string-fold 2.7498+-0.3033 2.6587+-0.0721 might be 1.0343x faster
is-undefined-fold-tricky 3.5466+-0.6788 3.3407+-0.1377 might be 1.0616x faster
is-undefined-fold 2.7822+-0.4768 2.7507+-0.2112 might be 1.0114x faster
JSONP-negative-0 0.2421+-0.0208 0.2359+-0.0080 might be 1.0261x faster
large-int-captured 3.9287+-0.0896 3.8875+-0.2568 might be 1.0106x faster
large-int-neg 15.0695+-0.8174 14.3917+-0.5343 might be 1.0471x faster
large-int 13.8679+-1.0574 13.8184+-0.6922
load-varargs-elimination 21.3115+-0.7325 ? 21.6716+-1.2830 ? might be 1.0169x slower
logical-not-weird-types 2.8860+-0.0482 ? 2.9739+-0.1057 ? might be 1.0304x slower
logical-not 4.4067+-0.4597 4.3975+-0.2587
lots-of-fields 9.7744+-0.7337 9.3702+-0.2458 might be 1.0431x faster
make-indexed-storage 2.7749+-0.2513 ? 2.8377+-0.1723 ? might be 1.0226x slower
make-rope-cse 3.6221+-0.3308 ? 3.6872+-0.4260 ? might be 1.0180x slower
marsaglia-larger-ints 32.8582+-1.4857 32.8297+-0.8434
marsaglia-osr-entry 21.0968+-0.5994 21.0175+-0.5314
math-with-out-of-bounds-array-values 22.3522+-0.3272 22.1957+-1.2707
max-boolean 2.6750+-0.0870 ? 2.7963+-0.1585 ? might be 1.0453x slower
method-on-number 16.9793+-0.8133 ? 17.6854+-2.4706 ? might be 1.0416x slower
min-boolean 2.7689+-0.5062 2.7238+-0.1011 might be 1.0165x faster
minus-boolean-double 3.0845+-0.0150 ? 3.2867+-0.4091 ? might be 1.0656x slower
minus-boolean 2.3653+-0.0720 ? 2.3893+-0.1667 ? might be 1.0101x slower
misc-strict-eq 31.0974+-0.9296 ? 32.0834+-2.0100 ? might be 1.0317x slower
mod-boolean-double 11.2999+-0.1217 ? 11.3871+-0.3012 ?
mod-boolean 8.4781+-0.1938 ? 8.6068+-0.6478 ? might be 1.0152x slower
mul-boolean-double 3.6824+-0.0288 3.6316+-0.1026 might be 1.0140x faster
mul-boolean 2.8253+-0.0382 2.8154+-0.0597
neg-boolean 3.1895+-0.1613 3.1228+-0.0564 might be 1.0213x faster
negative-zero-divide 0.3293+-0.0330 0.3228+-0.0396 might be 1.0200x faster
negative-zero-modulo 0.3110+-0.0048 ? 0.3219+-0.0159 ? might be 1.0351x slower
negative-zero-negate 0.2980+-0.0151 0.2936+-0.0057 might be 1.0148x faster
nested-function-parsing 44.6381+-2.4254 ? 45.2202+-1.6092 ? might be 1.0130x slower
new-array-buffer-dead 89.3569+-1.5199 88.4921+-1.0186
new-array-buffer-push 6.1260+-0.6262 6.0811+-0.5831
new-array-dead 14.0870+-1.3740 ? 14.1985+-1.2770 ?
new-array-push 3.6223+-0.4650 3.5285+-0.3420 might be 1.0266x faster
no-inline-constructor 31.1506+-1.0236 ? 31.3271+-0.9717 ?
number-test 2.9226+-0.1579 2.9020+-0.0461
object-closure-call 4.9434+-0.0558 ? 5.0468+-0.2696 ? might be 1.0209x slower
object-get-own-property-symbols-on-large-array
4.0510+-0.3939 4.0193+-0.6355
object-test 2.6308+-0.0982 ? 2.7098+-0.0940 ? might be 1.0300x slower
obvious-sink-pathology-taken 100.2952+-1.0604 ? 100.3145+-1.7063 ?
obvious-sink-pathology 95.2581+-2.2774 ? 95.7946+-1.9824 ?
obviously-elidable-new-object 28.7877+-0.8610 ? 29.0135+-0.4509 ?
plus-boolean-arith 2.3928+-0.0369 ? 2.4257+-0.1482 ? might be 1.0138x slower
plus-boolean-double 3.1740+-0.1786 3.1130+-0.0531 might be 1.0196x faster
plus-boolean 2.5600+-0.1148 ? 2.5635+-0.0566 ?
poly-chain-access-different-prototypes-simple
3.3170+-0.2063 ? 3.3499+-0.3353 ?
poly-chain-access-different-prototypes 2.8423+-0.0118 ? 2.8576+-0.0717 ?
poly-chain-access-simpler 3.2687+-0.1203 ? 3.3287+-0.1828 ? might be 1.0184x slower
poly-chain-access 3.3256+-0.0767 ? 3.3311+-0.2120 ?
poly-stricteq 50.2608+-0.3420 ? 51.0299+-0.9434 ? might be 1.0153x slower
polymorphic-array-call 1.2607+-0.0807 ? 1.3193+-0.1890 ? might be 1.0465x slower
polymorphic-get-by-id 2.8309+-0.0692 ? 2.8414+-0.0320 ?
polymorphic-put-by-id 26.3010+-1.7205 26.1827+-0.8560
polymorphic-put-by-val-with-string 347.0945+-2.7703 ^ 26.1200+-0.8491 ^ definitely 13.2885x faster
polymorphic-put-by-val-with-symbol 372.2051+-3.0216 ^ 26.6349+-1.3042 ^ definitely 13.9743x faster
polymorphic-structure 13.7191+-0.5529 13.2135+-0.3319 might be 1.0383x faster
polyvariant-monomorphic-get-by-id 6.3325+-0.5065 ? 6.7582+-1.4725 ? might be 1.0672x slower
proto-getter-access 8.1990+-0.0577 ? 8.2671+-0.3011 ?
prototype-access-with-mutating-prototype 5.4700+-0.2801 ? 5.6260+-0.3016 ? might be 1.0285x slower
put-by-id-replace-and-transition 7.6046+-0.6959 7.5691+-0.5006
put-by-id-slightly-polymorphic 2.6623+-0.0640 ? 2.7487+-0.1513 ? might be 1.0325x slower
put-by-id 9.7677+-0.5993 9.5922+-0.3781 might be 1.0183x faster
put-by-val-direct 0.3233+-0.0106 0.3223+-0.0059
put-by-val-large-index-blank-indexing-type
5.3585+-0.4454 ? 5.3826+-0.2138 ?
put-by-val-machine-int 2.4592+-0.3946 2.4158+-0.2271 might be 1.0180x faster
put-by-val-with-string-replace-and-transition
82.1268+-0.6568 ^ 9.8768+-0.1012 ^ definitely 8.3151x faster
put-by-val-with-string-slightly-polymorphic
33.9094+-1.3237 ^ 2.9073+-0.0732 ^ definitely 11.6633x faster
put-by-val-with-string 81.8883+-2.7360 ^ 10.4738+-1.1512 ^ definitely 7.8184x faster
put-by-val-with-symbol-replace-and-transition
84.0939+-2.0663 ^ 11.4930+-0.2402 ^ definitely 7.3169x faster
put-by-val-with-symbol-slightly-polymorphic
33.0390+-0.9403 ^ 3.0850+-0.0368 ^ definitely 10.7095x faster
put-by-val-with-symbol 82.5089+-1.9175 ^ 10.3378+-0.7775 ^ definitely 7.9813x faster
rare-osr-exit-on-local 14.6685+-0.1695 14.4926+-0.3668 might be 1.0121x faster
register-pressure-from-osr 16.8158+-0.7339 16.5345+-0.0654 might be 1.0170x faster
repeat-multi-get-by-offset 22.0790+-0.4222 ? 22.3140+-0.9117 ? might be 1.0106x slower
setter-prototype 7.4984+-0.0985 7.4271+-0.2781
setter 5.6747+-0.4469 5.6543+-0.9037
simple-activation-demo 25.0185+-0.9079 24.5759+-0.4718 might be 1.0180x faster
simple-getter-access 10.5988+-0.3795 10.5464+-0.7052
simple-poly-call-nested 8.8995+-0.9170 ? 9.0424+-0.6458 ? might be 1.0161x slower
simple-poly-call 1.2449+-0.0295 ? 1.2553+-0.0235 ?
sin-boolean 17.7567+-1.1361 ? 18.2839+-1.3364 ? might be 1.0297x slower
singleton-scope 62.0372+-3.3555 61.0024+-0.0955 might be 1.0170x faster
sink-function 9.3923+-1.3323 9.1417+-1.1722 might be 1.0274x faster
sink-huge-activation 16.2344+-1.4302 ? 16.8748+-0.8064 ? might be 1.0394x slower
sinkable-new-object-dag 56.4569+-2.3289 ? 56.7988+-2.6039 ?
sinkable-new-object-taken 42.8121+-0.7554 ? 43.1985+-1.0962 ?
sinkable-new-object 29.5342+-0.6030 ? 29.5790+-1.2025 ?
slow-array-profile-convergence 2.6356+-0.1668 ? 2.6638+-0.2151 ? might be 1.0107x slower
slow-convergence 2.3696+-0.0481 ? 2.3895+-0.0395 ?
slow-ternaries 18.4711+-0.7682 17.7951+-0.4864 might be 1.0380x faster
sorting-benchmark 18.3444+-1.2466 17.4111+-0.8316 might be 1.0536x faster
sparse-conditional 1.1342+-0.0849 ? 1.1506+-0.0581 ? might be 1.0145x slower
splice-to-remove 12.7028+-0.1211 ? 13.0920+-1.6156 ? might be 1.0306x slower
string-char-code-at 14.4113+-0.3250 ? 14.8785+-1.1738 ? might be 1.0324x slower
string-concat-object 2.1118+-0.2502 ? 2.1458+-0.1096 ? might be 1.0161x slower
string-concat-pair-object 2.1250+-0.1471 2.1235+-0.0920
string-concat-pair-simple 9.1883+-0.2785 ? 9.5192+-1.2150 ? might be 1.0360x slower
string-concat-simple 9.2237+-0.3577 ? 9.5431+-0.7862 ? might be 1.0346x slower
string-cons-repeat 6.6276+-0.2320 ? 6.8430+-0.9132 ? might be 1.0325x slower
string-cons-tower 7.0973+-1.2354 6.6324+-0.3105 might be 1.0701x faster
string-equality 15.7510+-1.1156 15.2397+-0.3823 might be 1.0335x faster
string-get-by-val-big-char 6.7985+-0.1488 6.7749+-0.0735
string-get-by-val-out-of-bounds-insane 3.3576+-0.1454 ? 3.6055+-0.4356 ? might be 1.0738x slower
string-get-by-val-out-of-bounds 4.1022+-0.2514 4.0830+-0.1206
string-get-by-val 2.8293+-0.0453 ? 2.8391+-0.0366 ?
string-hash 1.8494+-0.0948 ? 1.8549+-0.0853 ?
string-long-ident-equality 13.0720+-0.4405 12.8554+-0.2820 might be 1.0168x faster
string-out-of-bounds 10.5159+-0.0687 ? 10.6107+-0.3589 ?
string-repeat-arith 27.8732+-0.6778 ? 28.1156+-2.9581 ?
string-sub 53.8840+-0.8533 ? 55.1418+-1.1956 ? might be 1.0233x slower
string-test 2.7975+-0.1458 2.7520+-0.0193 might be 1.0165x faster
string-var-equality 27.3619+-3.1291 26.5005+-0.3071 might be 1.0325x faster
structure-hoist-over-transitions 2.5017+-0.0222 ^ 2.3370+-0.1386 ^ definitely 1.0705x faster
substring-concat-weird 35.9796+-0.3193 ? 36.4424+-1.2511 ? might be 1.0129x slower
substring-concat 39.8892+-1.1752 ? 40.0070+-1.1516 ?
substring 44.8927+-0.9225 ? 45.0358+-2.5027 ?
switch-char-constant 2.6666+-0.0729 ? 2.7071+-0.0871 ? might be 1.0152x slower
switch-char 5.8698+-0.7257 ? 5.9965+-1.2431 ? might be 1.0216x slower
switch-constant 7.2552+-0.4254 7.2294+-0.9170
switch-string-basic-big-var 16.9783+-1.0945 16.3705+-0.7798 might be 1.0371x faster
switch-string-basic-big 15.2438+-0.4688 15.1955+-0.3987
switch-string-basic-var 13.8026+-0.9479 ? 13.8973+-1.4688 ?
switch-string-basic 13.0893+-0.3455 12.8968+-0.1470 might be 1.0149x faster
switch-string-big-length-tower-var 18.1971+-0.5536 ? 18.4243+-1.3055 ? might be 1.0125x slower
switch-string-length-tower-var 13.4628+-0.5775 ? 13.5397+-0.7655 ?
switch-string-length-tower 11.8712+-0.2715 11.6989+-0.2518 might be 1.0147x faster
switch-string-short 11.9656+-0.4675 ? 12.0554+-0.4843 ?
switch 11.5325+-1.5852 11.0663+-1.1102 might be 1.0421x faster
tear-off-arguments-simple 3.1132+-0.2823 3.0938+-0.1393
tear-off-arguments 4.0973+-0.1610 4.0001+-0.2346 might be 1.0243x faster
temporal-structure 12.1111+-0.3492 ? 12.4185+-0.6006 ? might be 1.0254x slower
to-int32-boolean 13.6293+-0.5905 13.3713+-0.2321 might be 1.0193x faster
try-catch-get-by-val-cloned-arguments 14.9572+-1.0514 14.5673+-0.8545 might be 1.0268x faster
try-catch-get-by-val-direct-arguments 6.9178+-0.5014 6.7596+-0.5410 might be 1.0234x faster
try-catch-get-by-val-scoped-arguments 7.5878+-0.1259 ? 7.7501+-0.0756 ? might be 1.0214x slower
typed-array-get-set-by-val-profiling 27.6730+-0.8255 ? 27.7745+-0.7715 ?
undefined-property-access 227.8707+-3.2734 ? 228.7683+-3.6007 ?
undefined-test 2.8542+-0.0424 ? 2.8637+-0.0592 ?
unprofiled-licm 14.5680+-0.0987 14.3264+-0.5493 might be 1.0169x faster
varargs-call 14.1927+-0.4219 14.0600+-0.1391
varargs-construct-inline 22.4153+-0.4712 ? 23.2830+-2.7364 ? might be 1.0387x slower
varargs-construct 21.2656+-1.5936 20.7715+-1.0167 might be 1.0238x faster
varargs-inline 8.6055+-0.3692 8.3737+-0.0559 might be 1.0277x faster
varargs-strict-mode 9.3329+-0.4125 ? 9.3442+-0.4394 ?
varargs 9.3035+-0.2133 9.1206+-0.0768 might be 1.0201x faster
weird-inlining-const-prop 2.0820+-0.0880 ? 2.1813+-0.1202 ? might be 1.0477x slower
<geometric> 8.3777+-0.0165 ^ 7.8343+-0.0303 ^ definitely 1.0694x faster
master ic
Geomean of preferred means:
<scaled-result> 26.0979+-0.0672 ^ 25.7930+-0.1007 ^ definitely 1.0118x faster
Comment on attachment 258551 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258551&action=review Added comments. > Source/JavaScriptCore/jit/JIT.h:376 > + // Property is in regT1, base is in regT0. regT2 contains indecing type. Fixed the existing comment. > Source/JavaScriptCore/jit/JITPropertyAccess.cpp:492 > emitGetVirtualRegister(value, regT2); I think this code is a little bit fragile. It does not reload regT0. So this slow path implicitly requires regT0 (base) is not broken. Current implementation and this patch carefully follow this. But in the future, I think it may be a problem. What do you think of? Comment on attachment 258551 [details]
Patch
Let's wait the ARMv7 regression fix in get_by_val side.
Maybe, I found the issue in get_by_val. The get_by_val patch is already updated. I'll also update the patch for put_by_val (this). Created attachment 258603 [details]
Patch
After get_by_val patch is landed, I'll update this patch. Created attachment 258791 [details]
Patch
Updated the patch based on the re-landed get_by_id.
And took the benchmark results.
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on Yusukes-MacBook-Pro (MacBookPro11,3).
VMs tested:
"master" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/master-for-put-by-val2/Release/jsc
"ic" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/put-by-val2/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.
master ic
SunSpider:
3d-cube 4.7835+-0.5591 4.4779+-0.1199 might be 1.0682x faster
3d-morph 5.3038+-0.3490 ? 5.3253+-0.1222 ?
3d-raytrace 5.2064+-0.0976 5.1981+-0.1543
access-binary-trees 2.0060+-0.1707 ? 2.0084+-0.0905 ?
access-fannkuch 5.3506+-0.0372 ? 5.4952+-0.3686 ? might be 1.0270x slower
access-nbody 2.5628+-0.1533 ? 2.7791+-0.4369 ? might be 1.0844x slower
access-nsieve 3.0410+-0.0521 ? 3.0533+-0.0223 ?
bitops-3bit-bits-in-byte 1.5109+-0.0321 ? 1.5114+-0.0093 ?
bitops-bits-in-byte 3.2692+-0.1319 ? 3.4105+-0.3805 ? might be 1.0432x slower
bitops-bitwise-and 2.1240+-0.2787 2.0894+-0.0828 might be 1.0166x faster
bitops-nsieve-bits 3.0065+-0.0397 2.9736+-0.0719 might be 1.0111x faster
controlflow-recursive 2.1304+-0.2298 2.0568+-0.0440 might be 1.0358x faster
crypto-aes 3.9330+-0.2145 3.8384+-0.1323 might be 1.0247x faster
crypto-md5 2.5499+-0.1870 2.5096+-0.0863 might be 1.0161x faster
crypto-sha1 2.4342+-0.1486 2.3925+-0.3334 might be 1.0174x faster
date-format-tofte 6.7337+-0.3100 ? 6.8147+-0.6416 ? might be 1.0120x slower
date-format-xparb 4.8481+-0.6275 ? 4.8704+-0.4374 ?
math-cordic 2.9142+-0.2000 2.8021+-0.0669 might be 1.0400x faster
math-partial-sums 5.4690+-0.3496 ? 5.6627+-0.3550 ? might be 1.0354x slower
math-spectral-norm 1.8002+-0.0520 ? 1.8686+-0.0894 ? might be 1.0380x slower
regexp-dna 6.4941+-0.3978 ? 6.6597+-0.4474 ? might be 1.0255x slower
string-base64 4.2899+-0.1804 ? 4.4785+-0.1496 ? might be 1.0440x slower
string-fasta 5.8869+-0.5296 5.8682+-0.2599
string-tagcloud 8.2486+-0.1421 ? 8.4874+-0.4279 ? might be 1.0290x slower
string-unpack-code 20.2062+-0.8355 20.1170+-1.0379
string-validate-input 4.4922+-0.1832 ? 4.5705+-0.2283 ? might be 1.0174x slower
<arithmetic> 4.6383+-0.0602 ? 4.6661+-0.0201 ? might be 1.0060x slower
master ic
LongSpider:
3d-cube 836.7552+-21.1275 825.9297+-12.5855 might be 1.0131x faster
3d-morph 1591.0110+-25.0360 1568.2533+-43.6683 might be 1.0145x faster
3d-raytrace 638.2565+-10.1632 635.1079+-2.2422
access-binary-trees 829.3503+-12.8978 813.8387+-12.6002 might be 1.0191x faster
access-fannkuch 288.4608+-17.1326 283.2131+-4.0566 might be 1.0185x faster
access-nbody 531.5117+-16.5735 527.1596+-2.0257
access-nsieve 366.1274+-15.6535 353.0670+-5.2621 might be 1.0370x faster
bitops-3bit-bits-in-byte 41.5374+-0.9329 41.0822+-1.0646 might be 1.0111x faster
bitops-bits-in-byte 76.2415+-1.6024 ? 77.8485+-7.6517 ? might be 1.0211x slower
bitops-nsieve-bits 419.6123+-8.1158 417.9985+-13.4044
controlflow-recursive 437.7810+-9.6306 ? 446.6322+-19.3754 ? might be 1.0202x slower
crypto-aes 586.2492+-20.7943 ? 588.6061+-8.8953 ?
crypto-md5 514.0322+-12.2882 ? 514.8079+-4.4898 ?
crypto-sha1 659.1471+-13.0666 654.7419+-7.4059
date-format-tofte 525.7767+-11.7798 ? 530.5687+-6.6339 ?
date-format-xparb 649.4663+-25.1015 ? 668.0705+-19.4707 ? might be 1.0286x slower
hash-map 154.3851+-1.9257 ? 157.0092+-3.0970 ? might be 1.0170x slower
math-cordic 511.1750+-20.4265 ? 515.4603+-26.1989 ?
math-partial-sums 483.0878+-16.1252 ? 490.2812+-28.8804 ? might be 1.0149x slower
math-spectral-norm 581.1895+-16.5583 577.5945+-12.6434
string-base64 361.8380+-23.2236 ? 365.1520+-9.2779 ?
string-fasta 376.2711+-16.0314 376.2357+-9.9593
string-tagcloud 182.0363+-2.8089 ? 182.9106+-3.6161 ?
<geometric> 403.3920+-4.1372 403.3043+-0.9130 might be 1.0002x faster
master ic
V8Spider:
crypto 55.1956+-14.4310 50.3163+-5.3156 might be 1.0970x faster
deltablue 85.9770+-5.5507 85.3022+-4.1440
earley-boyer 41.2180+-0.8925 ? 41.8600+-1.6824 ? might be 1.0156x slower
raytrace 22.4794+-1.7199 ? 22.8006+-1.3126 ? might be 1.0143x slower
regexp 63.9345+-1.2980 ? 65.6663+-5.8255 ? might be 1.0271x slower
richards 72.1068+-3.7155 67.8063+-3.3647 might be 1.0634x faster
splay 34.1846+-2.4154 ? 34.4920+-2.8545 ?
<geometric> 49.0741+-1.6272 48.4447+-1.1064 might be 1.0130x faster
master ic
Octane:
encrypt 0.21421+-0.00603 0.20935+-0.00618 might be 1.0232x faster
decrypt 3.57799+-0.11175 3.48727+-0.04912 might be 1.0260x faster
deltablue x2 0.16268+-0.00398 0.16230+-0.00112
earley 0.28575+-0.00680 ? 0.28999+-0.00585 ? might be 1.0148x slower
boyer 4.35322+-0.13898 4.32301+-0.05973
navier-stokes x2 5.21784+-0.09176 5.21643+-0.11716
raytrace x2 1.97286+-0.01838 ? 1.99568+-0.12019 ? might be 1.0116x slower
richards x2 0.10452+-0.00092 0.10368+-0.00121
splay x2 0.35860+-0.00601 0.35659+-0.00527
regexp x2 25.65626+-0.70289 ? 26.31369+-1.37888 ? might be 1.0256x slower
pdfjs x2 38.12845+-0.54274 37.98097+-1.10631
mandreel x2 46.74470+-1.80375 46.45316+-0.60075
gbemu x2 34.97553+-0.40030 ? 35.26762+-0.83678 ?
closure 0.58308+-0.01259 ? 0.58309+-0.01992 ?
jquery 7.49882+-0.09725 ? 7.50566+-0.12799 ?
box2d x2 10.70757+-0.23400 10.59347+-0.52388 might be 1.0108x faster
zlib x2 390.90666+-4.75406 388.78428+-18.95888
typescript x2 672.88867+-17.18580 666.72113+-19.73900
<geometric> 6.08223+-0.02855 6.07091+-0.04520 might be 1.0019x faster
master ic
Kraken:
ai-astar 241.117+-7.959 231.522+-14.969 might be 1.0414x faster
audio-beat-detection 59.446+-2.556 58.669+-0.465 might be 1.0132x faster
audio-dft 100.214+-3.446 99.731+-2.004
audio-fft 35.846+-1.470 35.840+-1.046
audio-oscillator 62.492+-0.705 62.162+-0.646
imaging-darkroom 62.781+-2.483 62.728+-2.706
imaging-desaturate 54.959+-5.119 52.586+-5.405 might be 1.0451x faster
imaging-gaussian-blur 86.772+-2.336 ? 87.670+-8.535 ? might be 1.0103x slower
json-parse-financial 39.164+-0.883 ? 40.080+-2.983 ? might be 1.0234x slower
json-stringify-tinderbox 23.330+-2.530 22.873+-1.343 might be 1.0200x faster
stanford-crypto-aes 43.454+-4.654 42.908+-2.826 might be 1.0127x faster
stanford-crypto-ccm 36.002+-2.521 33.758+-1.286 might be 1.0665x faster
stanford-crypto-pbkdf2 96.904+-1.164 ? 96.915+-0.692 ?
stanford-crypto-sha256-iterative 36.997+-0.138 ? 38.177+-3.517 ? might be 1.0319x slower
<arithmetic> 69.963+-0.829 68.973+-1.304 might be 1.0144x faster
master ic
JSRegress:
abc-forward-loop-equal 30.4207+-3.5186 ? 30.5726+-3.4041 ?
abc-postfix-backward-loop 29.9561+-1.2690 29.5468+-0.6558 might be 1.0139x faster
abc-simple-backward-loop 29.3508+-0.6684 ? 29.3897+-0.5446 ?
abc-simple-forward-loop 31.0605+-3.9489 29.3627+-0.5205 might be 1.0578x faster
abc-skippy-loop 21.3950+-0.2645 21.2120+-0.5378
abs-boolean 2.4594+-0.0739 2.4310+-0.0890 might be 1.0117x faster
adapt-to-double-divide 16.2418+-0.3320 ? 16.3345+-0.2607 ?
aliased-arguments-getbyval 1.0784+-0.0582 ? 1.1391+-0.1609 ? might be 1.0563x slower
allocate-big-object 2.3633+-0.2604 2.2996+-0.2606 might be 1.0277x faster
arguments-named-and-reflective 10.8646+-0.4054 ? 11.4717+-0.7606 ? might be 1.0559x slower
arguments-out-of-bounds 9.9646+-0.1798 9.8777+-0.2948
arguments-strict-mode 9.8131+-0.2641 9.7419+-0.4836
arguments 8.5242+-0.2313 ? 8.5884+-0.4305 ?
arity-mismatch-inlining 0.7850+-0.0177 ? 0.8494+-0.0880 ? might be 1.0820x slower
array-access-polymorphic-structure 5.9320+-0.1598 ? 6.0162+-0.2467 ? might be 1.0142x slower
array-nonarray-polymorhpic-access 25.7030+-0.9099 25.0843+-0.8578 might be 1.0247x faster
array-prototype-every 78.1331+-4.1022 76.7127+-2.0246 might be 1.0185x faster
array-prototype-forEach 78.1376+-7.4765 76.4438+-3.7932 might be 1.0222x faster
array-prototype-map 84.9015+-2.7479 83.5514+-0.6070 might be 1.0162x faster
array-prototype-reduce 75.4710+-2.4078 73.9355+-4.0163 might be 1.0208x faster
array-prototype-reduceRight 71.9142+-0.8738 ? 72.5513+-2.1015 ?
array-prototype-some 79.9095+-6.5887 78.9946+-6.4999 might be 1.0116x faster
array-splice-contiguous 21.4260+-2.2243 ? 21.5881+-1.6655 ?
array-with-double-add 3.4188+-0.0797 3.3737+-0.1089 might be 1.0134x faster
array-with-double-increment 3.0841+-0.1138 3.0259+-0.0826 might be 1.0192x faster
array-with-double-mul-add 4.2560+-0.1190 4.2313+-0.2312
array-with-double-sum 3.1935+-0.1519 3.1841+-0.0544
array-with-int32-add-sub 5.9498+-0.1457 ? 6.2513+-0.6280 ? might be 1.0507x slower
array-with-int32-or-double-sum 3.2075+-0.0797 ? 3.2999+-0.1784 ? might be 1.0288x slower
ArrayBuffer-DataView-alloc-large-long-lived
28.1344+-1.6305 27.7024+-1.3283 might be 1.0156x faster
ArrayBuffer-DataView-alloc-long-lived 12.7703+-0.5118 ? 13.8033+-1.6346 ? might be 1.0809x slower
ArrayBuffer-Int32Array-byteOffset 3.9716+-0.6315 3.6786+-0.1577 might be 1.0796x faster
ArrayBuffer-Int8Array-alloc-large-long-lived
28.1896+-0.4280 27.9351+-1.0130
ArrayBuffer-Int8Array-alloc-long-lived-buffer
21.2855+-2.0320 ? 21.3679+-2.8557 ?
ArrayBuffer-Int8Array-alloc-long-lived 11.9618+-0.4369 ? 12.8780+-2.6246 ? might be 1.0766x slower
ArrayBuffer-Int8Array-alloc 10.2737+-0.2155 10.2128+-0.0523
asmjs_bool_bug 7.4133+-0.3734 7.2629+-0.2664 might be 1.0207x faster
assign-custom-setter-polymorphic 2.5928+-0.0529 2.5612+-0.1955 might be 1.0123x faster
assign-custom-setter 3.5731+-0.1231 ? 3.6130+-0.0895 ? might be 1.0112x slower
basic-set 8.1888+-0.7573 8.0779+-0.1569 might be 1.0137x faster
big-int-mul 3.4426+-0.0473 ? 3.5802+-0.2839 ? might be 1.0400x slower
boolean-test 2.9168+-0.1325 2.9041+-0.0878
branch-fold 3.6099+-0.0085 ? 3.6455+-0.0920 ?
branch-on-string-as-boolean 16.5435+-1.3815 ? 16.6172+-0.3361 ?
by-val-generic 6.1494+-0.2529 ^ 2.3788+-0.0672 ^ definitely 2.5850x faster
call-spread-apply 27.1583+-0.8721 ? 27.5195+-1.1494 ? might be 1.0133x slower
call-spread-call 21.6077+-1.0263 21.4613+-0.1214
captured-assignments 0.4230+-0.0482 ? 0.4371+-0.0507 ? might be 1.0332x slower
cast-int-to-double 5.1988+-0.2215 5.1699+-0.0803
cell-argument 6.5638+-0.6700 6.4894+-0.3780 might be 1.0115x faster
cfg-simplify 2.7955+-0.2164 ? 2.9313+-0.2660 ? might be 1.0486x slower
chain-getter-access 8.1899+-0.0975 ? 8.2327+-0.2559 ?
cmpeq-obj-to-obj-other 11.6490+-1.1922 ? 12.1970+-0.4902 ? might be 1.0470x slower
constant-test 4.9000+-0.1166 ? 4.9820+-0.2738 ? might be 1.0167x slower
create-lots-of-functions 9.2545+-0.6019 9.1605+-0.4207 might be 1.0103x faster
cse-new-array-buffer 2.2281+-0.1439 ? 2.2944+-0.1643 ? might be 1.0298x slower
cse-new-array 2.4084+-0.1203 2.2503+-0.1633 might be 1.0702x faster
DataView-custom-properties 32.9791+-1.4437 32.7305+-1.4116
delay-tear-off-arguments-strictmode 12.5924+-0.6279 12.4738+-0.5537
deltablue-varargs 154.4465+-7.5656 150.8955+-1.9331 might be 1.0235x faster
destructuring-arguments 167.0574+-3.8066 166.1065+-3.8138
destructuring-parameters-overridden-by-function
0.4642+-0.0107 0.4486+-0.0394 might be 1.0347x faster
destructuring-swap 4.8234+-0.2418 4.7875+-0.1475
direct-arguments-getbyval 1.1297+-0.0798 1.0782+-0.0484 might be 1.0477x faster
div-boolean-double 5.4870+-0.1795 5.4182+-0.0497 might be 1.0127x faster
div-boolean 8.2973+-0.0702 8.2812+-0.0899
double-get-by-val-out-of-bounds 4.1185+-0.2260 ? 4.2694+-0.1431 ? might be 1.0366x slower
double-pollution-getbyval 8.9418+-0.2861 ? 8.9512+-0.1227 ?
double-pollution-putbyoffset 3.9677+-0.5194 3.8873+-0.3436 might be 1.0207x faster
double-real-use 26.6407+-5.0986 26.0117+-2.6696 might be 1.0242x faster
double-to-int32-typed-array-no-inline 2.2863+-0.2830 2.0938+-0.0492 might be 1.0920x faster
double-to-int32-typed-array 1.8185+-0.0406 1.8158+-0.1062
double-to-uint32-typed-array-no-inline 2.1180+-0.1020 ? 2.2241+-0.0402 ? might be 1.0501x slower
double-to-uint32-typed-array 2.0063+-0.2366 1.9377+-0.2243 might be 1.0354x faster
elidable-new-object-dag 35.1503+-2.3967 34.1964+-1.1448 might be 1.0279x faster
elidable-new-object-roflcopter 32.9814+-0.4673 ? 33.8122+-1.6499 ? might be 1.0252x slower
elidable-new-object-then-call 31.8503+-1.1228 31.1902+-0.3429 might be 1.0212x faster
elidable-new-object-tree 37.4989+-0.9130 ? 37.8619+-1.5898 ?
empty-string-plus-int 4.8240+-0.0916 4.7968+-0.1696
emscripten-cube2hash 26.4540+-3.8103 ? 27.4030+-3.1305 ? might be 1.0359x slower
exit-length-on-plain-object 12.6080+-0.4229 ? 12.8876+-0.4479 ? might be 1.0222x slower
external-arguments-getbyval 1.1917+-0.1491 1.1469+-0.0154 might be 1.0390x faster
external-arguments-putbyval 2.2283+-0.1147 2.2181+-0.1335
fixed-typed-array-storage-var-index 1.1945+-0.0704 1.1547+-0.0479 might be 1.0345x faster
fixed-typed-array-storage 0.8625+-0.0246 0.8294+-0.0467 might be 1.0399x faster
Float32Array-matrix-mult 4.2921+-0.4402 4.0438+-0.3149 might be 1.0614x faster
Float32Array-to-Float64Array-set 45.8997+-1.2373 ? 47.0768+-2.0671 ? might be 1.0256x slower
Float64Array-alloc-long-lived 58.4412+-1.4192 ? 58.5718+-1.3157 ?
Float64Array-to-Int16Array-set 59.3593+-4.0435 59.3320+-1.7569
fold-double-to-int 12.7600+-0.3215 ? 12.7770+-0.4392 ?
fold-get-by-id-to-multi-get-by-offset-rare-int
10.9481+-1.2141 9.6530+-1.1566 might be 1.1342x faster
fold-get-by-id-to-multi-get-by-offset 9.3643+-0.5576 9.0266+-0.3310 might be 1.0374x faster
fold-multi-get-by-offset-to-get-by-offset
8.5377+-1.5213 7.7426+-1.8286 might be 1.1027x faster
fold-multi-get-by-offset-to-poly-get-by-offset
7.9885+-1.5092 7.9015+-2.2351 might be 1.0110x faster
fold-multi-put-by-offset-to-poly-put-by-offset
7.9266+-1.3812 ? 8.2106+-0.4392 ? might be 1.0358x slower
fold-multi-put-by-offset-to-put-by-offset
5.9677+-1.2023 ? 6.0640+-0.5600 ? might be 1.0161x slower
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
8.6280+-1.2961 8.2563+-0.6696 might be 1.0450x faster
fold-put-by-id-to-multi-put-by-offset 9.0149+-0.8574 ? 9.1357+-0.3271 ? might be 1.0134x slower
fold-put-by-val-with-string-to-multi-put-by-offset
66.4464+-2.0151 ^ 9.0206+-1.1966 ^ definitely 7.3661x faster
fold-put-by-val-with-symbol-to-multi-put-by-offset
69.3903+-4.1105 ^ 9.1848+-1.0785 ^ definitely 7.5549x faster
fold-put-structure 6.0617+-0.7470 5.7636+-0.5138 might be 1.0517x faster
for-of-iterate-array-entries 11.6996+-0.2994 11.6213+-0.3773
for-of-iterate-array-keys 3.3269+-0.0299 3.3098+-0.1325
for-of-iterate-array-values 3.4129+-0.1981 3.3538+-0.1552 might be 1.0176x faster
fround 19.8466+-0.4911 19.4609+-0.8974 might be 1.0198x faster
ftl-library-inlining-dataview 58.8506+-3.5593 57.8617+-1.8893 might be 1.0171x faster
ftl-library-inlining 112.7565+-2.7984 110.2152+-3.8195 might be 1.0231x faster
function-dot-apply 2.0640+-0.1262 2.0005+-0.0410 might be 1.0317x faster
function-test 2.6644+-0.1344 ? 2.7072+-0.2407 ? might be 1.0161x slower
function-with-eval 108.7946+-5.3004 106.7708+-1.3764 might be 1.0190x faster
gcse-poly-get-less-obvious 14.5932+-0.1884 14.5314+-0.1702
gcse-poly-get 16.5972+-0.8657 16.5384+-0.6985
gcse 3.8281+-0.0435 ? 3.8981+-0.2483 ? might be 1.0183x slower
get-by-id-bimorphic-check-structure-elimination-simple
2.6221+-0.0970 2.5762+-0.0360 might be 1.0178x faster
get-by-id-bimorphic-check-structure-elimination
6.1367+-0.3695 5.9647+-0.0529 might be 1.0288x faster
get-by-id-chain-from-try-block 5.5568+-0.3376 ? 5.7222+-0.2092 ? might be 1.0298x slower
get-by-id-check-structure-elimination 4.4759+-0.3030 ? 4.7421+-1.0019 ? might be 1.0595x slower
get-by-id-proto-or-self 14.5833+-0.5900 ? 15.0490+-0.8913 ? might be 1.0319x slower
get-by-id-quadmorphic-check-structure-elimination-simple
2.8776+-0.0396 ? 2.9685+-0.1420 ? might be 1.0316x slower
get-by-id-self-or-proto 14.6407+-0.4343 ? 15.5737+-1.6295 ? might be 1.0637x slower
get-by-val-out-of-bounds 4.0728+-0.2882 4.0267+-0.3145 might be 1.0114x faster
get-by-val-with-string-bimorphic-check-structure-elimination-simple
2.8942+-0.0968 2.8776+-0.1237
get-by-val-with-string-bimorphic-check-structure-elimination
6.2343+-0.1063 6.2162+-0.0831
get-by-val-with-string-chain-from-try-block
5.7051+-0.4995 5.5408+-0.0784 might be 1.0296x faster
get-by-val-with-string-check-structure-elimination
5.2142+-0.1461 5.1998+-0.1782
get-by-val-with-string-proto-or-self 14.7446+-0.4795 14.6557+-0.6380
get-by-val-with-string-quadmorphic-check-structure-elimination-simple
3.1765+-0.1339 ? 3.2645+-0.1719 ? might be 1.0277x slower
get-by-val-with-string-self-or-proto 16.0129+-2.4384 15.9579+-2.4149
get-by-val-with-symbol-bimorphic-check-structure-elimination-simple
3.0168+-0.0548 ? 3.0315+-0.0376 ?
get-by-val-with-symbol-bimorphic-check-structure-elimination
12.5020+-0.1487 ? 12.5836+-0.1556 ?
get-by-val-with-symbol-chain-from-try-block
5.6441+-0.1045 5.6306+-0.1031
get-by-val-with-symbol-check-structure-elimination
11.5818+-0.5928 11.3604+-0.4770 might be 1.0195x faster
get-by-val-with-symbol-proto-or-self 14.8860+-0.2004 ? 15.1407+-1.6836 ? might be 1.0171x slower
get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple
4.0162+-0.1118 ? 4.0366+-0.2368 ?
get-by-val-with-symbol-self-or-proto 14.8101+-0.8663 ? 15.6434+-1.5701 ? might be 1.0563x slower
get_callee_monomorphic 2.5562+-0.6468 2.4752+-0.2525 might be 1.0327x faster
get_callee_polymorphic 3.2980+-0.1991 3.1816+-0.2178 might be 1.0366x faster
getter-no-activation 4.8550+-0.2324 ? 5.1459+-0.4497 ? might be 1.0599x slower
getter-prototype 10.0082+-0.3072 ? 10.1360+-1.0966 ? might be 1.0128x slower
getter-richards 121.3746+-9.8202 ? 124.8890+-4.0976 ? might be 1.0290x slower
getter 5.4423+-0.4604 5.2927+-0.0975 might be 1.0283x faster
global-object-access-with-mutating-structure
5.6146+-0.5311 ? 5.7203+-0.1983 ? might be 1.0188x slower
global-var-const-infer-fire-from-opt 0.8462+-0.1737 ? 0.9050+-0.1021 ? might be 1.0695x slower
global-var-const-infer 0.7635+-0.1149 0.7018+-0.0469 might be 1.0880x faster
HashMap-put-get-iterate-keys 27.4141+-2.7462 25.5320+-3.3546 might be 1.0737x faster
HashMap-put-get-iterate 26.6028+-0.7866 ? 26.7569+-2.0420 ?
HashMap-string-put-get-iterate 24.8033+-0.2596 ? 25.4359+-1.7637 ? might be 1.0255x slower
hoist-make-rope 8.0048+-1.3946 ? 8.2037+-1.5820 ? might be 1.0248x slower
hoist-poly-check-structure-effectful-loop
4.1225+-0.0434 ? 4.4717+-0.5218 ? might be 1.0847x slower
hoist-poly-check-structure 3.3285+-0.2082 ? 3.3333+-0.0976 ?
imul-double-only 6.7031+-0.2838 ? 6.8803+-0.2693 ? might be 1.0264x slower
imul-int-only 7.9868+-0.4347 7.9595+-0.5232
imul-mixed 6.6873+-0.6495 6.5135+-0.3703 might be 1.0267x faster
in-four-cases 17.7727+-0.5785 ? 17.8608+-1.2742 ?
in-one-case-false 9.3367+-0.2883 9.3104+-0.3333
in-one-case-true 9.3683+-0.3129 9.3635+-0.3227
in-two-cases 9.7913+-0.2443 9.7766+-0.1341
indexed-properties-in-objects 2.8030+-0.0333 2.7928+-0.0404
infer-closure-const-then-mov-no-inline 3.2415+-0.3664 ? 3.7240+-0.6667 ? might be 1.1489x slower
infer-closure-const-then-mov 17.5105+-1.1719 ? 17.6900+-0.2938 ? might be 1.0103x slower
infer-closure-const-then-put-to-scope-no-inline
11.6285+-1.1157 11.2753+-0.4030 might be 1.0313x faster
infer-closure-const-then-put-to-scope 21.9205+-0.5546 ? 21.9351+-0.7701 ?
infer-closure-const-then-reenter-no-inline
51.6376+-1.2520 ? 53.3860+-6.6140 ? might be 1.0339x slower
infer-closure-const-then-reenter 23.3280+-3.3668 22.2540+-1.0271 might be 1.0483x faster
infer-constant-global-property 3.4418+-0.1357 ? 3.6636+-0.5436 ? might be 1.0644x slower
infer-constant-property 2.6674+-0.1393 2.6190+-0.0691 might be 1.0185x faster
infer-one-time-closure-ten-vars 8.7757+-1.1701 8.4888+-0.3970 might be 1.0338x faster
infer-one-time-closure-two-vars 7.9174+-0.2729 ? 8.3086+-0.4876 ? might be 1.0494x slower
infer-one-time-closure 8.1741+-0.8396 8.1252+-0.7522
infer-one-time-deep-closure 12.8452+-0.3913 ? 12.8685+-0.6968 ?
inline-arguments-access 3.7232+-0.3493 3.6741+-0.2809 might be 1.0134x faster
inline-arguments-aliased-access 3.6613+-0.1769 ? 3.7440+-0.2030 ? might be 1.0226x slower
inline-arguments-local-escape 3.6514+-0.1854 ? 3.6514+-0.1585 ?
inline-get-scoped-var 4.9023+-0.3562 4.8287+-0.0636 might be 1.0152x faster
inlined-put-by-id-transition 10.2627+-0.3884 9.8281+-1.0958 might be 1.0442x faster
inlined-put-by-val-with-string-transition
113.4969+-2.9352 ^ 75.2108+-1.6511 ^ definitely 1.5091x faster
inlined-put-by-val-with-symbol-transition
115.8724+-1.5557 ^ 72.8320+-1.1636 ^ definitely 1.5910x faster
int-or-other-abs-then-get-by-val 4.8403+-0.0837 ? 4.9946+-0.2007 ? might be 1.0319x slower
int-or-other-abs-zero-then-get-by-val 16.3602+-0.2597 16.2937+-0.3449
int-or-other-add-then-get-by-val 4.1599+-0.0867 ? 4.1654+-0.0890 ?
int-or-other-add 5.0682+-0.3340 4.9832+-0.3326 might be 1.0171x faster
int-or-other-div-then-get-by-val 3.8398+-0.2257 3.8215+-0.1520
int-or-other-max-then-get-by-val 4.1185+-0.1425 ? 4.1250+-0.2253 ?
int-or-other-min-then-get-by-val 4.0475+-0.0271 ? 4.1122+-0.1682 ? might be 1.0160x slower
int-or-other-mod-then-get-by-val 3.7261+-0.1946 3.5557+-0.1226 might be 1.0479x faster
int-or-other-mul-then-get-by-val 3.7337+-0.1787 ? 3.7847+-0.2092 ? might be 1.0137x slower
int-or-other-neg-then-get-by-val 4.5055+-0.1435 ? 4.5714+-0.2538 ? might be 1.0146x slower
int-or-other-neg-zero-then-get-by-val 16.6490+-0.7155 16.3929+-1.3004 might be 1.0156x faster
int-or-other-sub-then-get-by-val 4.2081+-0.1585 4.1754+-0.1862
int-or-other-sub 3.5267+-0.1883 3.4370+-0.0400 might be 1.0261x faster
int-overflow-local 4.4567+-0.4171 4.3351+-0.0814 might be 1.0280x faster
Int16Array-alloc-long-lived 43.0228+-1.5034 43.0153+-1.6439
Int16Array-bubble-sort-with-byteLength 20.0147+-0.5400 ^ 18.0602+-0.5974 ^ definitely 1.1082x faster
Int16Array-bubble-sort 20.2470+-2.2290 18.0142+-0.7518 might be 1.1239x faster
Int16Array-load-int-mul 1.4462+-0.0774 ? 1.4872+-0.1126 ? might be 1.0283x slower
Int16Array-to-Int32Array-set 45.2297+-3.6748 43.4820+-0.5739 might be 1.0402x faster
Int32Array-alloc-large 12.3084+-0.9543 ? 12.3715+-0.7181 ?
Int32Array-alloc-long-lived 48.1345+-2.3172 47.7355+-1.1425
Int32Array-alloc 2.6729+-0.2375 ? 2.8467+-0.3669 ? might be 1.0651x slower
Int32Array-Int8Array-view-alloc 6.2802+-0.1626 ? 6.4185+-0.5336 ? might be 1.0220x slower
int52-spill 4.7600+-0.1683 4.6898+-0.1810 might be 1.0150x faster
Int8Array-alloc-long-lived 37.8097+-1.4122 ? 38.2945+-1.4213 ? might be 1.0128x slower
Int8Array-load-with-byteLength 3.5747+-0.2141 ? 3.5778+-0.1805 ?
Int8Array-load 3.4385+-0.1602 3.4382+-0.0611
integer-divide 10.6865+-0.1968 10.5795+-0.0496 might be 1.0101x faster
integer-modulo 1.6740+-0.1441 ? 1.6763+-0.0371 ?
is-boolean-fold-tricky 3.9280+-0.5351 3.7242+-0.0715 might be 1.0547x faster
is-boolean-fold 2.6158+-0.0345 ? 2.6631+-0.0867 ? might be 1.0181x slower
is-function-fold-tricky-internal-function
9.9630+-0.2591 ? 10.0500+-0.1926 ?
is-function-fold-tricky 4.2075+-0.2905 4.0880+-0.0589 might be 1.0292x faster
is-function-fold 2.6428+-0.0509 2.6298+-0.1222
is-number-fold-tricky 4.0707+-0.2041 ? 4.0734+-0.1177 ?
is-number-fold 2.7197+-0.1813 2.6761+-0.1556 might be 1.0163x faster
is-object-or-null-fold-functions 2.8170+-0.4480 2.6567+-0.0172 might be 1.0603x faster
is-object-or-null-fold-less-tricky 4.1339+-0.1980 ? 4.2045+-0.1731 ? might be 1.0171x slower
is-object-or-null-fold-tricky 5.5187+-0.2800 5.2793+-0.1054 might be 1.0454x faster
is-object-or-null-fold 2.7286+-0.1072 2.6480+-0.0284 might be 1.0304x faster
is-object-or-null-trickier-function 4.2444+-0.0516 4.2431+-0.2746
is-object-or-null-trickier-internal-function
10.6367+-0.3694 10.4359+-0.1287 might be 1.0192x faster
is-object-or-null-tricky-function 4.3088+-0.5403 4.2480+-0.2286 might be 1.0143x faster
is-object-or-null-tricky-internal-function
7.7950+-0.1434 ? 7.8079+-0.2492 ?
is-string-fold-tricky 4.1037+-0.2519 4.0950+-0.1644
is-string-fold 2.6072+-0.0672 ? 2.7101+-0.1028 ? might be 1.0395x slower
is-undefined-fold-tricky 3.2855+-0.0337 ? 3.2945+-0.1271 ?
is-undefined-fold 2.6392+-0.1220 ? 2.6809+-0.1197 ? might be 1.0158x slower
JSONP-negative-0 0.2442+-0.0083 ? 0.2455+-0.0131 ?
large-int-captured 3.8880+-0.4350 3.8615+-0.1630
large-int-neg 14.3981+-0.1985 ? 15.3138+-1.1064 ? might be 1.0636x slower
large-int 14.4443+-1.5970 13.8995+-0.3446 might be 1.0392x faster
load-varargs-elimination 22.1561+-1.5405 20.8760+-0.5470 might be 1.0613x faster
logical-not-weird-types 2.9675+-0.1324 2.9150+-0.0775 might be 1.0180x faster
logical-not 4.3093+-0.0574 ? 4.3489+-0.1351 ?
lots-of-fields 9.4321+-0.2805 ? 9.5175+-0.6506 ?
make-indexed-storage 2.7640+-0.2955 ? 2.8398+-0.1465 ? might be 1.0274x slower
make-rope-cse 3.9323+-0.2983 3.6565+-0.2885 might be 1.0754x faster
marsaglia-larger-ints 32.9594+-2.6742 32.6393+-0.5669
marsaglia-osr-entry 21.2010+-0.8463 ? 22.2730+-2.1657 ? might be 1.0506x slower
math-with-out-of-bounds-array-values 22.8708+-3.1505 22.2825+-0.3013 might be 1.0264x faster
max-boolean 2.7102+-0.0614 ? 2.7190+-0.1102 ?
method-on-number 16.6821+-0.1489 ? 18.1460+-2.2751 ? might be 1.0878x slower
min-boolean 2.7454+-0.0787 ? 2.7633+-0.1292 ?
minus-boolean-double 3.1472+-0.1426 3.1260+-0.0744
minus-boolean 2.2997+-0.0613 ? 2.5505+-0.4292 ? might be 1.1090x slower
misc-strict-eq 31.2397+-0.5981 31.2242+-1.0330
mod-boolean-double 11.5528+-0.4133 11.3300+-0.3689 might be 1.0197x faster
mod-boolean 8.4568+-0.2518 ? 8.6425+-0.4129 ? might be 1.0220x slower
mul-boolean-double 3.6710+-0.0654 ? 3.7640+-0.2778 ? might be 1.0253x slower
mul-boolean 2.7670+-0.0547 ? 2.8477+-0.0861 ? might be 1.0292x slower
neg-boolean 3.1082+-0.0785 3.0692+-0.0709 might be 1.0127x faster
negative-zero-divide 0.3542+-0.0732 0.3186+-0.0040 might be 1.1119x faster
negative-zero-modulo 0.3535+-0.0320 0.3228+-0.0050 might be 1.0949x faster
negative-zero-negate 0.3101+-0.0263 0.3085+-0.0263
nested-function-parsing 42.9380+-0.8578 ? 43.1874+-3.3770 ?
new-array-buffer-dead 89.7038+-1.6329 88.6490+-0.5644 might be 1.0119x faster
new-array-buffer-push 5.9844+-0.3940 5.9097+-0.4161 might be 1.0126x faster
new-array-dead 13.9341+-0.7371 13.8020+-0.8735
new-array-push 3.5596+-0.2698 3.4985+-0.2288 might be 1.0175x faster
no-inline-constructor 32.2123+-1.9255 31.5076+-0.6167 might be 1.0224x faster
number-test 2.8126+-0.0326 ? 2.8601+-0.0716 ? might be 1.0169x slower
object-closure-call 5.0543+-0.4320 5.0018+-0.4305 might be 1.0105x faster
object-get-own-property-symbols-on-large-array
3.8403+-0.2344 3.5911+-0.1806 might be 1.0694x faster
object-test 2.5922+-0.0936 ? 2.6271+-0.0536 ? might be 1.0135x slower
obvious-sink-pathology-taken 101.8335+-2.2668 101.0276+-0.5741
obvious-sink-pathology 96.9016+-0.6491 96.8526+-1.6090
obviously-elidable-new-object 29.2731+-2.0336 27.8242+-2.1716 might be 1.0521x faster
plus-boolean-arith 2.4063+-0.1132 2.3744+-0.0493 might be 1.0134x faster
plus-boolean-double 3.1262+-0.2352 3.0864+-0.0911 might be 1.0129x faster
plus-boolean 2.5908+-0.0624 ? 2.5991+-0.1603 ?
poly-chain-access-different-prototypes-simple
3.2959+-0.1144 3.2343+-0.1098 might be 1.0190x faster
poly-chain-access-different-prototypes 2.8756+-0.0483 ? 2.9127+-0.0600 ? might be 1.0129x slower
poly-chain-access-simpler 3.3681+-0.3544 3.2745+-0.1212 might be 1.0286x faster
poly-chain-access 3.3468+-0.1107 3.3390+-0.0364
poly-stricteq 51.2652+-0.9369 ? 51.3693+-1.3195 ?
polymorphic-array-call 1.2632+-0.0658 ? 1.3308+-0.0772 ? might be 1.0535x slower
polymorphic-get-by-id 2.7952+-0.0789 ? 2.7968+-0.0690 ?
polymorphic-put-by-id 25.8075+-1.1297 25.3528+-1.7042 might be 1.0179x faster
polymorphic-put-by-val-with-string 363.6154+-9.6330 ^ 27.8351+-2.9592 ^ definitely 13.0632x faster
polymorphic-put-by-val-with-symbol 389.7329+-16.8297 ^ 26.5987+-0.9531 ^ definitely 14.6523x faster
polymorphic-structure 13.5520+-0.0862 13.3789+-0.1740 might be 1.0129x faster
polyvariant-monomorphic-get-by-id 6.6448+-0.6484 6.4723+-0.5253 might be 1.0267x faster
proto-getter-access 8.1575+-0.2432 ? 8.1928+-0.1704 ?
prototype-access-with-mutating-prototype 5.4362+-0.4054 ? 5.7037+-0.7029 ? might be 1.0492x slower
put-by-id-replace-and-transition 7.7102+-0.5653 7.0806+-0.4895 might be 1.0889x faster
put-by-id-slightly-polymorphic 2.7327+-0.1866 2.7192+-0.1200
put-by-id 9.6223+-0.2077 ? 9.7433+-0.4443 ? might be 1.0126x slower
put-by-val-direct 0.3199+-0.0167 ? 0.3469+-0.0534 ? might be 1.0845x slower
put-by-val-large-index-blank-indexing-type
5.2581+-0.4053 ? 5.5893+-0.3809 ? might be 1.0630x slower
put-by-val-machine-int 2.3729+-0.1866 ? 2.3870+-0.1882 ?
put-by-val-with-string-replace-and-transition
87.7953+-5.9126 ^ 10.1464+-0.3603 ^ definitely 8.6529x faster
put-by-val-with-string-slightly-polymorphic
33.6233+-1.0861 ^ 2.8926+-0.2251 ^ definitely 11.6240x faster
put-by-val-with-string 86.0762+-6.6056 ^ 10.3429+-1.1055 ^ definitely 8.3223x faster
put-by-val-with-symbol-replace-and-transition
87.9910+-9.1864 ^ 11.4424+-0.3748 ^ definitely 7.6899x faster
put-by-val-with-symbol-slightly-polymorphic
32.9027+-1.1053 ^ 3.0971+-0.1209 ^ definitely 10.6237x faster
put-by-val-with-symbol 82.1315+-1.1424 ^ 10.2524+-0.5991 ^ definitely 8.0110x faster
rare-osr-exit-on-local 14.9467+-0.3756 14.9382+-0.3717
register-pressure-from-osr 16.7762+-0.9383 ? 16.9037+-0.3588 ?
repeat-multi-get-by-offset 22.8320+-2.2132 22.4648+-0.7937 might be 1.0163x faster
setter-prototype 7.4230+-0.1434 ? 7.5397+-0.3293 ? might be 1.0157x slower
setter 5.4998+-0.5423 ? 5.8981+-0.5576 ? might be 1.0724x slower
simple-activation-demo 25.1650+-1.1333 ? 25.3315+-1.7973 ?
simple-getter-access 10.7664+-0.8219 10.5552+-0.3087 might be 1.0200x faster
simple-poly-call-nested 8.4214+-0.3904 ? 8.4803+-1.4038 ?
simple-poly-call 1.2958+-0.0921 1.2657+-0.1790 might be 1.0237x faster
sin-boolean 17.9883+-0.5439 ? 18.1531+-0.7382 ?
singleton-scope 63.6418+-4.0311 61.8835+-1.3434 might be 1.0284x faster
sink-function 9.8258+-0.4924 9.7692+-0.6748
sink-huge-activation 15.9443+-0.6513 ? 16.0815+-1.0086 ?
sinkable-new-object-dag 56.6597+-1.3592 55.4562+-0.6962 might be 1.0217x faster
sinkable-new-object-taken 42.9341+-0.6443 ? 43.5657+-2.2804 ? might be 1.0147x slower
sinkable-new-object 30.3599+-2.0341 29.6320+-0.7412 might be 1.0246x faster
slow-array-profile-convergence 2.7775+-0.4832 2.7106+-0.2497 might be 1.0247x faster
slow-convergence 2.5590+-0.3282 2.4441+-0.1049 might be 1.0470x faster
slow-ternaries 17.8310+-0.7020 ? 18.0041+-0.2527 ?
sorting-benchmark 17.7008+-1.1402 ? 18.6253+-3.3963 ? might be 1.0522x slower
sparse-conditional 1.1530+-0.0669 ? 1.1700+-0.0366 ? might be 1.0148x slower
splice-to-remove 12.6245+-0.8439 12.1635+-0.5963 might be 1.0379x faster
string-char-code-at 14.5536+-0.2931 ? 14.7928+-0.4039 ? might be 1.0164x slower
string-concat-object 2.2286+-0.2026 2.1703+-0.2057 might be 1.0269x faster
string-concat-pair-object 2.3052+-0.2176 2.0967+-0.2825 might be 1.0995x faster
string-concat-pair-simple 9.1679+-0.3148 ? 9.3113+-0.3154 ? might be 1.0156x slower
string-concat-simple 9.4254+-0.4866 9.2645+-0.2957 might be 1.0174x faster
string-cons-repeat 6.7887+-1.3811 6.5272+-0.1456 might be 1.0401x faster
string-cons-tower 7.5748+-2.3902 6.7133+-0.5477 might be 1.1283x faster
string-equality 16.1498+-2.3893 15.5743+-0.4963 might be 1.0370x faster
string-get-by-val-big-char 6.9600+-0.4176 6.7378+-0.0894 might be 1.0330x faster
string-get-by-val-out-of-bounds-insane 3.4255+-0.3439 3.3853+-0.2539 might be 1.0119x faster
string-get-by-val-out-of-bounds 4.0610+-0.2671 ? 4.0889+-0.1711 ?
string-get-by-val 2.7915+-0.0743 ? 2.9331+-0.2236 ? might be 1.0507x slower
string-hash 1.8417+-0.0296 ? 1.9033+-0.1347 ? might be 1.0334x slower
string-long-ident-equality 12.7574+-0.3292 ? 13.3976+-1.4838 ? might be 1.0502x slower
string-out-of-bounds 10.4902+-0.4300 10.2953+-0.1293 might be 1.0189x faster
string-repeat-arith 28.9441+-3.5250 28.2797+-1.0284 might be 1.0235x faster
string-sub 56.2777+-1.2771 54.6345+-1.4681 might be 1.0301x faster
string-test 2.7452+-0.0371 2.7245+-0.0936
string-var-equality 27.4783+-3.0983 27.3992+-3.2982
structure-hoist-over-transitions 2.3610+-0.1594 ? 2.4357+-0.1107 ? might be 1.0316x slower
substring-concat-weird 36.4015+-0.7329 ? 37.2979+-2.6875 ? might be 1.0246x slower
substring-concat 41.5767+-4.0379 39.4585+-0.8074 might be 1.0537x faster
substring 46.5780+-1.9989 46.3568+-4.0786
switch-char-constant 2.7561+-0.1282 ? 2.7746+-0.0504 ?
switch-char 6.2315+-0.6797 5.9367+-1.0066 might be 1.0497x faster
switch-constant 7.2404+-0.1664 ? 7.2517+-0.6493 ?
switch-string-basic-big-var 16.4704+-0.8372 ? 16.7288+-1.3050 ? might be 1.0157x slower
switch-string-basic-big 15.6505+-1.0940 15.3030+-0.2589 might be 1.0227x faster
switch-string-basic-var 13.3815+-0.2674 ? 13.6429+-0.6771 ? might be 1.0195x slower
switch-string-basic 13.2849+-0.7692 ? 13.2880+-0.4919 ?
switch-string-big-length-tower-var 18.1430+-0.1587 ? 18.1996+-0.4947 ?
switch-string-length-tower-var 13.7699+-1.2697 ? 13.8521+-1.8614 ?
switch-string-length-tower 12.1495+-0.1803 12.0515+-0.3668
switch-string-short 12.0372+-0.3859 ? 12.1193+-0.2723 ?
switch 11.4389+-0.4885 ? 11.7690+-1.1770 ? might be 1.0289x slower
tear-off-arguments-simple 2.9457+-0.1369 2.9124+-0.2543 might be 1.0115x faster
tear-off-arguments 4.0392+-0.2020 ? 4.2564+-0.1024 ? might be 1.0538x slower
temporal-structure 12.3824+-0.3336 12.1137+-0.1337 might be 1.0222x faster
to-int32-boolean 13.7756+-1.1365 13.4539+-0.1519 might be 1.0239x faster
try-catch-get-by-val-cloned-arguments 14.6117+-0.7250 14.4850+-0.9222
try-catch-get-by-val-direct-arguments 6.8022+-0.4926 6.2780+-0.1237 might be 1.0835x faster
try-catch-get-by-val-scoped-arguments 7.8057+-0.7513 7.5796+-0.1226 might be 1.0298x faster
typed-array-get-set-by-val-profiling 27.6259+-0.8796 ? 27.6599+-1.4222 ?
undefined-property-access 233.3607+-9.6968 232.7073+-2.8755
undefined-test 2.8510+-0.0436 ? 2.8795+-0.1710 ?
unprofiled-licm 14.5299+-0.4930 14.2424+-0.8414 might be 1.0202x faster
varargs-call 14.1352+-0.3861 14.1260+-0.2976
varargs-construct-inline 23.1499+-2.6409 22.6848+-1.0342 might be 1.0205x faster
varargs-construct 20.1577+-0.9943 ? 20.5761+-0.3606 ? might be 1.0208x slower
varargs-inline 8.6895+-0.6069 8.5875+-0.2457 might be 1.0119x faster
varargs-strict-mode 9.4213+-0.2786 9.1904+-0.3502 might be 1.0251x faster
varargs 9.4245+-0.7268 9.2122+-0.2051 might be 1.0230x faster
weird-inlining-const-prop 2.1864+-0.2612 ? 2.4000+-0.4780 ? might be 1.0977x slower
<geometric> 8.4161+-0.0189 ^ 7.8552+-0.0353 ^ definitely 1.0714x faster
master ic
Geomean of preferred means:
<scaled-result> 26.2713+-0.1074 ^ 25.8708+-0.0888 ^ definitely 1.0155x faster
Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review > Source/JavaScriptCore/jit/JITPropertyAccess.cpp:493 > + emitGetVirtualRegister(base, regT0); In this slow path, only |base| register was not reloaded. Essentially, this line is not needed. Since the current fast path carefully reserve the content of the |base|. So this line is not needed. But I think missing this line may cause some problems in the future. Since this is the slow path and the slow path is already slow, taking the conservative implementation (inserting this line) is not bad I think. Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review > Source/JavaScriptCore/jit/JITPropertyAccess.cpp:452 > + doneCases.append(jump()); Here, in get_by_val, doneCases are split into fastDoneCase and nextHotPathCase. But since put_by_val has no difference between done and nextHotPath, we just link the all successful cases to done label. Is it preferable keeping them split? Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review >> Source/JavaScriptCore/jit/JITPropertyAccess.cpp:452 >> + doneCases.append(jump()); > > Here, in get_by_val, doneCases are split into fastDoneCase and nextHotPathCase. > But since put_by_val has no difference between done and nextHotPath, we just link the all successful cases to done label. > Is it preferable keeping them split? I think this is fine. Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review Thank you for your review. >>> Source/JavaScriptCore/jit/JITPropertyAccess.cpp:452 >>> + doneCases.append(jump()); >> >> Here, in get_by_val, doneCases are split into fastDoneCase and nextHotPathCase. >> But since put_by_val has no difference between done and nextHotPath, we just link the all successful cases to done label. >> Is it preferable keeping them split? > > I think this is fine. I see :) Committed r188696: <http://trac.webkit.org/changeset/188696> It appears that this change caused the tests below to fail on 32bit iOS.
jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-int16array.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-int32array-overflow-values.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-int32array.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-int8array.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-uint16array.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-uint32array-overflow-values.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-uint32array.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-uint8array.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/dfg-uint8clampedarray.js.layout-no-llint
jsc-layout-tests.yaml/js/script-tests/regress-141098.js.layout-no-llint
In all cases, the tests crash because they run out of executable memory. Here is the traceback of one of the test:
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: Ran out of executable memory while allocating 1484 bytes.
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 1 0x433c4f JSC::LinkBuffer::allocate(unsigned long, void*, JSC::JITCompilationEffort)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 2 0x433cdd void JSC::LinkBuffer::copyCompactAndLinkCode<unsigned short>(JSC::MacroAssembler&, void*, JSC::JITCompilationEffort)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 3 0x35df49 JSC::JIT::privateCompile(JSC::JITCompilationEffort)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 4 0x2fc531 JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 5 0x3560cd JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::ExecState*, JSC::JSValue, JSC::JSScope*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 6 0x355f63 JSC::eval(JSC::ExecState*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 7 0x37cfaf operationCallEval
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 8 0x7c45495
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 9 0x7c3fb99
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 10 0x4490d1 vmEntryToJavaScript
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 11 0x36af0b JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 12 0x358c31 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 13 0x1fda8f JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&, JSC::JSValue, WTF::NakedPtr<JSC::Exception>&)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 14 0x795f1 jscmain(int, char**)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 15 0x7910b main
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 16 0x34191873 <redacted>
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: ./test_script_855: line 2: 13988 Segmentation fault: 11 "$@" /System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false --enableFunctionDotArguments\=true --useLLInt\=false resources/standalone-pre.js dfg-float32array.js resources/standalone-post.js
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: ERROR: Unexpected exit code: 139
Given that all of these failures are when testing with the LLInt turned off, they are benign. With the LLInt on, these out of memory errors would cause the JavaScript code being compiled to execute in the LLInt. Also, it is quite possible that we wouldn't be using that much executable memory in the first place.
I filed <https://bugs.webkit.org/show_bug.cgi?id=148273> to change these tests to not run the "no-llint" variants on iOS 32 bit.
(In reply to comment #20) > It appears that this change caused the tests below to fail on 32bit iOS. > > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-int16array.js.layout-no-llint > > jsc-layout-tests.yaml/js/script-tests/dfg-int32array-overflow-values.js. > layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-int32array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-int8array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-uint16array.js.layout-no-llint > > jsc-layout-tests.yaml/js/script-tests/dfg-uint32array-overflow-values.js. > layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-uint32array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-uint8array.js.layout-no-llint > > jsc-layout-tests.yaml/js/script-tests/dfg-uint8clampedarray.js.layout-no- > llint > jsc-layout-tests.yaml/js/script-tests/regress-141098.js.layout-no-llint > > In all cases, the tests crash because they run out of executable memory. > Here is the traceback of one of the test: > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > Ran out of executable memory while allocating 1484 bytes. > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 1 > 0x433c4f JSC::LinkBuffer::allocate(unsigned long, void*, > JSC::JITCompilationEffort) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 2 > 0x433cdd void JSC::LinkBuffer::copyCompactAndLinkCode<unsigned > short>(JSC::MacroAssembler&, void*, JSC::JITCompilationEffort) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 3 > 0x35df49 JSC::JIT::privateCompile(JSC::JITCompilationEffort) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 4 > 0x2fc531 JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, > JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 5 > 0x3560cd JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::ExecState*, > JSC::JSValue, JSC::JSScope*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 6 > 0x355f63 JSC::eval(JSC::ExecState*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 7 > 0x37cfaf operationCallEval > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 8 > 0x7c45495 > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 9 > 0x7c3fb99 > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 10 0x4490d1 vmEntryToJavaScript > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 11 0x36af0b JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 12 0x358c31 JSC::Interpreter::execute(JSC::ProgramExecutable*, > JSC::ExecState*, JSC::JSObject*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 13 0x1fda8f JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&, > JSC::JSValue, WTF::NakedPtr<JSC::Exception>&) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 14 0x795f1 jscmain(int, char**) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 15 0x7910b main > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 16 0x34191873 <redacted> > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > ./test_script_855: line 2: 13988 Segmentation fault: 11 "$@" > /System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc > --useFTLJIT\=false --enableFunctionDotArguments\=true --useLLInt\=false > resources/standalone-pre.js dfg-float32array.js resources/standalone-post.js > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > ERROR: Unexpected exit code: 139 > > Given that all of these failures are when testing with the LLInt turned off, > they are benign. With the LLInt on, these out of memory errors would cause > the JavaScript code being compiled to execute in the LLInt. Also, it is > quite possible that we wouldn't be using that much executable memory in the > first place. > > I filed <https://bugs.webkit.org/show_bug.cgi?id=148273> to change these > tests to not run the "no-llint" variants on iOS 32 bit. Thank you. I'll investigate it soon. |