WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
144347
Use the default hash value for Symbolized StringImpl
https://bugs.webkit.org/show_bug.cgi?id=144347
Summary
Use the default hash value for Symbolized StringImpl
Yusuke Suzuki
Reported
2015-04-28 12:40:06 PDT
Currently, symbolized StringImpl* has a special hash value to avoid the hash collision with the other normal StringImpl*. (Maybe it is introduced when private symbols are introduced) However, it prevents using symbolized StringImpl* in the other place (such as using it as WTFString cause a problem because of its special hash value). I think this situation leads a serious error easily. To avoid this, I propose using the usual hash value in symbolized StringImpl*. And if collision is a problem, I suggest introducing a special Hasher for PropertyTable.
Attachments
Patch
(10.21 KB, patch)
2015-04-28 13:16 PDT
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(10.29 KB, patch)
2015-04-28 13:17 PDT
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(13.39 KB, patch)
2015-04-29 18:13 PDT
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(13.72 KB, patch)
2015-04-30 01:32 PDT
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Yusuke Suzuki
Comment 1
2015-04-28 13:04:16 PDT
https://bugs.webkit.org/show_bug.cgi?id=143947
is the example.
Yusuke Suzuki
Comment 2
2015-04-28 13:12:54 PDT
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.
Yusuke Suzuki
Comment 3
2015-04-28 13:16:13 PDT
Created
attachment 251881
[details]
Patch
Yusuke Suzuki
Comment 4
2015-04-28 13:17:29 PDT
Created
attachment 251882
[details]
Patch
Yusuke Suzuki
Comment 5
2015-04-28 13:18:26 PDT
I'll take performance results.
Yusuke Suzuki
Comment 6
2015-04-28 14:01:16 PDT
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
Yusuke Suzuki
Comment 7
2015-04-29 08:49:05 PDT
I'll update the patch. 1. private symbols hold the actual string to provide the distributed hash values 2. just use existingHash() in IdentifierRepHash!
Yusuke Suzuki
Comment 8
2015-04-29 08:57:26 PDT
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.
Yusuke Suzuki
Comment 9
2015-04-29 18:13:41 PDT
Created
attachment 252018
[details]
Patch
Yusuke Suzuki
Comment 10
2015-04-29 18:18:31 PDT
Now running run-jsc-benchmarks...
Yusuke Suzuki
Comment 11
2015-04-29 19:32:06 PDT
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
Darin Adler
Comment 12
2015-04-29 19:32:15 PDT
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.
Yusuke Suzuki
Comment 13
2015-04-30 01:11:20 PDT
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.
Yusuke Suzuki
Comment 14
2015-04-30 01:32:41 PDT
Created
attachment 252046
[details]
Patch
Yusuke Suzuki
Comment 15
2015-04-30 01:33:25 PDT
Ah, oops. Accidentally, I've uploaded the patch and drop r+... I'll land it manually.
Yusuke Suzuki
Comment 16
2015-04-30 01:39:09 PDT
Committed
r183624
: <
http://trac.webkit.org/changeset/183624
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug