| Summary: | Use the default hash value for Symbolized StringImpl | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Yusuke Suzuki <ysuzuki> | ||||||||||
| Component: | JavaScriptCore | Assignee: | Yusuke Suzuki <ysuzuki> | ||||||||||
| Status: | RESOLVED FIXED | ||||||||||||
| Severity: | Normal | CC: | benjamin, cmarcelo, commit-queue, darin, fpizlo, ggaren | ||||||||||
| Priority: | P2 | ||||||||||||
| Version: | 528+ (Nightly build) | ||||||||||||
| Hardware: | Unspecified | ||||||||||||
| OS: | Unspecified | ||||||||||||
| Attachments: |
|
||||||||||||
|
Description
Yusuke Suzuki
2015-04-28 12:40:06 PDT
https://bugs.webkit.org/show_bug.cgi?id=143947 is the example. Symbolized StringImpl* will be exposed easily to the outside of JavaScriptCore. https://bugs.webkit.org/show_bug.cgi?id=144310 When only using private symbols, they are not exposed to the outside of JSC, so we can handle it carefully. But now, it's extended to symbols. So I think storing a special hash value in StringImpl* may cause an error. Created attachment 251881 [details]
Patch
Created attachment 251882 [details]
Patch
I'll take performance results. Performance results.
Environment: Linux gpgpu 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Build: gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2 and FTL JIT support with LLVM 3.5
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, and JSRegress on gpgpu.
VMs tested:
"Conf#1" at /home/yusuke/dev/WebKit/WebKitBuild/master-now/Release/bin/jsc
"Conf#2" at /home/yusuke/dev/WebKit/WebKitBuild/hash/Release/bin/jsc
Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.
Conf#1 Conf#2
SunSpider:
3d-cube 10.8254+-2.4659 ? 11.7123+-6.0484 ? might be 1.0819x slower
3d-morph 19.5381+-5.4295 18.2028+-0.6494 might be 1.0734x faster
3d-raytrace 10.3842+-3.5404 9.0161+-3.2748 might be 1.1517x faster
access-binary-trees 3.7852+-1.0418 ? 4.4332+-1.2862 ? might be 1.1712x slower
access-fannkuch 13.1765+-5.3471 ? 13.7745+-2.6469 ? might be 1.0454x slower
access-nbody 4.9164+-1.5810 3.8182+-2.4937 might be 1.2876x faster
access-nsieve 4.2885+-1.1382 ? 4.4374+-0.3055 ? might be 1.0347x slower
bitops-3bit-bits-in-byte 2.4379+-1.0119 ? 2.7963+-0.0628 ? might be 1.1470x slower
bitops-bits-in-byte 6.0261+-1.0510 5.1448+-1.8487 might be 1.1713x faster
bitops-bitwise-and 3.4565+-0.5784 2.9476+-0.6496 might be 1.1727x faster
bitops-nsieve-bits 6.6641+-1.1693 6.3698+-2.6636 might be 1.0462x faster
controlflow-recursive 3.9388+-1.9022 3.6484+-1.8012 might be 1.0796x faster
crypto-aes 6.3726+-2.9546 5.1721+-0.7736 might be 1.2321x faster
crypto-md5 4.1027+-1.9984 ? 5.6243+-4.0062 ? might be 1.3709x slower
crypto-sha1 5.6815+-1.3698 5.0410+-2.5660 might be 1.1271x faster
date-format-tofte 12.3796+-1.9071 ? 12.4648+-0.8204 ?
date-format-xparb 9.8073+-2.4388 9.3060+-2.3213 might be 1.0539x faster
math-cordic 7.3904+-7.1849 ? 7.6371+-2.9978 ? might be 1.0334x slower
math-partial-sums 9.5638+-0.5683 9.3669+-0.1506 might be 1.0210x faster
math-spectral-norm 3.4571+-1.0800 ? 4.3911+-1.4788 ? might be 1.2702x slower
regexp-dna 7.9608+-1.0212 ? 8.7021+-2.2133 ? might be 1.0931x slower
string-base64 5.3263+-1.1631 5.3072+-1.0508
string-fasta 15.1943+-2.5712 ? 15.8781+-2.9955 ? might be 1.0450x slower
string-tagcloud 12.7867+-1.6423 ? 13.2119+-1.9334 ? might be 1.0333x slower
string-unpack-code 22.1520+-2.1770 ? 25.6478+-3.6431 ? might be 1.1578x slower
string-validate-input 6.9492+-1.8775 ? 8.0026+-3.7680 ? might be 1.1516x slower
<arithmetic> 8.4062+-0.5535 ? 8.5406+-0.1335 ? might be 1.0160x slower
Conf#1 Conf#2
LongSpider:
3d-cube 1135.1188+-401.3362 1107.8880+-352.7064 might be 1.0246x faster
3d-morph 2472.4249+-83.0941 2470.7923+-54.6012
3d-raytrace 902.2168+-12.3681 884.8100+-43.9159 might be 1.0197x faster
access-binary-trees 1226.2737+-39.5507 ? 1235.5732+-58.0490 ?
access-fannkuch 337.5997+-19.7353 ? 339.2968+-19.7490 ?
access-nbody 664.8257+-1.6835 ? 664.9699+-4.3456 ?
access-nsieve 777.1040+-31.2766 ? 778.2971+-34.2985 ?
bitops-3bit-bits-in-byte 49.0257+-2.8563 47.7652+-2.5336 might be 1.0264x faster
bitops-bits-in-byte 106.0319+-7.5288 102.6042+-6.0766 might be 1.0334x faster
bitops-nsieve-bits 725.9573+-21.8123 714.1461+-4.2285 might be 1.0165x faster
controlflow-recursive 544.8796+-10.7156 ? 557.3976+-33.8284 ? might be 1.0230x slower
crypto-aes 803.3660+-30.1519 ? 828.2032+-11.4441 ? might be 1.0309x slower
crypto-md5 589.8820+-6.2368 580.9299+-15.3074 might be 1.0154x faster
crypto-sha1 736.1122+-17.6236 ? 744.6405+-14.0336 ? might be 1.0116x slower
date-format-tofte 946.0867+-12.5303 ? 985.4258+-38.1655 ? might be 1.0416x slower
date-format-xparb 851.0077+-37.7924 827.9139+-41.8497 might be 1.0279x faster
math-cordic 655.6744+-4.5034 653.9677+-6.5212
math-partial-sums 965.1606+-12.0103 963.6317+-32.5221
math-spectral-norm 904.1531+-8.6500 ? 915.5815+-44.4206 ? might be 1.0126x slower
string-base64 418.0596+-25.7069 416.7816+-15.6232
string-fasta 562.4024+-7.8917 ? 592.7375+-46.4167 ? might be 1.0539x slower
string-tagcloud 255.5815+-10.9282 249.7576+-9.1375 might be 1.0233x faster
<geometric> 593.9756+-9.6961 593.8080+-11.4925 might be 1.0003x faster
Conf#1 Conf#2
V8Spider:
crypto 72.4389+-11.1539 ? 75.9486+-13.2372 ? might be 1.0485x slower
deltablue 90.9238+-7.2018 ? 93.6086+-6.8928 ? might be 1.0295x slower
earley-boyer 53.5640+-13.9626 ? 56.8326+-15.5196 ? might be 1.0610x slower
raytrace 59.6431+-3.2276 ? 60.1736+-3.7920 ?
regexp 89.7052+-2.1700 88.6857+-3.1107 might be 1.0115x faster
richards 79.8580+-3.8103 ? 83.8215+-6.9981 ? might be 1.0496x slower
splay 47.2369+-8.6382 42.9767+-4.4559 might be 1.0991x faster
<geometric> 68.4094+-4.5431 ? 69.2367+-2.5863 ? might be 1.0121x slower
Conf#1 Conf#2
Octane:
encrypt 0.25787+-0.01092 0.25586+-0.01110
decrypt 4.52255+-0.12367 4.48942+-0.11230
deltablue x2 0.23771+-0.00525 0.23210+-0.00270 might be 1.0241x faster
earley 0.67137+-0.01644 0.65911+-0.01883 might be 1.0186x faster
boyer 7.89483+-0.04604 7.84774+-0.05381
navier-stokes x2 5.31151+-0.00627 5.30946+-0.00478
raytrace x2 1.81972+-0.09440 1.73675+-0.12449 might be 1.0478x faster
richards x2 0.13252+-0.00400 0.13006+-0.00234 might be 1.0189x faster
splay x2 0.42781+-0.01105 0.42344+-0.01076 might be 1.0103x faster
regexp x2 35.39485+-0.44694 34.75065+-0.24096 might be 1.0185x faster
pdfjs x2 55.27059+-2.44426 ? 56.40297+-0.88683 ? might be 1.0205x slower
mandreel x2 58.37297+-3.94511 57.95012+-3.20927
gbemu x2 49.64276+-1.97154 49.44999+-1.33233
closure 0.59846+-0.01450 0.58543+-0.01316 might be 1.0223x faster
jquery 7.78636+-0.14673 7.71368+-0.13273
box2d x2 14.82353+-0.30733 14.81106+-0.51163
zlib x2 436.44700+-75.76121 ? 458.35118+-89.86162 ? might be 1.0502x slower
typescript x2 909.95898+-21.22852 ? 917.50629+-36.64811 ?
<geometric> 7.78066+-0.15418 7.73399+-0.09405 might be 1.0060x faster
Conf#1 Conf#2
JSRegress:
string-get-by-val-big-char 10.0123+-3.7814 9.6427+-3.0167 might be 1.0383x faster
slow-convergence 3.7093+-0.1420 3.7072+-1.1409
int-or-other-abs-zero-then-get-by-val 24.4904+-2.6840 24.0676+-2.3320 might be 1.0176x faster
switch-string-basic 13.9622+-0.2095 ? 13.9918+-0.2317 ?
integer-modulo 3.6038+-0.3082 ? 3.8670+-3.4551 ? might be 1.0730x slower
fold-double-to-int 14.8342+-0.4043 14.7422+-0.8157
adapt-to-double-divide 16.6923+-0.9706 16.2102+-0.4806 might be 1.0297x faster
tear-off-arguments 6.5182+-2.3143 ? 7.8701+-5.7687 ? might be 1.2074x slower
polymorphic-get-by-id 5.0021+-0.6458 ? 5.7903+-1.6108 ? might be 1.1576x slower
inline-arguments-local-escape 4.9738+-1.2502 ? 5.7253+-1.7504 ? might be 1.1511x slower
int-or-other-sub 6.3460+-2.2901 6.0375+-0.8109 might be 1.0511x faster
new-array-dead 17.9235+-3.1205 17.9098+-1.5450
rare-osr-exit-on-local 16.9564+-1.6311 ? 18.9454+-3.3000 ? might be 1.1173x slower
obvious-sink-pathology 151.7368+-4.3178 148.1467+-9.3742 might be 1.0242x faster
infer-one-time-closure 11.6297+-0.4592 ? 11.6411+-0.4733 ?
in-one-case-true 12.4252+-2.2857 ? 12.4998+-3.9137 ?
ArrayBuffer-Int8Array-alloc-long-lived-buffer
24.9445+-1.8425 24.9326+-2.5256
infer-closure-const-then-reenter-no-inline
68.4385+-4.4980 ? 69.2160+-4.1631 ? might be 1.0114x slower
call-spread-apply 32.5504+-0.7748 ? 35.7793+-5.2815 ? might be 1.0992x slower
destructuring-arguments 22.1640+-2.9316 19.2153+-1.1314 might be 1.1535x faster
string-concat-object 3.0995+-0.7862 ? 3.2502+-0.4511 ? might be 1.0486x slower
arguments-named-and-reflective 12.0809+-0.4104 ? 12.8635+-0.4399 ? might be 1.0648x slower
singleton-scope 77.2955+-5.8711 74.4305+-1.8040 might be 1.0385x faster
sparse-conditional 1.8293+-0.4050 ? 2.6237+-2.8024 ? might be 1.4343x slower
splice-to-remove 21.4016+-2.3671 21.3939+-3.6026
assign-custom-setter 6.3152+-1.6664 5.5068+-0.2124 might be 1.1468x faster
slow-array-profile-convergence 3.9465+-0.5439 ? 4.1327+-0.4531 ? might be 1.0472x slower
proto-getter-access 11.2845+-1.7394 10.5978+-0.9654 might be 1.0648x faster
direct-arguments-getbyval 2.5747+-0.5217 2.3489+-0.5870 might be 1.0961x faster
fold-put-by-id-to-multi-put-by-offset 8.1279+-2.4625 ? 8.5132+-0.6299 ? might be 1.0474x slower
to-int32-boolean 17.2626+-1.0689 ? 17.2982+-0.7141 ?
Float32Array-matrix-mult 5.5943+-0.8494 5.4180+-0.9901 might be 1.0325x faster
register-pressure-from-osr 22.2907+-0.5530 ? 22.4512+-0.6168 ?
new-array-buffer-dead 127.7069+-11.9770 ? 129.6444+-12.8663 ? might be 1.0152x slower
infer-closure-const-then-put-to-scope-no-inline
14.6177+-0.9171 14.4418+-0.4797 might be 1.0122x faster
ArrayBuffer-DataView-alloc-large-long-lived
45.9841+-3.3449 45.2566+-4.4198 might be 1.0161x faster
double-to-int32-typed-array-no-inline 3.6008+-2.0418 ? 3.7847+-1.4296 ? might be 1.0511x slower
getter-richards 128.3786+-16.3229 124.1652+-21.6705 might be 1.0339x faster
new-array-push 7.4025+-3.7787 5.3097+-0.5715 might be 1.3942x faster
infer-closure-const-then-put-to-scope 24.7446+-2.4740 24.2595+-1.0390 might be 1.0200x faster
array-splice-contiguous 74.0030+-32.8948 62.2098+-0.8927 might be 1.1896x faster
ftl-library-inlining-dataview 66.1825+-4.2854 ? 66.7470+-3.6074 ?
indexed-properties-in-objects 4.1967+-0.3182 ? 4.7698+-1.5782 ? might be 1.1366x slower
div-boolean-double 7.3907+-1.0028 7.2662+-1.8451 might be 1.0171x faster
int-or-other-neg-then-get-by-val 7.8069+-2.2947 6.5881+-1.0011 might be 1.1850x faster
poly-stricteq 62.6867+-0.2339 ? 63.0148+-2.9960 ?
polymorphic-put-by-id 33.3424+-3.8955 31.6673+-2.8603 might be 1.0529x faster
try-catch-get-by-val-cloned-arguments 14.8553+-0.3950 14.7628+-0.0984
polymorphic-array-call 1.3763+-0.2177 ? 1.7275+-0.7293 ? might be 1.2552x slower
fold-multi-put-by-offset-to-poly-put-by-offset
7.8960+-1.0601 ? 8.9382+-2.7510 ? might be 1.1320x slower
in-two-cases 13.7100+-2.9240 13.4868+-3.4188 might be 1.0165x faster
array-access-polymorphic-structure 7.1989+-0.6832 ? 7.2475+-1.7831 ?
varargs-call 16.9420+-1.0768 16.2153+-0.2539 might be 1.0448x faster
poly-chain-access 4.3790+-2.1945 4.3730+-2.7040
get_callee_polymorphic 7.3053+-1.3018 ? 7.5381+-0.9473 ? might be 1.0319x slower
cmpeq-obj-to-obj-other 12.4767+-2.3487 11.4251+-1.8772 might be 1.0920x faster
cast-int-to-double 8.0157+-1.5455 7.0244+-0.6700 might be 1.1411x faster
polyvariant-monomorphic-get-by-id 9.7142+-0.5725 ? 10.3907+-1.4516 ? might be 1.0696x slower
global-var-const-infer-fire-from-opt 2.2181+-1.4123 ? 2.6036+-0.6439 ? might be 1.1738x slower
array-prototype-some 90.9825+-3.4103 ? 91.2317+-1.2344 ?
basic-set 10.7706+-0.6678 ? 11.3080+-1.3281 ? might be 1.0499x slower
switch-string-basic-var 15.6143+-0.6143 15.4713+-0.2688
assign-custom-setter-polymorphic 4.5345+-1.9925 3.6970+-0.8460 might be 1.2265x faster
put-by-val-direct 0.5635+-0.2429 ? 0.8851+-1.0212 ? might be 1.5706x slower
ArrayBuffer-Int8Array-alloc-large-long-lived
40.9539+-2.3770 ? 43.0403+-3.5131 ? might be 1.0509x slower
simple-activation-demo 28.4526+-1.6349 27.8602+-0.9053 might be 1.0213x faster
string-concat-pair-simple 13.6776+-0.5606 13.5467+-0.2463
get-by-val-out-of-bounds 6.7729+-1.4565 6.0074+-0.7525 might be 1.1274x faster
switch-string-length-tower-var 16.8408+-0.3488 ? 17.4627+-2.8929 ? might be 1.0369x slower
captured-assignments 0.5568+-0.1245 0.5259+-0.1784 might be 1.0588x faster
string-var-equality 31.6436+-0.2274 ? 31.8691+-0.5291 ?
int-or-other-mod-then-get-by-val 6.7980+-0.4842 6.2583+-1.8937 might be 1.0862x faster
Int32Array-alloc-large 28.9376+-1.0102 28.1428+-0.5438 might be 1.0282x faster
sin-boolean 13.8555+-1.1694 ? 14.4462+-1.4882 ? might be 1.0426x slower
string-concat-simple 14.3633+-0.8823 ? 14.8975+-1.3716 ? might be 1.0372x slower
getter-no-activation 7.6753+-1.8703 6.4285+-1.6041 might be 1.1940x faster
try-catch-get-by-val-direct-arguments 7.2353+-1.0803 ? 7.6981+-1.3908 ? might be 1.0640x slower
infer-constant-property 3.9095+-0.8721 ? 4.8893+-1.2979 ? might be 1.2506x slower
div-boolean 10.1885+-1.3937 9.4612+-2.0294 might be 1.0769x faster
large-int 16.2263+-1.4226 ? 16.5551+-1.8795 ? might be 1.0203x slower
external-arguments-putbyval 4.4277+-0.2732 4.3462+-1.2668 might be 1.0188x faster
max-boolean 5.2047+-3.8504 4.5876+-2.3421 might be 1.1345x faster
get-by-id-proto-or-self 19.1124+-3.4178 17.8025+-2.4161 might be 1.0736x faster
get-by-id-bimorphic-check-structure-elimination
11.3619+-1.8833 8.9904+-2.4345 might be 1.2638x faster
string-equality 20.6469+-2.0973 19.7565+-3.1377 might be 1.0451x faster
getter 7.7668+-2.3166 ? 9.2479+-3.6220 ? might be 1.1907x slower
Int32Array-Int8Array-view-alloc 7.4377+-1.0148 ? 7.5755+-1.5060 ? might be 1.0185x slower
substring-concat 55.2321+-2.9124 54.4064+-2.2026 might be 1.0152x faster
integer-divide 12.9094+-0.3078 12.4515+-0.6884 might be 1.0368x faster
object-closure-call 8.8438+-2.3077 ? 8.8470+-1.8137 ?
sinkable-new-object-dag 69.9973+-0.8375 ? 71.1848+-3.4822 ? might be 1.0170x slower
string-char-code-at 19.8348+-5.0711 18.4845+-1.2935 might be 1.0731x faster
double-to-uint32-typed-array-no-inline 4.1358+-1.8357 3.9308+-1.2514 might be 1.0522x faster
Int16Array-bubble-sort 23.0998+-1.0757 ? 23.7037+-1.7685 ? might be 1.0261x slower
switch-char 10.7455+-7.9458 7.0715+-1.0359 might be 1.5195x faster
switch-char-constant 4.6046+-1.5127 4.4360+-1.9663 might be 1.0380x faster
infer-one-time-closure-two-vars 11.8833+-1.3076 11.4238+-0.3141 might be 1.0402x faster
object-test 6.9047+-6.2158 5.6442+-1.8492 might be 1.2233x faster
external-arguments-getbyval 2.8580+-2.1614 2.2838+-0.7213 might be 1.2515x faster
plus-boolean 4.4884+-1.2177 3.9750+-1.8892 might be 1.1292x faster
Int16Array-alloc-long-lived 62.6379+-2.5160 60.5887+-8.4117 might be 1.0338x faster
fold-get-by-id-to-multi-get-by-offset 9.3251+-0.6918 ? 9.3511+-1.8012 ?
infer-one-time-deep-closure 20.6602+-1.0605 ? 20.7191+-0.9342 ?
new-array-buffer-push 8.4846+-1.1310 8.2607+-0.8373 might be 1.0271x faster
aliased-arguments-getbyval 2.4310+-0.8891 1.9408+-0.6884 might be 1.2526x faster
by-val-generic 10.8367+-1.0192 ? 11.1973+-1.2578 ? might be 1.0333x slower
ArrayBuffer-Int8Array-alloc-long-lived 14.7079+-0.5304 14.6252+-0.2368
exit-length-on-plain-object 15.6395+-2.0439 ? 16.3470+-2.7545 ? might be 1.0452x slower
Int32Array-alloc 4.2083+-0.3811 ? 4.4813+-0.5921 ? might be 1.0649x slower
weird-inlining-const-prop 4.0301+-2.1118 3.7125+-2.1264 might be 1.0856x faster
DataView-custom-properties 45.9855+-2.5033 ? 49.5925+-3.8299 ? might be 1.0784x slower
HashMap-string-put-get-iterate 30.4376+-0.9394 30.3632+-2.3884
get-by-id-bimorphic-check-structure-elimination-simple
4.9512+-2.3554 4.6965+-1.1820 might be 1.0542x faster
temporal-structure 18.4574+-3.6005 17.7675+-3.1942 might be 1.0388x faster
for-of-iterate-array-values 5.9404+-1.7748 ? 6.7994+-4.6250 ? might be 1.1446x slower
varargs-construct 36.0406+-1.4078 ? 38.8675+-4.9395 ? might be 1.0784x slower
double-to-uint32-typed-array 3.2540+-0.6763 ? 4.2305+-4.0292 ? might be 1.3001x slower
int-or-other-mul-then-get-by-val 6.0574+-0.5337 5.7870+-0.2511 might be 1.0467x faster
put-by-val-machine-int 5.9641+-4.5318 5.5364+-3.4462 might be 1.0772x faster
lots-of-fields 12.5917+-0.3084 12.4344+-0.0591 might be 1.0126x faster
infer-closure-const-then-mov-no-inline 5.1382+-0.7911 ? 5.3090+-1.3969 ? might be 1.0332x slower
arguments 9.7153+-0.9614 9.5689+-0.5486 might be 1.0153x faster
negative-zero-divide 0.5938+-0.6648 0.4821+-0.1527 might be 1.2315x faster
big-int-mul 5.5357+-1.8041 ? 6.5490+-0.5117 ? might be 1.1830x slower
try-catch-get-by-val-scoped-arguments 8.4387+-0.9878 ? 8.8387+-1.6541 ? might be 1.0474x slower
setter 7.6743+-2.6421 ? 9.3262+-4.0106 ? might be 1.2153x slower
neg-boolean 4.5881+-0.4779 ? 4.9849+-1.3680 ? might be 1.0865x slower
poly-chain-access-simpler 5.1297+-1.0921 ? 5.3068+-1.6460 ? might be 1.0345x slower
put-by-id-slightly-polymorphic 6.5063+-3.7205 4.3469+-1.4602 might be 1.4968x faster
arguments-out-of-bounds 15.1171+-1.5433 14.9788+-0.7357
sink-function 12.8705+-2.4462 12.0745+-2.0333 might be 1.0659x faster
marsaglia-larger-ints 44.9684+-1.3322 ? 46.1418+-1.3261 ? might be 1.0261x slower
undefined-test 4.7915+-1.3908 4.7082+-1.1911 might be 1.0177x faster
imul-mixed 8.1483+-1.6819 7.9866+-1.5817 might be 1.0203x faster
global-var-const-infer 0.8057+-0.1995 ? 1.3306+-0.9800 ? might be 1.6515x slower
asmjs_bool_bug 8.5132+-0.7886 ? 8.9942+-0.9872 ? might be 1.0565x slower
double-pollution-putbyoffset 7.0374+-0.4933 ? 7.4243+-2.7788 ? might be 1.0550x slower
cell-argument 9.2683+-0.8296 8.7949+-1.5998 might be 1.0538x faster
int-or-other-add 6.8010+-1.4318 ? 7.4355+-2.2094 ? might be 1.0933x slower
plus-boolean-arith 3.9899+-1.9426 ? 4.5690+-1.8277 ? might be 1.1451x slower
ArrayBuffer-Int32Array-byteOffset 5.8780+-0.6054 5.4756+-1.2875 might be 1.0735x faster
mod-boolean 12.3259+-6.2556 9.7635+-1.9284 might be 1.2624x faster
infer-closure-const-then-mov 19.2447+-5.2516 ? 19.6704+-5.3264 ? might be 1.0221x slower
large-int-neg 17.6886+-1.7269 16.7061+-0.2372 might be 1.0588x faster
fround 17.5280+-2.7648 16.7369+-0.6335 might be 1.0473x faster
elidable-new-object-dag 50.1734+-7.4707 ? 55.3383+-5.8410 ? might be 1.1029x slower
make-indexed-storage 6.0365+-4.0247 4.3123+-0.4602 might be 1.3998x faster
int-or-other-add-then-get-by-val 7.5745+-1.9843 ? 8.4175+-1.0473 ? might be 1.1113x slower
string-cons-repeat 9.1346+-1.5808 8.2079+-0.2123 might be 1.1129x faster
logical-not 6.9614+-2.3194 ? 7.4252+-1.3600 ? might be 1.0666x slower
poly-chain-access-different-prototypes-simple
5.3312+-2.7026 ? 6.2233+-2.1075 ? might be 1.1673x slower
fixed-typed-array-storage-var-index 2.1017+-1.1476 ? 2.9379+-2.0830 ? might be 1.3979x slower
function-test 5.3963+-1.8130 4.4707+-1.0032 might be 1.2070x faster
string-cons-tower 8.5107+-1.0531 8.2832+-0.2444 might be 1.0275x faster
destructuring-swap 6.5430+-1.4484 ? 6.6147+-1.8739 ? might be 1.0110x slower
int-or-other-max-then-get-by-val 6.4363+-0.6199 6.2063+-0.3464 might be 1.0371x faster
fold-multi-get-by-offset-to-get-by-offset
7.9392+-3.7853 ? 8.5166+-2.9534 ? might be 1.0727x slower
method-on-number 20.8337+-3.4054 ? 22.4959+-3.6730 ? might be 1.0798x slower
put-by-id-replace-and-transition 11.1171+-1.7106 ? 11.6479+-1.5414 ? might be 1.0478x slower
int-or-other-neg-zero-then-get-by-val 23.6283+-1.1209 ? 24.0034+-2.8532 ? might be 1.0159x slower
varargs-strict-mode 12.7725+-1.1396 11.8465+-0.4277 might be 1.0782x faster
string-get-by-val-out-of-bounds-insane 4.6440+-1.3219 ? 4.7902+-0.7886 ? might be 1.0315x slower
imul-double-only 9.8470+-2.4977 9.1516+-1.4020 might be 1.0760x faster
for-of-iterate-array-keys 5.9719+-2.2761 5.6260+-0.2559 might be 1.0615x faster
string-get-by-val 6.1011+-1.2349 5.1964+-0.6968 might be 1.1741x faster
nested-function-parsing 44.6728+-3.3878 ? 50.3232+-3.1720 ? might be 1.1265x slower
string-repeat-arith 31.5717+-0.5701 ? 33.5820+-2.6358 ? might be 1.0637x slower
inline-arguments-aliased-access 6.2242+-0.5172 ? 8.0341+-3.4785 ? might be 1.2908x slower
allocate-big-object 4.3032+-0.6090 ? 4.9307+-1.9067 ? might be 1.1458x slower
elidable-new-object-tree 50.5819+-3.9231 ? 53.2800+-2.3548 ? might be 1.0533x slower
ArrayBuffer-Int8Array-alloc 11.7694+-0.1373 ? 12.2140+-0.8003 ? might be 1.0378x slower
int52-spill 9.7298+-0.9946 9.3302+-1.3363 might be 1.0428x faster
no-inline-constructor 149.6614+-3.8170 ? 153.0510+-10.5393 ? might be 1.0226x slower
hoist-make-rope 10.7197+-1.5959 ? 11.2526+-2.0936 ? might be 1.0497x slower
arguments-strict-mode 10.8834+-0.3227 ? 14.2999+-5.6850 ? might be 1.3139x slower
function-with-eval 113.9555+-6.5504 ? 118.9270+-9.7702 ? might be 1.0436x slower
ArrayBuffer-DataView-alloc-long-lived 16.9897+-0.7938 ? 17.4376+-1.6771 ? might be 1.0264x slower
simple-poly-call-nested 9.3088+-3.0608 9.2750+-2.7964
switch-string-big-length-tower-var 20.8284+-0.4456 20.7349+-0.3844
number-test 4.9267+-1.5872 ? 5.1355+-1.3184 ? might be 1.0424x slower
Int16Array-load-int-mul 2.6963+-0.4483 2.6203+-0.7202 might be 1.0290x faster
put-by-id 15.1529+-1.7855 ? 15.4235+-2.5528 ? might be 1.0179x slower
imul-int-only 9.6795+-0.6247 ? 9.7985+-0.8537 ? might be 1.0123x slower
gcse 6.6402+-1.3570 ? 7.3182+-3.0237 ? might be 1.1021x slower
create-lots-of-functions 14.4025+-3.0303 13.7491+-1.5674 might be 1.0475x faster
in-four-cases 23.1517+-3.0672 ? 23.5092+-2.5362 ? might be 1.0154x slower
elidable-new-object-then-call 47.0732+-3.5077 40.8645+-5.9963 might be 1.1519x faster
int-or-other-sub-then-get-by-val 8.7486+-1.0837 7.3516+-1.2915 might be 1.1900x faster
mul-boolean-double 5.6190+-1.4815 ? 5.6877+-4.0285 ? might be 1.0122x slower
mod-boolean-double 12.0322+-3.3507 10.6061+-1.5174 might be 1.1345x faster
inline-arguments-access 6.3955+-0.4496 5.8270+-1.1719 might be 1.0976x faster
substring-concat-weird 50.9726+-3.4413 50.9293+-3.5669
varargs-construct-inline 26.5798+-4.8415 25.2235+-1.3243 might be 1.0538x faster
HashMap-put-get-iterate 32.7576+-4.8100 ? 36.3287+-1.2976 ? might be 1.1090x slower
string-long-ident-equality 16.5391+-0.7418 ? 17.2210+-2.6414 ? might be 1.0412x slower
mul-boolean 4.5186+-1.8134 4.2343+-1.8762 might be 1.0671x faster
get-by-id-check-structure-elimination 7.3992+-2.2856 ? 7.6732+-0.4040 ? might be 1.0370x slower
marsaglia-osr-entry 24.1359+-0.6297 ^ 23.0612+-0.2169 ^ definitely 1.0466x faster
Float64Array-alloc-long-lived 85.8370+-7.0135 82.5596+-10.5924 might be 1.0397x faster
misc-strict-eq 40.0953+-6.6067 37.4893+-3.5566 might be 1.0695x faster
make-rope-cse 5.1887+-0.7294 5.1190+-1.1839 might be 1.0136x faster
array-with-double-sum 4.9920+-1.4617 ? 5.4297+-2.1966 ? might be 1.0877x slower
substring 64.3974+-3.4383 63.1106+-4.1937 might be 1.0204x faster
array-with-double-increment 5.0521+-0.9733 ? 5.4753+-1.2328 ? might be 1.0838x slower
for-of-iterate-array-entries 6.4282+-2.0561 ? 7.0788+-2.5836 ? might be 1.1012x slower
array-nonarray-polymorhpic-access 40.6392+-2.5936 ? 41.0966+-3.6198 ? might be 1.0113x slower
varargs 12.6362+-1.2153 12.4716+-1.6134 might be 1.0132x faster
string-out-of-bounds 15.0640+-1.1645 ? 15.4049+-1.4120 ? might be 1.0226x slower
inlined-put-by-id-transition 12.3654+-2.2519 ? 14.0073+-1.2688 ? might be 1.1328x slower
minus-boolean-double 4.3947+-1.2886 ? 5.1422+-4.6183 ? might be 1.1701x slower
delay-tear-off-arguments-strictmode 16.0214+-3.1719 14.8770+-1.7824 might be 1.0769x faster
array-prototype-every 90.0176+-2.4441 ? 92.2332+-2.6183 ? might be 1.0246x slower
chain-getter-access 11.3752+-1.3613 ? 11.5732+-2.1912 ? might be 1.0174x slower
int-or-other-min-then-get-by-val 6.3177+-1.6076 ? 6.3389+-1.6239 ?
HashMap-put-get-iterate-keys 32.2938+-5.4710 ? 32.3086+-3.5108 ?
double-pollution-getbyval 10.6863+-2.0688 10.4269+-2.0280 might be 1.0249x faster
structure-hoist-over-transitions 4.0671+-1.9228 4.0010+-0.7333 might be 1.0165x faster
polymorphic-structure 20.9915+-0.8800 ? 21.0001+-1.0054 ?
sorting-benchmark 25.2408+-0.8813 ? 26.4547+-2.0061 ? might be 1.0481x slower
fixed-typed-array-storage 2.2255+-1.8625 1.4113+-0.3476 might be 1.5769x faster
switch-string-length-tower 13.6861+-0.2405 ? 13.7854+-0.3978 ?
fold-multi-get-by-offset-to-poly-get-by-offset
9.9995+-3.9015 7.9950+-1.3202 might be 1.2507x faster
Int8Array-load-with-byteLength 4.9118+-1.5988 ? 6.1862+-1.7106 ? might be 1.2595x slower
Float64Array-to-Int16Array-set 70.3493+-0.4995 ! 104.0988+-8.5596 ! definitely 1.4797x slower
infer-constant-global-property 338.9415+-7.7086 333.0898+-0.3534 might be 1.0176x faster
int-overflow-local 7.4562+-1.4418 6.7472+-1.5534 might be 1.1051x faster
min-boolean 6.6184+-3.3520 4.0517+-1.2713 might be 1.6335x faster
simple-getter-access 14.4658+-0.9779 13.7530+-1.0260 might be 1.0518x faster
string-hash 3.2152+-0.5412 ? 3.2823+-2.0353 ? might be 1.0209x slower
arity-mismatch-inlining 1.3476+-0.3602 ? 1.7125+-1.2836 ? might be 1.2708x slower
obviously-elidable-new-object 35.7537+-1.5504 ? 36.7382+-2.3518 ? might be 1.0275x slower
deltablue-varargs 243.3849+-12.0172 ? 244.6398+-1.9842 ?
gcse-poly-get 22.7860+-2.6469 22.7742+-2.3481
hoist-poly-check-structure-effectful-loop
8.3637+-3.1962 ? 9.2519+-6.2182 ? might be 1.1062x slower
minus-boolean 4.6013+-1.0631 ? 4.6373+-1.6336 ?
gcse-poly-get-less-obvious 20.9051+-3.6299 ? 21.2070+-5.2685 ? might be 1.0144x slower
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
11.4576+-3.5214 9.8910+-1.7512 might be 1.1584x faster
branch-fold 6.1078+-1.9361 6.0059+-1.4317 might be 1.0170x faster
double-to-int32-typed-array 2.4445+-0.8092 ? 2.6142+-0.7672 ? might be 1.0694x slower
plus-boolean-double 4.3127+-1.5588 4.0637+-0.8840 might be 1.0613x faster
hoist-poly-check-structure 5.7048+-1.0193 ? 5.9742+-2.2328 ? might be 1.0472x slower
infer-one-time-closure-ten-vars 11.9275+-0.3765 ? 12.3837+-1.3476 ? might be 1.0383x slower
array-with-double-mul-add 8.8322+-4.0819 7.6713+-2.0460 might be 1.1513x faster
array-prototype-map 104.0285+-4.8958 100.9335+-3.4742 might be 1.0307x faster
varargs-inline 12.4515+-0.6287 12.1749+-0.1203 might be 1.0227x faster
undefined-property-access 363.1834+-2.0904 362.1338+-4.0639
array-with-int32-add-sub 8.9216+-1.1253 ? 9.5959+-3.3048 ? might be 1.0756x slower
function-dot-apply 10.3087+-1.8999 9.4343+-1.9771 might be 1.0927x faster
string-sub 62.4992+-1.5314 ? 64.4086+-1.7946 ? might be 1.0306x slower
boolean-test 4.9586+-0.9642 ? 6.9583+-7.0363 ? might be 1.4033x slower
emscripten-cube2hash 37.2515+-1.5980 ? 37.3467+-2.9091 ?
Int32Array-alloc-long-lived 67.0919+-3.2617 ? 68.7625+-6.2358 ? might be 1.0249x slower
get-by-id-self-or-proto 20.1538+-2.2482 18.7598+-4.5119 might be 1.0743x faster
sinkable-new-object 44.0632+-7.0367 41.8134+-8.3676 might be 1.0538x faster
put-by-val-large-index-blank-indexing-type
7.2588+-1.3050 ? 8.3561+-0.9167 ? might be 1.1512x slower
Int8Array-load 5.0709+-1.4050 4.9445+-1.1216 might be 1.0256x faster
int-or-other-abs-then-get-by-val 7.6223+-1.0945 7.5062+-2.6854 might be 1.0155x faster
abs-boolean 4.6014+-2.4821 ? 4.9705+-1.9298 ? might be 1.0802x slower
call-spread-call 26.3105+-5.4936 25.3471+-1.3484 might be 1.0380x faster
unprofiled-licm 23.2145+-4.5398 22.1848+-0.9995 might be 1.0464x faster
constant-test 6.9087+-0.4641 6.0225+-1.1009 might be 1.1471x faster
cfg-simplify 4.3336+-1.1799 ? 4.7687+-0.4915 ? might be 1.1004x slower
get-by-id-quadmorphic-check-structure-elimination-simple
4.4875+-1.9179 ? 6.6290+-1.7456 ? might be 1.4772x slower
fold-put-structure 6.3720+-1.3338 ? 7.4452+-2.6192 ? might be 1.1684x slower
get-by-id-chain-from-try-block 9.2595+-0.6842 7.9350+-1.6277 might be 1.1669x faster
poly-chain-access-different-prototypes 3.9094+-1.2119 3.0827+-0.1703 might be 1.2682x faster
get_callee_monomorphic 3.4810+-0.7753 ? 3.6751+-0.5866 ? might be 1.0558x slower
deconstructing-parameters-overridden-by-function
0.6519+-0.1479 0.6009+-0.2693 might be 1.0849x faster
empty-string-plus-int 6.6179+-1.5913 ? 6.6624+-2.2495 ?
Float32Array-to-Float64Array-set 60.7141+-1.3998 ! 69.9803+-2.7659 ! definitely 1.1526x slower
switch-string-short 13.7476+-0.2974 13.6503+-0.0871
switch-string-basic-big 14.7054+-0.1172 ? 15.4500+-2.7475 ? might be 1.0506x slower
double-get-by-val-out-of-bounds 6.8395+-0.5611 ? 7.7285+-1.0685 ? might be 1.1300x slower
large-int-captured 6.1796+-1.5268 ? 7.1764+-1.5010 ? might be 1.1613x slower
elidable-new-object-roflcopter 59.3333+-1.9719 58.2463+-7.0083 might be 1.0187x faster
string-get-by-val-out-of-bounds 8.8820+-0.7267 8.7066+-2.9662 might be 1.0201x faster
array-with-double-add 6.2633+-3.2255 ? 7.0192+-1.6313 ? might be 1.1207x slower
string-test 4.5157+-1.4929 ? 5.4550+-0.9281 ? might be 1.2080x slower
switch 16.2685+-2.5502 15.5795+-1.1626 might be 1.0442x faster
inline-get-scoped-var 6.7767+-0.3181 ? 7.1716+-2.5623 ? might be 1.0583x slower
tear-off-arguments-simple 5.0302+-1.5024 ? 5.1190+-1.8831 ? might be 1.0177x slower
negative-zero-modulo 0.3983+-0.1312 ? 0.7014+-0.6891 ? might be 1.7611x slower
infer-closure-const-then-reenter 25.0524+-1.2805 ? 25.7565+-0.2200 ? might be 1.0281x slower
array-prototype-forEach 90.0042+-6.3455 ? 90.8583+-7.3649 ?
switch-constant 11.1938+-1.7804 11.1542+-1.4789
negative-zero-negate 0.3277+-0.0675 ? 0.4141+-0.0454 ? might be 1.2637x slower
fold-get-by-id-to-multi-get-by-offset-rare-int
9.9775+-1.2876 ? 10.8633+-3.8159 ? might be 1.0888x slower
in-one-case-false 15.1734+-3.6603 13.7930+-2.8747 might be 1.1001x faster
int-or-other-div-then-get-by-val 6.6055+-0.4476 ? 6.9066+-2.3766 ? might be 1.0456x slower
typed-array-get-set-by-val-profiling 33.2963+-1.2778 33.1710+-1.1811
Int8Array-alloc-long-lived 56.9606+-7.8662 52.7166+-7.9180 might be 1.0805x faster
simple-poly-call 3.4092+-2.7463 2.1022+-0.5968 might be 1.6217x faster
fold-multi-put-by-offset-to-put-by-offset
9.3755+-4.6761 8.1630+-1.8299 might be 1.1485x faster
switch-string-basic-big-var 15.8030+-0.8791 ? 17.3145+-3.2326 ? might be 1.0956x slower
Int16Array-to-Int32Array-set 59.7289+-1.3605 ! 66.5735+-2.7299 ! definitely 1.1146x slower
sinkable-new-object-taken 55.2031+-2.3206 ? 56.0368+-4.0883 ? might be 1.0151x slower
string-concat-pair-object 3.3881+-0.8576 3.1672+-0.7651 might be 1.0697x faster
obvious-sink-pathology-taken 156.9066+-9.5909 ? 168.9357+-21.4432 ? might be 1.0767x slower
ftl-library-inlining 86.5171+-0.5927 85.7233+-2.5588
array-with-int32-or-double-sum 5.2022+-2.2573 ? 5.2334+-1.4062 ?
Int16Array-bubble-sort-with-byteLength 23.2363+-0.9664 ! 25.5555+-1.2653 ! definitely 1.0998x slower
<geometric> 11.3499+-0.1134 ? 11.3948+-0.2032 ? might be 1.0040x slower
Conf#1 Conf#2
Geomean of preferred means:
<scaled-result> 49.6362+-0.8856 ? 49.8990+-0.5608 ? might be 1.0053x slower
I'll update the patch. 1. private symbols hold the actual string to provide the distributed hash values 2. just use existingHash() in IdentifierRepHash! Ah, but, I found the problem. The user may create a public symbol with `Symbol()` form. In this case, the string folded in `Symbol()` becomes an empty string and its hash value is the same to the other public symbols created with `Symbol()`. So I'm now planning to allocate special space in symbolized StringImpl. (like BufferSubstring implementation). And we'll store the hash value here for symbols. Created attachment 252018 [details]
Patch
Now running run-jsc-benchmarks... Benchmark report for SunSpider, LongSpider, V8Spider, Octane, and JSRegress on gpgpu.
VMs tested:
"Conf#1" at /home/yusuke/dev/WebKit/WebKitBuild/Release/bin/jsc
"Conf#2" at /home/yusuke/dev/WebKit/WebKitBuild/hash/Release/bin/jsc
Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.
Conf#1 Conf#2
SunSpider:
3d-cube 8.9677+-3.1485 ? 10.4145+-5.7581 ? might be 1.1613x slower
3d-morph 17.9666+-5.1604 16.6663+-1.2036 might be 1.0780x faster
3d-raytrace 11.2003+-5.3851 9.9532+-3.0372 might be 1.1253x faster
access-binary-trees 3.6420+-1.2004 3.6218+-0.9734
access-fannkuch 10.2523+-5.2858 ? 12.6508+-3.1409 ? might be 1.2340x slower
access-nbody 4.5532+-0.8001 4.4649+-1.1597 might be 1.0198x faster
access-nsieve 4.5020+-0.7292 ? 4.6602+-2.3380 ? might be 1.0351x slower
bitops-3bit-bits-in-byte 2.9702+-0.3129 2.6575+-0.8041 might be 1.1177x faster
bitops-bits-in-byte 4.8557+-1.4841 ? 7.1542+-5.1247 ? might be 1.4734x slower
bitops-bitwise-and 3.1676+-0.9682 3.0228+-1.0221 might be 1.0479x faster
bitops-nsieve-bits 7.5537+-2.7678 6.0782+-1.2656 might be 1.2427x faster
controlflow-recursive 3.4572+-0.3453 ? 3.6279+-1.4073 ? might be 1.0494x slower
crypto-aes 5.7213+-1.1372 5.3464+-1.0771 might be 1.0701x faster
crypto-md5 5.0073+-2.2967 4.9437+-2.2338 might be 1.0129x faster
crypto-sha1 7.0037+-4.2785 6.4028+-2.0384 might be 1.0939x faster
date-format-tofte 11.1135+-0.7490 ? 11.7110+-1.8807 ? might be 1.0538x slower
date-format-xparb 10.2738+-1.6849 ? 11.7762+-4.7531 ? might be 1.1462x slower
math-cordic 4.7743+-0.7012 ? 7.0256+-3.4351 ? might be 1.4715x slower
math-partial-sums 9.4897+-0.4679 9.4492+-0.3669
math-spectral-norm 3.6110+-1.1128 3.5107+-1.4513 might be 1.0286x faster
regexp-dna 7.6502+-0.2610 ? 8.1400+-1.8980 ? might be 1.0640x slower
string-base64 5.8198+-0.1589 5.6320+-1.3506 might be 1.0333x faster
string-fasta 14.2908+-4.6230 13.9872+-4.6230 might be 1.0217x faster
string-tagcloud 10.2194+-0.2074 10.0319+-0.1642 might be 1.0187x faster
string-unpack-code 22.4788+-1.1038 21.8772+-1.1224 might be 1.0275x faster
string-validate-input 6.5307+-2.4054 6.3375+-0.3419 might be 1.0305x faster
<arithmetic> 7.9643+-0.5707 ? 8.1209+-0.2997 ? might be 1.0197x slower
Conf#1 Conf#2
LongSpider:
3d-cube 969.4630+-76.2120 ? 1069.8500+-333.4902 ? might be 1.1035x slower
3d-morph 2476.0489+-48.6642 2447.2212+-8.8370 might be 1.0118x faster
3d-raytrace 888.6068+-26.2417 ? 892.3326+-23.2438 ?
access-binary-trees 1215.3043+-31.7079 ? 1219.3437+-53.1715 ?
access-fannkuch 346.9197+-17.5778 340.2100+-21.3518 might be 1.0197x faster
access-nbody 667.9697+-4.2716 667.8404+-9.5461
access-nsieve 790.7558+-53.9930 790.2138+-46.0267
bitops-3bit-bits-in-byte 48.6279+-1.6360 47.7199+-3.2282 might be 1.0190x faster
bitops-bits-in-byte 106.3665+-3.1344 103.8648+-3.0160 might be 1.0241x faster
bitops-nsieve-bits 738.6161+-46.9003 714.5553+-2.3523 might be 1.0337x faster
controlflow-recursive 556.1403+-31.9216 543.9205+-23.6556 might be 1.0225x faster
crypto-aes 794.7075+-23.8701 794.1555+-38.8184
crypto-md5 587.6483+-10.0066 ? 594.9119+-26.3075 ? might be 1.0124x slower
crypto-sha1 741.7661+-18.5727 ? 798.7419+-112.6537 ? might be 1.0768x slower
date-format-tofte 931.9475+-30.1020 ? 966.1580+-39.3349 ? might be 1.0367x slower
date-format-xparb 822.6035+-30.9320 ? 824.9117+-53.1224 ?
math-cordic 655.9008+-5.1191 653.1638+-1.3604
math-partial-sums 955.8593+-17.4539 955.7239+-15.5162
math-spectral-norm 902.7931+-8.0550 ? 903.6295+-12.3822 ?
string-base64 421.7798+-16.3712 ? 426.2128+-20.1173 ? might be 1.0105x slower
string-fasta 590.3682+-48.0466 574.7104+-13.9448 might be 1.0272x faster
string-tagcloud 225.9772+-12.9659 ? 227.1317+-7.6137 ?
<geometric> 588.1507+-4.7827 ? 590.0794+-10.7592 ? might be 1.0033x slower
Conf#1 Conf#2
V8Spider:
crypto 68.2330+-12.9017 67.0380+-11.6273 might be 1.0178x faster
deltablue 92.1436+-6.2462 ? 97.7270+-5.6248 ? might be 1.0606x slower
earley-boyer 49.9476+-3.1359 ? 51.2065+-1.6833 ? might be 1.0252x slower
raytrace 44.7066+-4.5542 ? 46.3378+-5.8332 ? might be 1.0365x slower
regexp 89.7034+-3.3722 88.7458+-2.9963 might be 1.0108x faster
richards 77.6140+-1.7803 ? 81.4656+-7.2937 ? might be 1.0496x slower
splay 46.0871+-9.9795 ? 46.4767+-7.6764 ?
<geometric> 64.0975+-2.9862 ? 65.4767+-1.7120 ? might be 1.0215x slower
Conf#1 Conf#2
Octane:
encrypt 0.25120+-0.00611 ? 0.25181+-0.00442 ?
decrypt 4.36602+-0.03576 ? 4.41787+-0.19994 ? might be 1.0119x slower
deltablue x2 0.23569+-0.00446 0.23383+-0.00467
earley 0.67040+-0.02261 0.65014+-0.06905 might be 1.0312x faster
boyer 7.85753+-0.08209 7.85051+-0.06493
navier-stokes x2 5.31279+-0.00787 5.31216+-0.01242
raytrace x2 1.54644+-0.13022 ? 1.57536+-0.11561 ? might be 1.0187x slower
richards x2 0.13124+-0.00336 0.12981+-0.00079 might be 1.0110x faster
splay x2 0.42696+-0.01493 0.42449+-0.01003
regexp x2 36.27501+-1.05795 35.01571+-0.35192 might be 1.0360x faster
pdfjs x2 55.14506+-1.91493 53.95156+-0.67311 might be 1.0221x faster
mandreel x2 59.12777+-2.55690 ? 60.84531+-4.98784 ? might be 1.0290x slower
gbemu x2 49.19690+-4.84852 ? 49.92647+-1.78625 ? might be 1.0148x slower
closure 0.59039+-0.00929 0.57735+-0.00999 might be 1.0226x faster
jquery 7.73867+-0.16580 7.73203+-0.18934
box2d x2 15.37172+-0.11180 14.76054+-0.53701 might be 1.0414x faster
zlib x2 475.36125+-14.47096 472.31866+-11.17259
typescript x2 899.66193+-25.79914 ? 910.04938+-31.92957 ? might be 1.0115x slower
<geometric> 7.73537+-0.03382 7.69641+-0.04822 might be 1.0051x faster
Conf#1 Conf#2
JSRegress:
string-get-by-val-big-char 8.9373+-1.2060 8.4783+-0.3499 might be 1.0541x faster
slow-convergence 3.5857+-0.8415 ? 3.6480+-0.9805 ? might be 1.0174x slower
int-or-other-abs-zero-then-get-by-val 24.0950+-2.0918 23.5303+-1.3538 might be 1.0240x faster
switch-string-basic 14.9205+-0.2205 ? 16.4517+-3.5768 ? might be 1.1026x slower
integer-modulo 3.1273+-0.8505 2.9283+-0.8646 might be 1.0679x faster
fold-double-to-int 15.1859+-0.4568 14.5451+-0.3231 might be 1.0441x faster
adapt-to-double-divide 15.9284+-0.0833 ? 16.3713+-0.8116 ? might be 1.0278x slower
tear-off-arguments 7.2493+-2.1715 6.9050+-2.1290 might be 1.0499x faster
polymorphic-get-by-id 5.2778+-1.2554 4.7910+-0.3185 might be 1.1016x faster
inline-arguments-local-escape 5.8268+-0.7467 ? 5.9285+-1.0937 ? might be 1.0175x slower
int-or-other-sub 6.1027+-1.7119 5.0206+-1.2117 might be 1.2155x faster
new-array-dead 18.2209+-2.7395 ? 19.0940+-1.5168 ? might be 1.0479x slower
rare-osr-exit-on-local 16.7112+-2.2869 ? 17.4147+-2.3280 ? might be 1.0421x slower
obvious-sink-pathology 155.1809+-7.9807 148.6976+-6.1059 might be 1.0436x faster
infer-one-time-closure 11.4713+-0.9828 ? 12.0707+-0.4828 ? might be 1.0523x slower
in-one-case-true 13.5785+-2.6531 13.4970+-4.6100
ArrayBuffer-Int8Array-alloc-long-lived-buffer
26.0598+-4.9112 24.4288+-1.1326 might be 1.0668x faster
infer-closure-const-then-reenter-no-inline
65.1309+-3.1563 64.1627+-3.1784 might be 1.0151x faster
call-spread-apply 34.4287+-4.2642 ? 38.9209+-1.5437 ? might be 1.1305x slower
destructuring-arguments 20.0498+-3.0505 19.3912+-2.8184 might be 1.0340x faster
string-concat-object 3.3309+-0.9553 ? 3.3936+-0.3485 ? might be 1.0188x slower
arguments-named-and-reflective 13.0629+-2.3926 11.9352+-0.6387 might be 1.0945x faster
singleton-scope 74.7615+-4.2366 ? 75.6252+-4.5081 ? might be 1.0116x slower
sparse-conditional 1.7322+-0.6375 ? 1.8000+-0.4255 ? might be 1.0391x slower
splice-to-remove 20.2902+-1.1298 20.2404+-2.1614
assign-custom-setter 5.3666+-0.6934 5.0836+-0.9943 might be 1.0557x faster
slow-array-profile-convergence 3.6525+-1.0810 3.5742+-1.2689 might be 1.0219x faster
proto-getter-access 10.5790+-1.1436 10.4390+-1.1042 might be 1.0134x faster
direct-arguments-getbyval 3.6682+-1.8240 1.9825+-0.2773 might be 1.8503x faster
fold-put-by-id-to-multi-put-by-offset 7.2421+-0.7083 ? 8.9910+-4.5345 ? might be 1.2415x slower
to-int32-boolean 16.8513+-0.8183 ? 17.0192+-0.5782 ?
Float32Array-matrix-mult 6.0723+-1.2100 ? 6.4108+-1.3435 ? might be 1.0558x slower
register-pressure-from-osr 25.5303+-4.1199 22.7883+-0.6974 might be 1.1203x faster
new-array-buffer-dead 135.6559+-6.0150 134.7866+-9.1998
infer-closure-const-then-put-to-scope-no-inline
13.9570+-0.6460 ? 14.0548+-0.6663 ?
ArrayBuffer-DataView-alloc-large-long-lived
44.9768+-7.7693 ? 45.1393+-8.7474 ?
double-to-int32-typed-array-no-inline 4.6476+-4.4919 4.1832+-1.5607 might be 1.1110x faster
getter-richards 117.7622+-5.2575 ? 123.6711+-6.4574 ? might be 1.0502x slower
new-array-push 6.5843+-2.9952 5.8611+-1.2425 might be 1.1234x faster
infer-closure-const-then-put-to-scope 24.7612+-1.5591 ? 24.9580+-0.9968 ?
array-splice-contiguous 69.7930+-22.7799 60.8592+-1.5002 might be 1.1468x faster
ftl-library-inlining-dataview 66.3914+-3.9268 66.0367+-4.1502
indexed-properties-in-objects 5.1454+-0.6135 ? 6.2548+-4.2560 ? might be 1.2156x slower
div-boolean-double 7.1807+-1.6510 ? 7.8810+-4.5713 ? might be 1.0975x slower
int-or-other-neg-then-get-by-val 7.2638+-2.2347 6.7133+-1.8664 might be 1.0820x faster
poly-stricteq 66.4394+-0.3194 ? 67.7797+-2.7782 ? might be 1.0202x slower
polymorphic-put-by-id 30.8536+-1.7832 ? 31.2363+-2.0482 ? might be 1.0124x slower
try-catch-get-by-val-cloned-arguments 15.9330+-2.5283 14.9320+-0.2389 might be 1.0670x faster
polymorphic-array-call 1.6138+-0.2610 1.4957+-0.2162 might be 1.0790x faster
fold-multi-put-by-offset-to-poly-put-by-offset
7.6082+-1.1934 ? 8.8492+-1.2098 ? might be 1.1631x slower
in-two-cases 13.2929+-4.2762 ? 14.3522+-3.8678 ? might be 1.0797x slower
array-access-polymorphic-structure 7.5822+-1.3461 7.5508+-1.4049
varargs-call 17.5922+-0.3792 17.5306+-1.4027
poly-chain-access 4.5872+-1.8982 ? 4.7501+-1.3409 ? might be 1.0355x slower
get_callee_polymorphic 4.1429+-0.7975 ? 4.7128+-0.8155 ? might be 1.1375x slower
cmpeq-obj-to-obj-other 11.4147+-1.3372 ? 12.5822+-0.2200 ? might be 1.1023x slower
cast-int-to-double 7.7395+-1.8482 7.1093+-2.1376 might be 1.0886x faster
polyvariant-monomorphic-get-by-id 9.9180+-1.0621 ? 10.7068+-2.2281 ? might be 1.0795x slower
global-var-const-infer-fire-from-opt 2.7057+-0.6431 2.3571+-0.9572 might be 1.1479x faster
array-prototype-some 90.8228+-2.7864 89.6733+-2.8048 might be 1.0128x faster
basic-set 10.4547+-2.0367 ? 11.9348+-2.9121 ? might be 1.1416x slower
switch-string-basic-var 16.1942+-0.4521 ? 17.1710+-1.8773 ? might be 1.0603x slower
assign-custom-setter-polymorphic 3.7930+-0.7131 ? 4.0962+-0.5497 ? might be 1.0799x slower
put-by-val-direct 0.6442+-0.3338 0.5899+-0.2197 might be 1.0921x faster
ArrayBuffer-Int8Array-alloc-large-long-lived
38.6839+-3.1450 ? 40.8743+-3.5966 ? might be 1.0566x slower
simple-activation-demo 26.9043+-1.8089 ? 27.7692+-1.0835 ? might be 1.0321x slower
string-concat-pair-simple 13.8857+-1.1851 13.4443+-1.1085 might be 1.0328x faster
get-by-val-out-of-bounds 6.8398+-1.8257 ? 9.1345+-10.0386 ? might be 1.3355x slower
switch-string-length-tower-var 17.2370+-1.5626 ? 17.8713+-2.3242 ? might be 1.0368x slower
captured-assignments 0.5833+-0.1430 ? 0.6434+-0.3894 ? might be 1.1030x slower
string-var-equality 31.8922+-0.6568 ? 33.0188+-2.6479 ? might be 1.0353x slower
int-or-other-mod-then-get-by-val 5.4759+-0.8080 ? 6.7800+-2.6942 ? might be 1.2381x slower
Int32Array-alloc-large 27.3398+-2.5781 ? 28.9033+-2.1371 ? might be 1.0572x slower
sin-boolean 14.4808+-1.9120 13.5745+-1.3190 might be 1.0668x faster
string-concat-simple 14.4791+-1.6670 ? 15.2227+-0.9227 ? might be 1.0514x slower
getter-no-activation 7.9728+-1.4034 6.3340+-1.0575 might be 1.2587x faster
try-catch-get-by-val-direct-arguments 7.7863+-1.8898 6.8552+-0.4346 might be 1.1358x faster
infer-constant-property 4.7030+-1.3135 4.2955+-1.8310 might be 1.0949x faster
div-boolean 10.0912+-1.3566 ? 10.8278+-4.8555 ? might be 1.0730x slower
large-int 16.6567+-0.6864 16.2600+-1.7192 might be 1.0244x faster
external-arguments-putbyval 5.1277+-3.0161 4.2747+-0.8691 might be 1.1996x faster
max-boolean 4.2092+-2.0684 ? 4.4493+-1.9920 ? might be 1.0570x slower
get-by-id-proto-or-self 17.3015+-1.3910 ? 18.4445+-0.5896 ? might be 1.0661x slower
get-by-id-bimorphic-check-structure-elimination
9.5943+-2.1697 ? 10.2212+-0.8405 ? might be 1.0653x slower
string-equality 18.9870+-0.5900 ? 19.0445+-0.8089 ?
getter 8.6461+-3.6118 6.6000+-1.4289 might be 1.3100x faster
Int32Array-Int8Array-view-alloc 8.1345+-1.4050 7.5721+-0.6020 might be 1.0743x faster
substring-concat 53.1930+-2.7974 ? 55.9993+-1.9974 ? might be 1.0528x slower
integer-divide 12.7050+-0.4228 ? 12.7329+-0.8718 ?
object-closure-call 7.4688+-1.8183 ? 8.2328+-3.3262 ? might be 1.1023x slower
sinkable-new-object-dag 71.4318+-2.6033 ? 72.1090+-1.3057 ?
string-char-code-at 19.1411+-2.5652 17.9548+-0.5696 might be 1.0661x faster
double-to-uint32-typed-array-no-inline 4.7690+-2.2207 4.6349+-1.2212 might be 1.0289x faster
Int16Array-bubble-sort 23.6875+-1.2282 ? 25.1995+-4.5823 ? might be 1.0638x slower
switch-char 8.1601+-2.2176 ? 10.0454+-4.7773 ? might be 1.2310x slower
switch-char-constant 4.6063+-0.8993 ? 4.7957+-1.5436 ? might be 1.0411x slower
infer-one-time-closure-two-vars 11.7620+-0.4034 ? 11.8085+-0.9010 ?
object-test 5.4140+-3.7717 ? 5.8748+-0.6875 ? might be 1.0851x slower
external-arguments-getbyval 2.7710+-1.7577 2.6868+-3.1103 might be 1.0313x faster
plus-boolean 3.8138+-1.7386 ? 4.1951+-1.7136 ? might be 1.1000x slower
Int16Array-alloc-long-lived 60.0598+-8.4234 ? 62.6543+-9.4121 ? might be 1.0432x slower
fold-get-by-id-to-multi-get-by-offset 10.1360+-1.2825 9.2245+-1.6307 might be 1.0988x faster
infer-one-time-deep-closure 20.7645+-0.4126 20.4857+-0.8142 might be 1.0136x faster
new-array-buffer-push 7.6894+-1.0176 7.3466+-1.2016 might be 1.0467x faster
aliased-arguments-getbyval 2.5970+-1.8460 ? 3.0679+-2.0373 ? might be 1.1813x slower
by-val-generic 11.4345+-1.0545 ? 11.5435+-1.1881 ?
ArrayBuffer-Int8Array-alloc-long-lived 15.5457+-2.7362 14.8452+-0.6001 might be 1.0472x faster
exit-length-on-plain-object 17.9571+-1.0768 14.9766+-2.1958 might be 1.1990x faster
Int32Array-alloc 6.3258+-6.0443 4.1541+-0.5230 might be 1.5228x faster
weird-inlining-const-prop 5.9707+-4.0407 4.2590+-2.4518 might be 1.4019x faster
DataView-custom-properties 48.7978+-5.2105 46.8983+-4.6020 might be 1.0405x faster
HashMap-string-put-get-iterate 32.3616+-3.6637 30.5963+-6.1118 might be 1.0577x faster
get-by-id-bimorphic-check-structure-elimination-simple
4.5010+-2.2632 ? 5.8885+-3.1731 ? might be 1.3083x slower
temporal-structure 20.1317+-8.8416 17.2786+-4.1558 might be 1.1651x faster
for-of-iterate-array-values 5.1403+-1.4494 ? 6.5842+-1.7919 ? might be 1.2809x slower
varargs-construct 35.9721+-2.3162 35.5865+-0.5458 might be 1.0108x faster
double-to-uint32-typed-array 3.8569+-1.3585 3.4467+-0.8113 might be 1.1190x faster
int-or-other-mul-then-get-by-val 6.6797+-1.9618 6.4810+-0.8637 might be 1.0307x faster
put-by-val-machine-int 4.5885+-1.8582 ? 5.2481+-1.5488 ? might be 1.1438x slower
lots-of-fields 12.3842+-0.3721 ? 12.3878+-0.3099 ?
infer-closure-const-then-mov-no-inline 5.9599+-1.4362 5.7702+-2.1262 might be 1.0329x faster
arguments 10.4232+-0.4201 10.1344+-0.8301 might be 1.0285x faster
negative-zero-divide 0.4600+-0.1786 ? 0.4815+-0.0700 ? might be 1.0467x slower
big-int-mul 7.5687+-1.2104 5.5603+-1.9135 might be 1.3612x faster
try-catch-get-by-val-scoped-arguments 8.2580+-0.7252 ? 8.7881+-1.7421 ? might be 1.0642x slower
setter 7.1437+-1.3860 ? 7.3455+-1.7963 ? might be 1.0282x slower
neg-boolean 5.1138+-0.8665 4.9912+-3.0078 might be 1.0246x faster
poly-chain-access-simpler 4.5940+-1.5519 ? 5.2557+-2.0934 ? might be 1.1440x slower
put-by-id-slightly-polymorphic 5.8931+-4.2441 5.0129+-2.0393 might be 1.1756x faster
arguments-out-of-bounds 14.9481+-1.1780 ? 15.2169+-0.9053 ? might be 1.0180x slower
sink-function 11.5102+-1.1942 ? 12.4298+-3.0871 ? might be 1.0799x slower
marsaglia-larger-ints 46.1697+-3.6631 45.3900+-2.2033 might be 1.0172x faster
undefined-test 4.9902+-2.4547 4.6707+-1.2973 might be 1.0684x faster
imul-mixed 7.1968+-0.8845 ? 8.5932+-2.0363 ? might be 1.1940x slower
global-var-const-infer 1.1040+-1.1704 0.8358+-0.3005 might be 1.3210x faster
asmjs_bool_bug 9.1582+-2.1817 9.1404+-1.9054
double-pollution-putbyoffset 6.6136+-0.8858 ? 8.2978+-2.4447 ? might be 1.2547x slower
cell-argument 8.6685+-1.7547 ? 9.9395+-1.5812 ? might be 1.1466x slower
int-or-other-add 7.8536+-1.0458 ? 8.1957+-1.4069 ? might be 1.0436x slower
plus-boolean-arith 4.3368+-0.9005 ? 4.9485+-1.1730 ? might be 1.1410x slower
ArrayBuffer-Int32Array-byteOffset 5.5055+-1.6246 5.4635+-0.9832
mod-boolean 10.2205+-2.7163 ? 10.3340+-1.0365 ? might be 1.0111x slower
infer-closure-const-then-mov 17.7810+-1.0880 ? 17.9255+-2.1189 ?
large-int-neg 17.4709+-2.2382 16.9166+-1.0467 might be 1.0328x faster
fround 18.8022+-1.2833 18.5037+-1.1175 might be 1.0161x faster
elidable-new-object-dag 51.9355+-3.0425 50.5690+-1.2433 might be 1.0270x faster
make-indexed-storage 4.2975+-0.4620 4.2097+-1.3492 might be 1.0209x faster
int-or-other-add-then-get-by-val 7.5374+-2.6284 7.4824+-2.2060
string-cons-repeat 8.3494+-0.7776 ! 9.6598+-0.5283 ! definitely 1.1569x slower
logical-not 6.5190+-2.0072 ? 7.1760+-1.0824 ? might be 1.1008x slower
poly-chain-access-different-prototypes-simple
4.4944+-2.7871 ? 5.9269+-2.5868 ? might be 1.3187x slower
fixed-typed-array-storage-var-index 2.5918+-1.4240 1.8428+-0.5756 might be 1.4065x faster
function-test 5.3675+-1.3043 ? 6.1822+-0.9904 ? might be 1.1518x slower
string-cons-tower 8.2691+-0.1447 ? 8.3063+-0.5456 ?
destructuring-swap 6.4322+-1.3168 ? 7.2871+-1.0356 ? might be 1.1329x slower
int-or-other-max-then-get-by-val 6.3898+-1.9250 ? 6.5062+-0.6644 ? might be 1.0182x slower
fold-multi-get-by-offset-to-get-by-offset
9.2225+-1.1033 ? 9.2353+-2.1578 ?
method-on-number 21.4424+-5.7631 ? 22.6152+-4.0603 ? might be 1.0547x slower
put-by-id-replace-and-transition 10.0871+-1.5562 ? 10.1518+-0.6947 ?
int-or-other-neg-zero-then-get-by-val 24.1590+-1.3133 ? 25.6522+-3.3319 ? might be 1.0618x slower
varargs-strict-mode 11.0093+-0.1764 ? 11.7490+-2.2456 ? might be 1.0672x slower
string-get-by-val-out-of-bounds-insane 5.2690+-0.7449 ? 6.7994+-6.1918 ? might be 1.2905x slower
imul-double-only 8.7515+-1.5499 8.6330+-1.4055 might be 1.0137x faster
for-of-iterate-array-keys 6.2572+-2.8892 4.9329+-1.1803 might be 1.2685x faster
string-get-by-val 6.1516+-1.4930 ? 6.3129+-2.8066 ? might be 1.0262x slower
nested-function-parsing 45.9070+-3.2781 43.6746+-0.8794 might be 1.0511x faster
string-repeat-arith 31.9633+-0.1214 31.7034+-0.6910
inline-arguments-aliased-access 7.6375+-2.1038 6.3190+-1.0332 might be 1.2087x faster
allocate-big-object 3.5055+-1.2323 ? 4.2943+-0.8634 ? might be 1.2250x slower
elidable-new-object-tree 54.1660+-3.2454 53.7932+-5.1313
ArrayBuffer-Int8Array-alloc 11.9550+-0.3157 ? 14.8107+-5.0442 ? might be 1.2389x slower
int52-spill 9.6614+-1.1896 9.5397+-1.9768 might be 1.0128x faster
no-inline-constructor 146.1468+-3.2178 ? 150.9344+-9.7182 ? might be 1.0328x slower
hoist-make-rope 10.5746+-1.8419 10.5262+-1.0843
arguments-strict-mode 11.9515+-1.5245 10.9809+-0.6639 might be 1.0884x faster
function-with-eval 111.2984+-2.4989 ? 116.9548+-9.0329 ? might be 1.0508x slower
ArrayBuffer-DataView-alloc-long-lived 16.9072+-0.2701 ? 16.9410+-0.2426 ?
simple-poly-call-nested 10.7042+-5.7484 9.4275+-2.4668 might be 1.1354x faster
switch-string-big-length-tower-var 21.5795+-2.8891 21.2479+-0.8913 might be 1.0156x faster
number-test 6.1398+-2.4684 4.7821+-1.6545 might be 1.2839x faster
Int16Array-load-int-mul 3.1775+-2.7633 2.2947+-0.7465 might be 1.3847x faster
put-by-id 14.2815+-0.6308 ? 15.5510+-1.0359 ? might be 1.0889x slower
imul-int-only 10.4581+-2.7021 10.4308+-1.3605
gcse 8.9129+-3.6712 8.2250+-1.8650 might be 1.0836x faster
create-lots-of-functions 13.6030+-1.7127 ? 15.7971+-4.9637 ? might be 1.1613x slower
in-four-cases 21.8394+-0.2488 ? 22.2395+-1.4229 ? might be 1.0183x slower
elidable-new-object-then-call 39.7768+-7.0215 ? 45.7014+-5.7638 ? might be 1.1489x slower
int-or-other-sub-then-get-by-val 11.1523+-5.3065 7.7927+-2.7496 might be 1.4311x faster
mul-boolean-double 5.4703+-1.6402 4.5679+-0.9432 might be 1.1975x faster
mod-boolean-double 10.1464+-0.9848 ? 10.7502+-3.5533 ? might be 1.0595x slower
inline-arguments-access 6.7612+-1.1043 6.0251+-1.2916 might be 1.1222x faster
substring-concat-weird 49.3519+-1.3222 ? 49.5165+-1.5230 ?
varargs-construct-inline 26.7885+-4.3566 26.2867+-2.8786 might be 1.0191x faster
HashMap-put-get-iterate 34.8625+-6.4091 32.9703+-5.2669 might be 1.0574x faster
string-long-ident-equality 17.5038+-1.8417 16.7253+-1.8597 might be 1.0466x faster
mul-boolean 4.7805+-1.7849 ? 5.8307+-3.2808 ? might be 1.2197x slower
get-by-id-check-structure-elimination 10.7905+-5.1341 8.2825+-1.3364 might be 1.3028x faster
marsaglia-osr-entry 23.5854+-0.8285 ? 24.7144+-1.2663 ? might be 1.0479x slower
Float64Array-alloc-long-lived 85.3203+-11.7617 84.1420+-8.1645 might be 1.0140x faster
misc-strict-eq 36.3978+-5.0293 34.4390+-2.1235 might be 1.0569x faster
make-rope-cse 5.5098+-0.7058 5.0624+-0.7764 might be 1.0884x faster
array-with-double-sum 7.5555+-5.2349 4.3312+-0.8225 might be 1.7444x faster
substring 64.9260+-1.1708 64.4459+-4.1136
array-with-double-increment 5.6694+-0.8375 5.4617+-3.0154 might be 1.0380x faster
for-of-iterate-array-entries 8.4814+-1.0369 7.0153+-2.4036 might be 1.2090x faster
array-nonarray-polymorhpic-access 40.6588+-2.6710 40.4387+-2.0583
varargs 11.2692+-0.3092 ? 11.3948+-1.0154 ? might be 1.0111x slower
string-out-of-bounds 15.6551+-1.3154 15.5519+-3.0051
inlined-put-by-id-transition 12.3029+-1.9287 ? 12.6866+-1.1293 ? might be 1.0312x slower
minus-boolean-double 5.8055+-3.7925 4.8620+-1.2909 might be 1.1941x faster
delay-tear-off-arguments-strictmode 14.6583+-1.5575 14.1934+-1.7228 might be 1.0328x faster
array-prototype-every 92.1415+-5.5296 91.3357+-1.4389
chain-getter-access 11.8544+-1.3131 11.3326+-1.8084 might be 1.0460x faster
int-or-other-min-then-get-by-val 6.4427+-0.7135 ? 7.1292+-2.9463 ? might be 1.1065x slower
HashMap-put-get-iterate-keys 30.4596+-4.2461 ? 33.0388+-5.0436 ? might be 1.0847x slower
double-pollution-getbyval 10.7865+-1.8433 10.3257+-1.5389 might be 1.0446x faster
structure-hoist-over-transitions 4.3965+-2.1640 4.3428+-0.8812 might be 1.0124x faster
polymorphic-structure 21.2426+-0.8489 ? 21.3052+-0.9911 ?
sorting-benchmark 24.4138+-3.1627 ? 25.5563+-3.9109 ? might be 1.0468x slower
fixed-typed-array-storage 1.9752+-1.1536 1.6143+-1.3898 might be 1.2235x faster
switch-string-length-tower 14.1494+-0.6002 ? 15.4980+-3.3684 ? might be 1.0953x slower
fold-multi-get-by-offset-to-poly-get-by-offset
10.6769+-3.8366 8.1790+-2.7649 might be 1.3054x faster
Int8Array-load-with-byteLength 5.9915+-1.2222 5.0817+-1.3091 might be 1.1790x faster
Float64Array-to-Int16Array-set 72.5530+-1.4702 ? 72.7690+-4.3834 ?
infer-constant-global-property 338.4802+-7.7815 336.8730+-10.2182
int-overflow-local 7.5056+-1.8890 5.9991+-1.8848 might be 1.2511x faster
min-boolean 4.4395+-1.0269 ? 4.8566+-1.3560 ? might be 1.0939x slower
simple-getter-access 14.4204+-1.3349 ? 14.4515+-1.0717 ?
string-hash 5.1251+-4.2272 ? 5.1987+-4.3318 ? might be 1.0144x slower
arity-mismatch-inlining 1.6644+-1.9624 1.3419+-0.3575 might be 1.2403x faster
obviously-elidable-new-object 37.6332+-4.1281 36.1123+-6.7085 might be 1.0421x faster
deltablue-varargs 257.2297+-12.1139 242.0876+-25.7328 might be 1.0625x faster
gcse-poly-get 23.5024+-3.6260 ? 23.8622+-2.0960 ? might be 1.0153x slower
hoist-poly-check-structure-effectful-loop
8.3224+-3.2381 7.4072+-0.4646 might be 1.1236x faster
minus-boolean 3.5630+-0.7783 ? 3.9697+-1.6131 ? might be 1.1141x slower
gcse-poly-get-less-obvious 19.4833+-0.9247 ? 19.8281+-0.6785 ? might be 1.0177x slower
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
12.1473+-2.5731 11.0291+-2.1810 might be 1.1014x faster
branch-fold 6.4734+-0.8646 5.2115+-1.2845 might be 1.2422x faster
double-to-int32-typed-array 3.5834+-2.0079 ? 3.7970+-2.1232 ? might be 1.0596x slower
plus-boolean-double 4.1123+-1.7148 ? 5.1945+-4.5664 ? might be 1.2632x slower
hoist-poly-check-structure 6.1690+-3.4944 4.9611+-1.5022 might be 1.2435x faster
infer-one-time-closure-ten-vars 12.4865+-1.9628 12.4150+-1.7240
array-with-double-mul-add 6.7922+-2.7176 ? 9.5287+-2.8141 ? might be 1.4029x slower
array-prototype-map 104.5956+-7.0641 101.9586+-9.0696 might be 1.0259x faster
varargs-inline 10.4749+-1.3502 9.7480+-0.8279 might be 1.0746x faster
undefined-property-access 362.1477+-2.6067 ? 366.8416+-10.8808 ? might be 1.0130x slower
array-with-int32-add-sub 8.9811+-1.7023 8.7044+-1.4788 might be 1.0318x faster
function-dot-apply 4.1769+-2.4070 ? 5.5134+-5.8673 ? might be 1.3200x slower
string-sub 66.1416+-1.1622 64.8066+-3.6355 might be 1.0206x faster
boolean-test 7.4142+-7.8216 6.0088+-2.4490 might be 1.2339x faster
emscripten-cube2hash 39.5045+-11.6122 36.4301+-2.6303 might be 1.0844x faster
Int32Array-alloc-long-lived 63.8124+-6.9419 ? 64.4120+-9.1251 ?
get-by-id-self-or-proto 18.9986+-4.1295 18.3290+-1.5619 might be 1.0365x faster
sinkable-new-object 44.1613+-5.8388 42.5882+-3.2596 might be 1.0369x faster
put-by-val-large-index-blank-indexing-type
8.0353+-1.1086 7.3174+-1.3624 might be 1.0981x faster
Int8Array-load 5.9863+-1.4052 4.4827+-0.9795 might be 1.3354x faster
int-or-other-abs-then-get-by-val 7.1273+-0.9408 6.6292+-0.6102 might be 1.0751x faster
abs-boolean 5.0075+-1.9338 ? 6.0146+-2.1906 ? might be 1.2011x slower
call-spread-call 25.1961+-1.9376 ? 26.5083+-4.1576 ? might be 1.0521x slower
unprofiled-licm 21.7029+-0.2085 ? 22.9080+-2.3943 ? might be 1.0555x slower
constant-test 6.4368+-1.9161 ? 6.5986+-1.5042 ? might be 1.0251x slower
cfg-simplify 4.1110+-0.4145 3.8821+-1.1359 might be 1.0589x faster
get-by-id-quadmorphic-check-structure-elimination-simple
5.7263+-2.0998 ? 5.9008+-3.2253 ? might be 1.0305x slower
fold-put-structure 8.6528+-5.2232 7.3922+-3.7477 might be 1.1705x faster
get-by-id-chain-from-try-block 8.3442+-1.7033 7.9191+-1.1212 might be 1.0537x faster
poly-chain-access-different-prototypes 3.9505+-1.6342 ? 4.3611+-1.5995 ? might be 1.1039x slower
get_callee_monomorphic 3.5169+-0.8882 ? 3.5261+-0.7093 ?
deconstructing-parameters-overridden-by-function
0.6546+-0.2982 ? 0.8624+-0.7733 ? might be 1.3175x slower
empty-string-plus-int 6.9362+-1.4408 ? 7.0975+-0.9078 ? might be 1.0233x slower
Float32Array-to-Float64Array-set 61.1100+-0.2366 ! 77.4109+-5.0343 ! definitely 1.2667x slower
switch-string-short 15.0240+-1.7534 ? 15.0978+-1.3089 ?
switch-string-basic-big 21.7041+-4.6257 20.6918+-4.6388 might be 1.0489x faster
double-get-by-val-out-of-bounds 6.6616+-1.0869 ? 6.7173+-1.9362 ?
large-int-captured 6.7657+-0.3922 ? 7.2672+-1.3648 ? might be 1.0741x slower
elidable-new-object-roflcopter 56.4852+-2.3496 ? 59.8578+-1.6914 ? might be 1.0597x slower
string-get-by-val-out-of-bounds 9.0815+-5.2400 6.8718+-1.7862 might be 1.3216x faster
array-with-double-add 6.6412+-2.9816 ? 6.8474+-2.6017 ? might be 1.0310x slower
string-test 4.5577+-0.5621 ? 5.0903+-1.5108 ? might be 1.1169x slower
switch 16.4243+-0.9217 16.2262+-0.9828 might be 1.0122x faster
inline-get-scoped-var 6.7468+-0.8603 ? 8.6081+-5.0086 ? might be 1.2759x slower
tear-off-arguments-simple 4.8092+-1.0861 ? 5.1522+-1.4321 ? might be 1.0713x slower
negative-zero-modulo 0.7843+-0.5645 0.6077+-0.7577 might be 1.2907x faster
infer-closure-const-then-reenter 25.3303+-1.2399 24.3925+-0.7086 might be 1.0384x faster
array-prototype-forEach 89.0289+-4.2164 86.4977+-0.7775 might be 1.0293x faster
switch-constant 10.4992+-1.5769 ? 11.4468+-1.9705 ? might be 1.0903x slower
negative-zero-negate 0.5182+-0.4963 0.4841+-0.2646 might be 1.0706x faster
fold-get-by-id-to-multi-get-by-offset-rare-int
10.0860+-0.4097 ? 10.3482+-2.2326 ? might be 1.0260x slower
in-one-case-false 12.5378+-1.3048 ? 13.0298+-4.9286 ? might be 1.0392x slower
int-or-other-div-then-get-by-val 6.4880+-1.3135 6.1251+-0.1801 might be 1.0593x faster
typed-array-get-set-by-val-profiling 33.0021+-0.3917 32.8954+-1.0862
Int8Array-alloc-long-lived 55.2307+-7.5368 ? 55.8254+-9.9898 ? might be 1.0108x slower
simple-poly-call 2.0049+-0.6662 ? 2.1122+-1.1366 ? might be 1.0535x slower
fold-multi-put-by-offset-to-put-by-offset
8.0346+-2.5680 ? 9.2097+-5.2305 ? might be 1.1463x slower
switch-string-basic-big-var 23.8124+-3.1303 22.6641+-1.7056 might be 1.0507x faster
Int16Array-to-Int32Array-set 60.1464+-1.0926 59.3321+-1.6132 might be 1.0137x faster
sinkable-new-object-taken 56.2842+-2.5595 ? 58.4227+-6.3010 ? might be 1.0380x slower
string-concat-pair-object 3.0779+-0.7238 ? 3.1323+-1.0859 ? might be 1.0176x slower
branch-on-string-as-boolean 17.3308+-1.6325 16.4380+-0.0823 might be 1.0543x faster
obvious-sink-pathology-taken 157.9880+-2.4916 ? 158.6019+-8.3909 ?
ftl-library-inlining 74.4737+-3.4686 72.9978+-4.1927 might be 1.0202x faster
array-with-int32-or-double-sum 4.7980+-0.7537 4.7949+-1.4856
Int16Array-bubble-sort-with-byteLength 23.6345+-2.9763 23.3904+-1.8374 might be 1.0104x faster
<geometric> 11.4648+-0.1869 11.3708+-0.0923 might be 1.0083x faster
Conf#1 Conf#2
Geomean of preferred means:
<scaled-result> 48.4169+-1.0673 ? 48.7213+-0.7219 ? might be 1.0063x slower
Comment on attachment 252018 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=252018&action=review > Source/JavaScriptCore/runtime/Identifier.h:290 > - static unsigned hash(const RefPtr<StringImpl>& key) { return key->existingHash(); } > - static unsigned hash(StringImpl* key) { return key->existingHash(); } > + static unsigned hash(const RefPtr<StringImpl>& key) > + { > + return key->existingSymbolAwareHash(); > + } > + static unsigned hash(StringImpl* key) > + { > + return key->existingSymbolAwareHash(); > + } I think you could have left these as single line. > Source/WTF/wtf/text/StringImpl.h:799 > + unsigned const& hashForSymbol() const We normally write const unsigned& despite the fact that unsigned const& makes more sense. I suggest implementing one of these two functions in terms of the other with a const_cast, so we don’t have to repeat the tailPointer trickery twice. > Source/WTF/wtf/text/StringStatics.cpp:56 > +unsigned StringImpl::computeHashForSymbol() I think “compute” is not a great name for a function that has side effects. Maybe nextHashForSymbol() would be the right name for this. Comment on attachment 252018 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=252018&action=review Thank you for your review! >> Source/JavaScriptCore/runtime/Identifier.h:290 >> + } > > I think you could have left these as single line. Right. Fixed. >> Source/WTF/wtf/text/StringImpl.h:799 >> + unsigned const& hashForSymbol() const > > We normally write const unsigned& despite the fact that unsigned const& makes more sense. > > I suggest implementing one of these two functions in terms of the other with a const_cast, so we don’t have to repeat the tailPointer trickery twice. I see. Using const_cast and don't repeat the (almost) same implementations twice is nice. >> Source/WTF/wtf/text/StringStatics.cpp:56 >> +unsigned StringImpl::computeHashForSymbol() > > I think “compute” is not a great name for a function that has side effects. Maybe nextHashForSymbol() would be the right name for this. Ah thanks! I've fixed. Created attachment 252046 [details]
Patch
Ah, oops. Accidentally, I've uploaded the patch and drop r+... I'll land it manually. Committed r183624: <http://trac.webkit.org/changeset/183624> |