RESOLVED FIXED 143232
JSC should detect singleton functions
https://bugs.webkit.org/show_bug.cgi?id=143232
Summary JSC should detect singleton functions
Filip Pizlo
Reported 2015-03-30 11:39:03 PDT
We currently don't really need to detect singleton functions because we have lots of other crazy ways of optimizing scoped accesses. But now that the scope is loaded from the function, it would be simpler and a bit more efficient to just detect singleton functions.
Attachments
work in progress (58.48 KB, patch)
2015-03-30 11:56 PDT, Filip Pizlo
no flags
more (84.67 KB, patch)
2015-03-30 15:30 PDT, Filip Pizlo
no flags
all good (115.35 KB, patch)
2015-03-31 12:16 PDT, Filip Pizlo
msaboff: review+
with fixes (115.57 KB, patch)
2015-03-31 13:06 PDT, Filip Pizlo
no flags
the patch? (116.61 KB, patch)
2015-03-31 16:01 PDT, Filip Pizlo
no flags
more (118.04 KB, patch)
2015-04-07 17:04 PDT, Filip Pizlo
no flags
even more (151.44 KB, patch)
2015-04-07 20:16 PDT, Filip Pizlo
no flags
this might be the one! (157.96 KB, patch)
2015-04-07 21:34 PDT, Filip Pizlo
no flags
the patch (163.14 KB, patch)
2015-04-08 12:35 PDT, Filip Pizlo
no flags
fix some builds (163.53 KB, patch)
2015-04-08 14:14 PDT, Filip Pizlo
no flags
more fixes (165.23 KB, patch)
2015-04-08 16:05 PDT, Filip Pizlo
no flags
fix style (165.23 KB, patch)
2015-04-08 20:43 PDT, Filip Pizlo
ggaren: review+
Filip Pizlo
Comment 1 2015-03-30 11:56:59 PDT
Created attachment 249753 [details] work in progress
Filip Pizlo
Comment 2 2015-03-30 14:52:47 PDT
This should make implementing block scoping easier, since the watchpointing of values in scopes no longer relies on a function reentry watchpoint.
Filip Pizlo
Comment 3 2015-03-30 15:30:05 PDT
Filip Pizlo
Comment 4 2015-03-31 12:16:56 PDT
Created attachment 249840 [details] all good
WebKit Commit Bot
Comment 5 2015-03-31 12:19:36 PDT
Attachment 249840 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/JSFunction.h:70: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSFunction.h:70: The parameter name "executable" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSFunction.h:70: The parameter name "scope" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 3 in 69 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 6 2015-03-31 12:21:22 PDT
(In reply to comment #5) > Attachment 249840 [details] did not pass style-queue: > > > ERROR: Source/JavaScriptCore/runtime/JSFunction.h:70: The parameter name > "vm" adds no information, so it should be removed. > [readability/parameter_name] [5] > ERROR: Source/JavaScriptCore/runtime/JSFunction.h:70: The parameter name > "executable" adds no information, so it should be removed. > [readability/parameter_name] [5] > ERROR: Source/JavaScriptCore/runtime/JSFunction.h:70: The parameter name > "scope" adds no information, so it should be removed. > [readability/parameter_name] [5] > Total errors found: 3 in 69 files Fixed locally. > > > If any of these errors are false positives, please file a bug against > check-webkit-style.
Michael Saboff
Comment 7 2015-03-31 12:55:26 PDT
Comment on attachment 249840 [details] all good View in context: https://bugs.webkit.org/attachment.cgi?id=249840&action=review r=me > Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3466 > + // Main thread stores to the global object: always first store a value first, and Should the clause actually be "always store a value first,"? > Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3467 > + // only after that we touch the watchpoint set. There is a fence in the touch, that Would it make sense to add "do" before "we"?
Filip Pizlo
Comment 8 2015-03-31 13:06:26 PDT
Created attachment 249844 [details] with fixes Address review feedback. Should fix build.
Filip Pizlo
Comment 9 2015-03-31 13:09:57 PDT
There are some perf pathologies in CompressionBench. I'll investigate. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on oldmac. VMs tested: "TipOfTree" at /home/pizlo/WebKit/secondary/OpenSource/WebKitBuild/Release/bin/jsc "FunctionRealloc" at /home/pizlo/WebKit/primary/OpenSource/WebKitBuild/Release/bin/jsc Collected 6 samples per benchmark/VM, with 6 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. TipOfTree FunctionRealloc SunSpider: 3d-cube 9.3927+-1.8483 ? 10.3775+-1.4847 ? might be 1.1048x slower 3d-morph 23.5558+-3.1663 21.6784+-1.8651 might be 1.0866x faster 3d-raytrace 12.5393+-2.0719 12.0161+-1.5998 might be 1.0435x faster access-binary-trees 4.8812+-1.3332 ? 5.1445+-1.9022 ? might be 1.0539x slower access-fannkuch 11.2394+-1.7326 ? 11.9386+-1.1693 ? might be 1.0622x slower access-nbody 5.1036+-0.4620 ? 5.4509+-0.7176 ? might be 1.0681x slower access-nsieve 6.2306+-1.2258 6.2264+-1.5130 bitops-3bit-bits-in-byte 2.6175+-0.5868 ? 2.8580+-0.4253 ? might be 1.0919x slower bitops-bits-in-byte 7.8233+-1.6677 6.9554+-0.7678 might be 1.1248x faster bitops-bitwise-and 3.4921+-0.6541 ? 4.0706+-0.8163 ? might be 1.1657x slower bitops-nsieve-bits 6.1803+-0.1647 ? 6.6783+-1.1447 ? might be 1.0806x slower controlflow-recursive 4.7417+-0.4712 4.7040+-1.0420 crypto-aes 6.7043+-0.1485 6.5564+-0.2377 might be 1.0226x faster crypto-md5 4.7288+-0.8535 ? 4.9893+-0.7757 ? might be 1.0551x slower crypto-sha1 6.1534+-1.9704 4.3193+-0.8673 might be 1.4246x faster date-format-tofte 17.1707+-3.7331 15.3980+-0.4944 might be 1.1151x faster date-format-xparb 12.2037+-2.7149 10.6510+-1.1884 might be 1.1458x faster math-cordic 5.7905+-1.0880 ? 6.4437+-1.3517 ? might be 1.1128x slower math-partial-sums 18.0555+-0.0801 17.9943+-0.0660 math-spectral-norm 3.8210+-0.7226 ? 4.4190+-0.8149 ? might be 1.1565x slower regexp-dna 11.2852+-0.0442 ? 12.0616+-1.9415 ? might be 1.0688x slower string-base64 6.4191+-0.0877 ? 6.5739+-0.3238 ? might be 1.0241x slower string-fasta 15.3351+-2.3861 14.7872+-2.9285 might be 1.0371x faster string-tagcloud 18.3768+-1.2366 18.2568+-1.5532 string-unpack-code 32.9510+-1.4864 32.7387+-0.5484 string-validate-input 9.0435+-1.4952 ? 9.3000+-1.5615 ? might be 1.0284x slower <arithmetic> 10.2245+-0.2099 10.0995+-0.3191 might be 1.0124x faster TipOfTree FunctionRealloc LongSpider: 3d-cube 1712.6300+-21.4639 ? 1724.1806+-40.6021 ? 3d-morph 4157.1873+-12.2667 ? 4174.3197+-20.2732 ? 3d-raytrace 1376.7355+-9.5985 ! 1412.9830+-6.2525 ! definitely 1.0263x slower access-binary-trees 1658.3138+-16.1820 1657.3691+-10.5446 access-fannkuch 534.3027+-19.7702 ? 555.3927+-26.0238 ? might be 1.0395x slower access-nbody 1216.8623+-4.4274 1213.9810+-5.2013 access-nsieve 1218.9384+-8.9384 ? 1220.3412+-16.0518 ? bitops-3bit-bits-in-byte 62.9862+-2.7846 62.4499+-2.0066 bitops-bits-in-byte 399.0030+-3.7246 ? 399.3698+-3.3687 ? bitops-nsieve-bits 1147.5780+-10.2248 1144.2249+-6.9929 controlflow-recursive 831.9004+-9.3905 820.3755+-3.0040 might be 1.0140x faster crypto-aes 1157.9582+-7.3481 ? 1162.9887+-6.4068 ? crypto-md5 907.8794+-9.6367 906.1702+-20.6249 crypto-sha1 1058.8525+-14.6407 1050.9257+-9.9945 date-format-tofte 1383.1835+-56.7323 1325.1572+-15.5792 might be 1.0438x faster date-format-xparb 1214.9996+-11.6471 ^ 1138.7748+-48.9319 ^ definitely 1.0669x faster math-cordic 816.1796+-4.2416 815.2502+-4.5022 math-partial-sums 1968.4484+-3.8607 ^ 1955.0970+-4.8144 ^ definitely 1.0068x faster math-spectral-norm 1306.4214+-2.6181 1306.4146+-5.8093 string-base64 553.4489+-13.1187 549.4940+-18.0411 string-fasta 942.9110+-38.3970 896.0475+-9.5482 might be 1.0523x faster string-tagcloud 385.2338+-4.5271 ? 387.8548+-7.1329 ? <geometric> 937.7653+-5.2358 932.5396+-3.3715 might be 1.0056x faster TipOfTree FunctionRealloc V8Spider: crypto 86.4222+-2.2984 ? 89.7272+-4.8254 ? might be 1.0382x slower deltablue 116.8864+-19.2434 112.7854+-11.2138 might be 1.0364x faster earley-boyer 75.8636+-2.4877 ? 77.2036+-3.0241 ? might be 1.0177x slower raytrace 53.0747+-12.2419 ? 55.9456+-7.5687 ? might be 1.0541x slower regexp 112.7055+-0.7269 ? 113.1554+-0.4287 ? richards 124.7788+-8.3877 118.3923+-5.4382 might be 1.0539x faster splay 60.9011+-3.1350 60.8982+-1.5767 <geometric> 85.7271+-4.5254 ? 86.1554+-1.9961 ? might be 1.0050x slower TipOfTree FunctionRealloc Octane: encrypt 0.34609+-0.00138 ? 0.34700+-0.00298 ? decrypt 6.25669+-0.01962 ? 6.26907+-0.02945 ? deltablue x2 0.33038+-0.00362 0.32846+-0.00447 earley 0.96014+-0.01427 0.95743+-0.01069 boyer 12.38363+-0.15715 12.37759+-0.07690 navier-stokes x2 7.88809+-0.00452 ! 7.90223+-0.00561 ! definitely 1.0018x slower raytrace x2 2.14260+-0.10196 ? 2.20183+-0.13576 ? might be 1.0276x slower richards x2 0.22031+-0.00147 ? 0.22102+-0.00170 ? splay x2 0.62017+-0.00762 ? 0.62249+-0.00669 ? regexp x2 58.03444+-0.97246 57.70738+-0.99109 pdfjs x2 82.73664+-1.57898 ? 84.50687+-0.83376 ? might be 1.0214x slower mandreel x2 87.93816+-1.99566 86.79938+-0.99672 might be 1.0131x faster gbemu x2 79.96769+-9.53319 75.53983+-2.68907 might be 1.0586x faster closure 0.88788+-0.00548 0.88099+-0.00280 jquery 11.64480+-0.06114 11.60246+-0.03312 box2d x2 22.49244+-0.29788 ^ 21.57721+-0.16184 ^ definitely 1.0424x faster zlib x2 594.35528+-54.86557 ? 652.16482+-43.30586 ? might be 1.0973x slower typescript x2 1317.18315+-29.31654 1306.60579+-13.72498 <geometric> 11.42052+-0.13145 ? 11.43520+-0.09474 ? might be 1.0013x slower TipOfTree FunctionRealloc Kraken: ai-astar 513.861+-3.354 ? 524.119+-21.324 ? might be 1.0200x slower audio-beat-detection 185.313+-4.384 ? 187.915+-5.633 ? might be 1.0140x slower audio-dft 242.134+-1.799 ? 243.175+-3.542 ? audio-fft 138.039+-7.647 ? 146.888+-5.864 ? might be 1.0641x slower audio-oscillator 315.134+-2.403 ? 316.194+-2.053 ? imaging-darkroom 225.047+-3.308 223.728+-3.350 imaging-desaturate 116.416+-2.733 116.233+-2.625 imaging-gaussian-blur 196.472+-2.612 196.432+-4.282 json-parse-financial 90.952+-0.801 90.600+-0.402 json-stringify-tinderbox 99.845+-0.682 ^ 98.191+-0.573 ^ definitely 1.0168x faster stanford-crypto-aes 106.183+-3.280 105.531+-2.785 stanford-crypto-ccm 91.398+-3.869 ? 95.621+-9.437 ? might be 1.0462x slower stanford-crypto-pbkdf2 290.288+-2.129 ? 292.126+-3.889 ? stanford-crypto-sha256-iterative 90.418+-1.892 ? 90.681+-2.543 ? <arithmetic> 192.964+-0.710 ? 194.817+-1.589 ? might be 1.0096x slower TipOfTree FunctionRealloc JSRegress: string-concat-object 4.1331+-0.4336 3.9305+-0.5191 might be 1.0515x faster array-with-double-add 7.3525+-1.6249 ? 8.0118+-1.3576 ? might be 1.0897x slower function-with-eval 165.2315+-1.0274 162.1337+-3.0188 might be 1.0191x faster logical-not 8.6750+-0.3274 8.6239+-0.4859 ArrayBuffer-Int8Array-alloc 22.7898+-1.6087 21.3260+-1.9768 might be 1.0686x faster int-or-other-neg-then-get-by-val 8.9694+-1.6959 7.8311+-0.5134 might be 1.1454x faster infer-closure-const-then-reenter-no-inline 83.3424+-2.5907 ! 97.6171+-0.7365 ! definitely 1.1713x slower infer-one-time-closure 17.7982+-1.5861 ? 17.8459+-1.6061 ? substring 98.1547+-5.9465 92.9586+-2.3325 might be 1.0559x faster getter 10.6856+-2.1625 9.7270+-1.7427 might be 1.0986x faster fold-get-by-id-to-multi-get-by-offset-rare-int 14.5086+-1.7346 ? 14.5503+-2.1568 ? imul-mixed 13.2085+-1.2824 ? 13.7556+-1.2431 ? might be 1.0414x slower getter-no-activation 8.4005+-1.2637 8.3891+-2.1689 substring-concat 76.7749+-0.6797 ? 77.0467+-1.2568 ? undefined-property-access 581.4713+-2.9068 ^ 525.4448+-2.6439 ^ definitely 1.1066x faster sinkable-new-object-dag 105.0912+-2.0912 ? 106.8400+-3.1117 ? might be 1.0166x slower fold-multi-put-by-offset-to-put-by-offset 8.7699+-2.1910 ? 10.4214+-1.8332 ? might be 1.1883x slower varargs-call 21.6717+-0.5074 ? 23.9276+-2.3686 ? might be 1.1041x slower basic-set 14.3798+-1.6213 ? 15.0500+-2.2439 ? might be 1.0466x slower int-or-other-min-then-get-by-val 8.0947+-1.3830 7.8690+-1.4859 might be 1.0287x faster Float64Array-to-Int16Array-set 118.0739+-1.5744 ? 118.1057+-1.8511 ? switch-constant 12.9303+-1.0725 ? 13.3358+-1.8458 ? might be 1.0314x slower array-prototype-some 149.6493+-6.4309 147.6893+-4.8334 might be 1.0133x faster gcse-poly-get-less-obvious 30.4652+-1.5335 ? 30.8305+-2.3120 ? might be 1.0120x slower string-out-of-bounds 21.0960+-0.3055 ? 22.1875+-1.0636 ? might be 1.0517x slower string-concat-pair-simple 17.8265+-1.4125 ? 18.0328+-1.3941 ? might be 1.0116x slower double-to-int32-typed-array 3.8047+-0.6989 ? 4.2555+-0.0861 ? might be 1.1185x slower sparse-conditional 2.6863+-0.4602 2.2996+-0.4897 might be 1.1681x faster external-arguments-getbyval 2.7742+-0.7443 ? 3.2356+-1.2947 ? might be 1.1663x slower get-by-id-proto-or-self 29.9170+-2.8901 28.5693+-2.3399 might be 1.0472x faster Int8Array-load 6.4299+-1.3992 ? 6.8507+-1.5938 ? might be 1.0655x slower slow-array-profile-convergence 4.4463+-0.0408 ? 5.3347+-1.0177 ? might be 1.1998x slower make-rope-cse 6.7788+-0.3622 ? 7.1635+-0.0647 ? might be 1.0567x slower marsaglia-larger-ints 67.4926+-1.9478 67.0031+-1.2025 HashMap-put-get-iterate 43.9340+-2.0496 43.0710+-2.8617 might be 1.0200x faster plus-boolean-arith 5.1296+-1.0726 4.7387+-0.8986 might be 1.0825x faster nested-function-parsing 62.5202+-0.7629 ! 64.1783+-0.5322 ! definitely 1.0265x slower plus-boolean 4.9980+-1.8859 3.9158+-0.4664 might be 1.2764x faster put-by-val-direct 1.1375+-0.2338 ? 1.2194+-0.1932 ? might be 1.0720x slower negative-zero-negate 0.6130+-0.0962 0.5894+-0.1187 might be 1.0399x faster inline-get-scoped-var 7.9749+-0.8455 ? 8.2491+-1.5856 ? might be 1.0344x slower global-var-const-infer-fire-from-opt 2.1568+-1.6487 2.1545+-1.2628 arguments-out-of-bounds 22.1458+-0.4461 21.4967+-0.5681 might be 1.0302x faster large-int-captured 10.6507+-1.9659 10.2518+-1.6068 might be 1.0389x faster object-closure-call 9.8663+-1.6626 9.8505+-1.8615 array-nonarray-polymorhpic-access 60.6990+-4.3365 59.7797+-4.4807 might be 1.0154x faster poly-chain-access-different-prototypes-simple 4.9943+-0.9967 ? 6.5967+-2.1634 ? might be 1.3208x slower inline-arguments-aliased-access 9.0350+-1.6901 8.3214+-0.9576 might be 1.0858x faster switch-string-basic-big-var 38.6795+-0.9497 ? 39.3291+-0.7283 ? might be 1.0168x slower tear-off-arguments 8.3411+-1.3714 8.1512+-0.9861 might be 1.0233x faster neg-boolean 6.5004+-1.2247 6.1180+-1.2828 might be 1.0625x faster external-arguments-putbyval 5.8436+-0.7490 4.7250+-1.1445 might be 1.2367x faster array-with-int32-add-sub 12.6624+-2.1361 ? 13.1613+-2.3079 ? might be 1.0394x slower in-one-case-true 15.0920+-0.4381 ? 16.6793+-2.9208 ? might be 1.1052x slower string-get-by-val-out-of-bounds 9.6750+-2.7490 9.4634+-2.1308 might be 1.0224x faster Float32Array-to-Float64Array-set 100.5439+-1.3725 100.4899+-1.9363 get-by-val-out-of-bounds 7.1596+-0.7214 ? 8.1813+-1.7365 ? might be 1.1427x slower Int16Array-bubble-sort-with-byteLength 48.7245+-2.1840 48.2799+-2.8677 string-char-code-at 25.2042+-3.6632 ? 25.6789+-2.9643 ? might be 1.0188x slower double-pollution-getbyval 11.6953+-0.1628 ? 11.8954+-0.3743 ? might be 1.0171x slower obvious-sink-pathology-taken 204.2742+-1.8992 ? 204.6290+-2.8411 ? for-of-iterate-array-keys 7.4501+-1.8347 ? 8.0476+-1.9563 ? might be 1.0802x slower try-catch-get-by-val-direct-arguments 9.4877+-0.0354 ? 10.4214+-1.8576 ? might be 1.0984x slower arguments 15.3453+-1.0903 14.9008+-0.5758 might be 1.0298x faster to-int32-boolean 27.4456+-2.5249 26.6657+-0.4924 might be 1.0292x faster slow-convergence 6.1135+-0.4486 ^ 4.4623+-0.0639 ^ definitely 1.3700x faster new-array-dead 20.6069+-1.3492 19.8903+-1.0061 might be 1.0360x faster function-test 7.5100+-1.1332 7.0223+-1.7765 might be 1.0694x faster elidable-new-object-tree 74.8958+-2.1654 73.4664+-2.4848 might be 1.0195x faster varargs-inline 13.8626+-1.0402 ? 14.8818+-0.5105 ? might be 1.0735x slower get-by-id-self-or-proto 29.0742+-1.8144 ? 30.2278+-2.4499 ? might be 1.0397x slower fold-put-by-id-to-multi-put-by-offset 14.9158+-3.8287 13.0568+-2.3411 might be 1.1424x faster cmpeq-obj-to-obj-other 16.5774+-0.6350 ? 18.4022+-1.8493 ? might be 1.1101x slower in-two-cases 15.8858+-0.3778 ? 16.3715+-1.2692 ? might be 1.0306x slower direct-arguments-getbyval 2.4313+-0.9232 ? 2.5839+-0.9846 ? might be 1.0628x slower method-on-number 29.8306+-1.7739 28.2861+-0.9487 might be 1.0546x faster gcse-poly-get 32.7299+-2.4534 31.5986+-2.1018 might be 1.0358x faster branch-fold 6.4615+-1.2009 ? 6.9510+-1.2250 ? might be 1.0758x slower setter 8.5365+-0.6510 ? 8.8151+-1.4570 ? might be 1.0326x slower simple-activation-demo 36.6371+-0.3563 ? 38.3120+-2.1208 ? might be 1.0457x slower switch-string-basic-big 21.1182+-1.4417 ? 23.0440+-2.1673 ? might be 1.0912x slower double-to-uint32-typed-array 4.1045+-0.5528 3.9637+-0.7169 might be 1.0355x faster cell-argument 13.3107+-2.2246 12.4418+-0.5546 might be 1.0698x faster HashMap-put-get-iterate-keys 42.4377+-0.9345 ? 45.4631+-4.8469 ? might be 1.0713x slower array-with-double-sum 6.5466+-1.4309 ? 6.9577+-1.4269 ? might be 1.0628x slower sin-boolean 26.2377+-1.8061 26.0317+-1.6634 switch-string-length-tower 17.3553+-0.0522 ^ 16.6027+-0.0424 ^ definitely 1.0453x faster integer-modulo 3.9066+-1.0812 ? 4.4248+-0.8729 ? might be 1.1327x slower minus-boolean 4.9972+-0.9803 4.7617+-1.0376 might be 1.0495x faster plus-boolean-double 5.6785+-1.0594 ? 6.7063+-1.1711 ? might be 1.1810x slower weird-inlining-const-prop 4.6827+-2.0603 3.6344+-0.9114 might be 1.2884x faster get_callee_monomorphic 6.1488+-0.4030 ? 7.2278+-1.0474 ? might be 1.1755x slower singleton-scope 104.7633+-0.2421 ! 109.2273+-2.3759 ! definitely 1.0426x slower indexed-properties-in-objects 4.4072+-0.1290 ? 5.6432+-1.9858 ? might be 1.2804x slower function-dot-apply 3.7294+-0.7526 ? 4.2453+-0.9699 ? might be 1.1383x slower rare-osr-exit-on-local 24.3157+-2.5482 23.6240+-2.3544 might be 1.0293x faster in-one-case-false 16.7926+-1.9317 ? 17.3334+-2.7490 ? might be 1.0322x slower sinkable-new-object-taken 85.4812+-5.2929 83.7348+-2.7117 might be 1.0209x faster inlined-put-by-id-transition 18.5172+-0.8328 ? 19.6544+-1.4309 ? might be 1.0614x slower int-or-other-max-then-get-by-val 7.9321+-1.2313 ? 8.1562+-0.7359 ? might be 1.0282x slower string-cons-tower 11.9584+-0.1064 ? 11.9981+-0.0692 ? polymorphic-put-by-id 44.2642+-3.4460 ? 45.2116+-3.1653 ? might be 1.0214x slower string-repeat-arith 50.3586+-0.7573 ! 55.3770+-0.4638 ! definitely 1.0997x slower varargs 16.7673+-2.6264 16.3774+-0.2146 might be 1.0238x faster deltablue-varargs 348.1871+-11.1266 345.9655+-9.3573 undefined-test 6.4071+-1.2343 ? 7.0092+-1.8147 ? might be 1.0940x slower infer-one-time-closure-ten-vars 18.8096+-0.8130 ^ 17.7785+-0.1269 ^ definitely 1.0580x faster arguments-strict-mode 16.8280+-0.6263 ? 17.0412+-1.1624 ? might be 1.0127x slower imul-double-only 12.5883+-1.5999 12.4911+-1.5441 Float64Array-alloc-long-lived 103.1875+-1.8439 102.2204+-2.0729 tear-off-arguments-simple 5.7156+-0.8735 ? 6.2530+-1.3784 ? might be 1.0940x slower splice-to-remove 32.5669+-1.8579 ? 33.3354+-2.6106 ? might be 1.0236x slower fold-double-to-int 26.1076+-2.7128 25.0291+-0.7062 might be 1.0431x faster fold-put-structure 9.7543+-1.8179 9.7071+-1.9531 infer-closure-const-then-put-to-scope-no-inline 17.8738+-1.3627 ! 20.7871+-1.2706 ! definitely 1.1630x slower Int32Array-alloc-long-lived 82.1756+-1.1836 ? 82.4659+-1.5770 ? new-array-push 6.6601+-0.4976 ? 7.5287+-0.6704 ? might be 1.1304x slower infer-closure-const-then-mov-no-inline 6.0376+-0.7641 ? 8.0443+-1.8933 ? might be 1.3324x slower string-test 6.4943+-1.6038 ? 7.2229+-1.4537 ? might be 1.1122x slower call-spread-apply 47.4108+-2.1533 ? 49.4011+-5.1294 ? might be 1.0420x slower string-var-equality 54.5150+-1.6756 ^ 52.4035+-0.0784 ^ definitely 1.0403x faster captured-assignments 0.7523+-0.1663 ? 0.7955+-0.1713 ? might be 1.0575x slower register-pressure-from-osr 34.5943+-4.9054 33.2580+-2.8828 might be 1.0402x faster switch-string-basic 20.5780+-2.2720 ? 22.6458+-3.9292 ? might be 1.1005x slower hoist-poly-check-structure 6.2955+-1.3335 ? 7.1665+-1.3742 ? might be 1.1384x slower string-equality 29.4926+-5.9261 27.8624+-2.7451 might be 1.0585x faster mul-boolean 5.5966+-1.1212 4.3410+-0.3771 might be 1.2892x faster int-or-other-add 10.1258+-0.8154 9.8025+-0.6774 might be 1.0330x faster switch-string-big-length-tower-var 30.6421+-1.8812 30.4718+-1.4592 structure-hoist-over-transitions 5.1747+-1.3121 4.8115+-0.8208 might be 1.0755x faster array-with-int32-or-double-sum 6.4361+-1.1669 6.1510+-1.2760 might be 1.0464x faster get_callee_polymorphic 5.3673+-0.3930 ? 5.4115+-0.1999 ? fixed-typed-array-storage-var-index 2.2437+-0.4115 ? 2.2575+-0.6130 ? max-boolean 4.8072+-0.9545 4.2950+-0.8651 might be 1.1193x faster switch-string-length-tower-var 23.8527+-0.1324 ^ 23.1174+-0.0320 ^ definitely 1.0318x faster DataView-custom-properties 78.9757+-2.5133 ? 79.7572+-2.5465 ? elidable-new-object-roflcopter 73.8210+-5.8979 72.3543+-5.6609 might be 1.0203x faster Int32Array-Int8Array-view-alloc 11.3870+-0.6036 ? 11.5214+-0.1898 ? might be 1.0118x slower constant-test 9.5382+-0.8483 ? 10.0256+-1.0991 ? might be 1.0511x slower poly-chain-access-different-prototypes 4.8267+-1.5888 4.6674+-1.1468 might be 1.0341x faster Float32Array-matrix-mult 7.5221+-1.5374 7.0380+-0.2419 might be 1.0688x faster temporal-structure 21.2728+-2.5288 ? 22.7310+-2.0870 ? might be 1.0685x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 45.6100+-1.6293 ? 46.6044+-0.8011 ? might be 1.0218x slower switch-string-short 17.3809+-0.0999 ^ 16.5746+-0.0605 ^ definitely 1.0486x faster infer-closure-const-then-reenter 181.5669+-2.0224 ^ 34.7546+-0.3631 ^ definitely 5.2242x faster hoist-make-rope 17.7815+-0.9670 ? 18.4797+-1.5842 ? might be 1.0393x slower ArrayBuffer-DataView-alloc-long-lived 27.0790+-0.6252 ? 27.5136+-0.5277 ? might be 1.0160x slower put-by-id 19.7596+-0.6988 19.5826+-0.9831 marsaglia-osr-entry 35.1433+-2.4439 34.3422+-1.3157 might be 1.0233x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 15.2616+-1.7467 ? 16.6427+-2.9713 ? might be 1.0905x slower double-pollution-putbyoffset 8.9895+-1.6725 ? 10.0496+-3.0122 ? might be 1.1179x slower allocate-big-object 4.8097+-0.2305 ? 4.8237+-0.6354 ? ArrayBuffer-Int8Array-alloc-large-long-lived 75.1158+-2.6146 ^ 67.7994+-4.1495 ^ definitely 1.1079x faster new-array-buffer-push 10.1701+-0.3898 9.7193+-0.3084 might be 1.0464x faster proto-getter-access 15.7438+-1.9698 15.1745+-1.2859 might be 1.0375x faster elidable-new-object-then-call 65.0165+-1.8863 ? 66.1386+-2.6830 ? might be 1.0173x slower getter-richards 162.5688+-21.6944 157.6792+-9.3295 might be 1.0310x faster int-or-other-div-then-get-by-val 7.2026+-1.4680 ? 7.3310+-1.3733 ? might be 1.0178x slower for-of-iterate-array-entries 8.0518+-1.4014 ? 9.6695+-1.8806 ? might be 1.2009x slower switch-char-constant 5.6707+-1.3215 4.7314+-0.7734 might be 1.1985x faster infer-closure-const-then-put-to-scope 34.5287+-1.4602 ? 36.1645+-0.4194 ? might be 1.0474x slower varargs-strict-mode 16.4589+-2.0082 16.3476+-0.0867 get-by-id-quadmorphic-check-structure-elimination-simple 6.5141+-1.8491 ? 7.2647+-1.6594 ? might be 1.1152x slower infer-one-time-deep-closure 31.0538+-1.7563 30.4079+-0.9054 might be 1.0212x faster obvious-sink-pathology 193.3276+-1.7824 ? 194.7242+-5.3572 ? by-val-generic 14.7705+-0.4122 ? 16.5571+-2.6212 ? might be 1.1210x slower ftl-library-inlining 113.1843+-20.2965 ? 114.0601+-19.2391 ? array-access-polymorphic-structure 11.5600+-2.0347 11.2024+-1.2929 might be 1.0319x faster int-or-other-sub-then-get-by-val 8.9184+-1.3496 7.6993+-0.8800 might be 1.1583x faster Int16Array-load-int-mul 3.0353+-0.5343 2.7732+-0.5527 might be 1.0945x faster varargs-construct-inline 33.6563+-0.7327 ? 34.2858+-2.2946 ? might be 1.0187x slower get-by-id-bimorphic-check-structure-elimination 11.7346+-3.4445 11.5706+-2.6188 might be 1.0142x faster for-of-iterate-array-values 6.9768+-1.0211 ? 7.8172+-1.6042 ? might be 1.1205x slower string-get-by-val-out-of-bounds-insane 5.9778+-0.8561 5.6424+-0.2120 might be 1.0594x faster cfg-simplify 5.8690+-1.1478 5.3339+-0.7786 might be 1.1003x faster put-by-id-replace-and-transition 14.3352+-0.5686 14.2711+-1.1606 HashMap-string-put-get-iterate 41.8795+-2.6127 ? 42.8315+-2.4942 ? might be 1.0227x slower negative-zero-modulo 0.5887+-0.1308 0.5530+-0.1347 might be 1.0645x faster string-cons-repeat 11.9399+-0.3255 ? 12.0018+-0.2841 ? array-prototype-every 153.1156+-7.6803 146.3458+-6.4994 might be 1.0463x faster assign-custom-setter 6.2412+-0.0763 ? 6.7279+-0.8864 ? might be 1.0780x slower Int16Array-to-Int32Array-set 112.6842+-2.4712 ^ 99.1448+-2.6317 ^ definitely 1.1366x faster string-sub 98.2621+-2.9818 ! 104.9269+-2.4310 ! definitely 1.0678x slower string-get-by-val 6.9843+-1.6573 6.1730+-0.9859 might be 1.1314x faster mul-boolean-double 6.5012+-1.2422 ? 7.5038+-1.7683 ? might be 1.1542x slower infer-constant-global-property 494.0874+-2.8789 ? 494.4902+-3.1898 ? string-get-by-val-big-char 13.1410+-2.6686 12.9345+-1.7212 might be 1.0160x faster switch-char 9.8388+-0.2336 ? 11.5446+-1.7560 ? might be 1.1734x slower ArrayBuffer-Int8Array-alloc-long-lived 27.2399+-1.0396 ^ 24.5490+-0.7803 ^ definitely 1.1096x faster put-by-id-slightly-polymorphic 6.3022+-3.2506 5.4589+-0.9878 might be 1.1545x faster Int32Array-alloc-large 38.0667+-0.5581 ? 38.4395+-1.0390 ? infer-closure-const-then-mov 29.2384+-1.8265 ? 32.2907+-2.6336 ? might be 1.1044x slower exit-length-on-plain-object 21.7659+-0.1090 ^ 21.4329+-0.2089 ^ definitely 1.0155x faster object-test 6.6823+-1.2964 6.5208+-1.3674 might be 1.0248x faster poly-stricteq 80.4878+-0.1109 ? 81.1385+-1.3067 ? string-concat-simple 17.8630+-0.3782 ? 18.1691+-1.1251 ? might be 1.0171x slower large-int-neg 27.0183+-2.3535 25.0152+-0.2090 might be 1.0801x faster int-or-other-add-then-get-by-val 8.3490+-1.1028 8.1183+-1.4005 might be 1.0284x faster string-hash 4.3291+-1.2013 ? 4.3960+-0.8732 ? might be 1.0155x slower fold-multi-get-by-offset-to-poly-get-by-offset 13.5063+-3.2416 11.6581+-3.0429 might be 1.1585x faster simple-getter-access 20.7037+-1.0528 20.1712+-0.6343 might be 1.0264x faster ArrayBuffer-DataView-alloc-large-long-lived 70.8417+-3.3029 ? 71.4030+-1.0019 ? mod-boolean 10.7845+-0.2325 ? 11.7873+-1.4427 ? might be 1.0930x slower integer-divide 16.8208+-0.4158 ? 17.2799+-1.4233 ? might be 1.0273x slower make-indexed-storage 6.3986+-1.2148 ? 6.7296+-1.3560 ? might be 1.0517x slower chain-getter-access 17.0520+-1.4205 16.0935+-1.8976 might be 1.0596x faster int-or-other-neg-zero-then-get-by-val 37.0946+-1.3418 ? 37.3979+-0.5333 ? varargs-construct 48.0425+-1.4571 ? 50.1279+-2.4514 ? might be 1.0434x slower call-spread-call 37.2600+-1.4847 ? 39.4958+-1.7511 ? might be 1.0600x slower array-prototype-map 156.0912+-3.5712 ? 166.6296+-8.1009 ? might be 1.0675x slower div-boolean 12.7122+-1.8653 12.1572+-0.6186 might be 1.0457x faster try-catch-get-by-val-cloned-arguments 21.6048+-0.1967 ? 22.0427+-0.5453 ? might be 1.0203x slower lots-of-fields 24.4757+-1.0683 ? 24.8946+-0.6685 ? might be 1.0171x slower double-to-uint32-typed-array-no-inline 5.1740+-0.9416 4.5108+-0.9511 might be 1.1470x faster array-with-double-mul-add 9.6835+-2.6887 ? 10.8852+-2.3050 ? might be 1.1241x slower arity-mismatch-inlining 1.7327+-0.2726 1.6347+-0.3312 might be 1.0600x faster int-or-other-abs-zero-then-get-by-val 38.9401+-2.5978 38.5500+-2.7144 might be 1.0101x faster assign-custom-setter-polymorphic 4.9011+-0.8546 ? 5.1540+-0.7113 ? might be 1.0516x slower inline-arguments-access 7.8643+-1.2001 ? 8.5517+-0.9360 ? might be 1.0874x slower ArrayBuffer-Int32Array-byteOffset 5.8546+-0.3968 ? 6.4763+-1.3764 ? might be 1.1062x slower string-concat-pair-object 4.1082+-0.5223 ? 4.1693+-0.0499 ? might be 1.0149x slower big-int-mul 8.0975+-2.0253 7.9838+-1.2219 might be 1.0142x faster simple-poly-call-nested 12.9127+-1.1834 12.3571+-1.8312 might be 1.0450x faster inline-arguments-local-escape 7.4880+-0.5198 ? 8.3348+-0.9591 ? might be 1.1131x slower Int32Array-alloc 5.0411+-0.2843 5.0363+-0.1944 poly-chain-access-simpler 4.8992+-0.6778 ? 5.4043+-1.1040 ? might be 1.1031x slower adapt-to-double-divide 21.9694+-0.4239 ? 22.2947+-0.6047 ? might be 1.0148x slower abs-boolean 6.2254+-1.6461 5.9148+-1.1268 might be 1.0525x faster double-to-int32-typed-array-no-inline 4.2327+-0.6950 ? 4.3982+-1.4057 ? might be 1.0391x slower number-test 6.1469+-1.5018 5.8357+-1.0671 might be 1.0533x faster polymorphic-structure 27.3512+-2.1819 ? 27.8853+-2.6867 ? might be 1.0195x slower int-overflow-local 8.1801+-2.2051 ? 9.2571+-3.5795 ? might be 1.1317x slower div-boolean-double 6.9991+-0.3622 ? 7.3012+-1.4520 ? might be 1.0432x slower new-array-buffer-dead 5.7280+-1.0557 5.6670+-0.9959 might be 1.0108x faster in-four-cases 29.6939+-2.0237 ? 30.7677+-2.8198 ? might be 1.0362x slower Int16Array-alloc-long-lived 73.1728+-0.3661 ^ 71.7484+-0.9676 ^ definitely 1.0199x faster infer-constant-property 4.7104+-0.9096 ? 5.2323+-1.2287 ? might be 1.1108x slower Int8Array-alloc-long-lived 65.7314+-0.6789 ? 65.9612+-1.0574 ? put-by-val-large-index-blank-indexing-type 10.1652+-0.2301 ? 10.8263+-0.5025 ? might be 1.0650x slower boolean-test 6.4658+-1.4845 5.9284+-0.8934 might be 1.0906x faster double-get-by-val-out-of-bounds 7.3571+-0.9137 ? 8.4583+-1.8711 ? might be 1.1497x slower fold-multi-put-by-offset-to-poly-put-by-offset 11.3470+-1.2783 9.9430+-1.4963 might be 1.1412x faster polymorphic-get-by-id 5.6313+-0.9348 5.2335+-0.9987 might be 1.0760x faster int-or-other-mod-then-get-by-val 6.8902+-0.6892 ? 8.0750+-1.9349 ? might be 1.1719x slower min-boolean 4.1488+-0.8252 ? 5.4956+-1.3545 ? might be 1.3246x slower get-by-id-check-structure-elimination 9.2596+-0.4605 ? 9.3645+-0.2114 ? might be 1.0113x slower delay-tear-off-arguments-strictmode 21.6449+-2.3765 ? 22.7062+-2.4157 ? might be 1.0490x slower arguments-named-and-reflective 18.2091+-0.7621 18.0347+-0.5012 emscripten-cube2hash 54.6792+-8.6073 50.5494+-4.4136 might be 1.0817x faster put-by-val-machine-int 4.5337+-0.7442 ? 4.6960+-0.5990 ? might be 1.0358x slower try-catch-get-by-val-scoped-arguments 11.5208+-0.1942 ? 12.0230+-0.4159 ? might be 1.0436x slower minus-boolean-double 5.8029+-1.5989 5.4576+-1.1203 might be 1.0633x faster ftl-library-inlining-dataview 100.4742+-3.1301 ? 104.3418+-4.5625 ? might be 1.0385x slower destructuring-swap 10.1442+-0.6354 ? 10.6677+-1.5970 ? might be 1.0516x slower int-or-other-mul-then-get-by-val 8.0623+-1.1926 7.4357+-1.3863 might be 1.0843x faster misc-strict-eq 64.0642+-3.0669 ? 65.6877+-5.5913 ? might be 1.0253x slower int-or-other-sub 7.0800+-1.1763 6.5275+-1.0817 might be 1.0847x faster empty-string-plus-int 9.3695+-1.3103 8.9368+-1.7284 might be 1.0484x faster unprofiled-licm 34.9999+-1.7758 ? 36.1466+-4.6053 ? might be 1.0328x slower no-inline-constructor 177.5682+-1.4708 ? 177.9597+-1.9521 ? global-var-const-infer 1.2695+-0.2146 1.1063+-0.2115 might be 1.1475x faster get-by-id-bimorphic-check-structure-elimination-simple 4.5905+-0.8249 ? 4.6622+-0.9961 ? might be 1.0156x slower switch 18.4781+-2.3896 17.8021+-2.5561 might be 1.0380x faster obviously-elidable-new-object 57.6269+-1.9380 ? 58.9076+-1.4483 ? might be 1.0222x slower fixed-typed-array-storage 1.7862+-0.4109 ? 1.8198+-0.4035 ? might be 1.0188x slower substring-concat-weird 69.6988+-1.3866 ? 69.7988+-0.4315 ? sinkable-new-object 62.2484+-1.0901 61.9700+-1.4497 simple-poly-call 2.5915+-0.6260 ? 2.6630+-0.1542 ? might be 1.0276x slower negative-zero-divide 0.6238+-0.1268 0.5912+-0.1290 might be 1.0551x faster imul-int-only 15.6973+-1.0863 15.6483+-0.7474 hoist-poly-check-structure-effectful-loop 9.7757+-3.0720 9.6466+-1.8321 might be 1.0134x faster Int16Array-bubble-sort 46.4881+-1.6263 45.6230+-0.0976 might be 1.0190x faster int52-spill 11.3113+-0.3613 ? 13.1313+-1.9601 ? might be 1.1609x slower string-long-ident-equality 22.5336+-3.0419 21.6704+-1.0897 might be 1.0398x faster aliased-arguments-getbyval 2.9233+-1.2404 2.4813+-0.8392 might be 1.1782x faster fold-get-by-id-to-multi-get-by-offset 13.6812+-1.8336 13.6378+-2.7709 fold-multi-get-by-offset-to-get-by-offset 11.5203+-2.6749 ? 12.5235+-3.1092 ? might be 1.0871x slower asmjs_bool_bug 11.0662+-1.0359 10.9027+-0.1540 might be 1.0150x faster fround 28.7963+-1.7035 ? 29.4992+-2.3417 ? might be 1.0244x slower switch-string-basic-var 33.3255+-3.5344 31.7995+-6.1372 might be 1.0480x faster array-with-double-increment 5.7658+-1.3133 ? 6.7611+-1.6888 ? might be 1.1726x slower get-by-id-chain-from-try-block 13.5448+-0.0922 ? 13.6331+-0.1471 ? infer-one-time-closure-two-vars 17.7526+-0.8408 17.3698+-0.6754 might be 1.0220x faster create-lots-of-functions 40.2867+-2.1051 39.0177+-2.1276 might be 1.0325x faster elidable-new-object-dag 65.5000+-3.9559 64.5265+-2.0018 might be 1.0151x faster polyvariant-monomorphic-get-by-id 15.2995+-1.5947 ? 17.3973+-3.8965 ? might be 1.1371x slower Int8Array-load-with-byteLength 6.5491+-1.3797 6.0976+-0.8412 might be 1.0740x faster array-prototype-forEach 143.0687+-6.2167 ? 143.5450+-6.0256 ? large-int 22.9926+-1.8812 22.7121+-1.8307 might be 1.0124x faster int-or-other-abs-then-get-by-val 9.6839+-1.4440 9.2134+-1.2689 might be 1.0511x faster gcse 9.8724+-2.2503 9.6228+-3.4780 might be 1.0259x faster cast-int-to-double 10.9247+-1.4338 10.5759+-0.9061 might be 1.0330x faster destructuring-arguments 25.0527+-0.5034 ? 26.0627+-1.3782 ? might be 1.0403x slower poly-chain-access 4.2781+-0.8009 ? 4.6617+-0.8338 ? might be 1.0897x slower polymorphic-array-call 2.0916+-0.2000 ? 2.2159+-0.2235 ? might be 1.0594x slower array-splice-contiguous 96.9450+-10.2748 92.0464+-5.5049 might be 1.0532x faster mod-boolean-double 12.0567+-2.2048 10.3524+-0.5450 might be 1.1646x faster <geometric> 14.9348+-0.1204 ? 14.9597+-0.1005 ? might be 1.0017x slower TipOfTree FunctionRealloc AsmBench: bigfib.cpp 762.2795+-12.9901 ! 796.2536+-10.5541 ! definitely 1.0446x slower n-body.c 2015.2334+-1.9373 ? 2019.4775+-3.6410 ? FloatMM.c 1135.8015+-22.1074 ? 1155.2264+-2.5682 ? might be 1.0171x slower cray.c 767.6041+-28.3988 ? 801.4739+-5.8783 ? might be 1.0441x slower stepanov_container.cpp 5556.4023+-39.1732 ? 5574.3343+-18.4033 ? dry.c 818.2845+-35.2464 790.9192+-23.4038 might be 1.0346x faster gcc-loops.cpp 7013.8607+-38.3068 ? 7051.9246+-103.7669 ? Towers.c 465.8109+-7.3643 451.8176+-11.5756 might be 1.0310x faster Quicksort.c 703.3576+-2.1536 ? 704.4541+-8.8259 ? <geometric> 1340.4445+-5.1091 ? 1348.2654+-6.8608 ? might be 1.0058x slower TipOfTree FunctionRealloc CompressionBench: huffman 632.5870+-23.8658 ? 642.1671+-26.9759 ? might be 1.0151x slower arithmetic-simple 642.7873+-4.1431 ! 670.4495+-22.9164 ! definitely 1.0430x slower arithmetic-precise 502.8314+-12.7710 ? 520.4318+-8.4281 ? might be 1.0350x slower arithmetic-complex-precise 500.3788+-8.8826 ? 516.4002+-7.6858 ? might be 1.0320x slower arithmetic-precise-order-0 679.6448+-14.8879 ? 690.2684+-5.9071 ? might be 1.0156x slower arithmetic-precise-order-1 528.1278+-13.4463 ? 538.3418+-5.1507 ? might be 1.0193x slower arithmetic-precise-order-2 554.2217+-3.2980 ! 574.7643+-4.0120 ! definitely 1.0371x slower arithmetic-simple-order-1 624.3350+-6.6309 ! 639.4243+-2.1735 ! definitely 1.0242x slower arithmetic-simple-order-2 695.4292+-5.9827 ! 711.0038+-5.5694 ! definitely 1.0224x slower lz-string 467.8931+-10.6896 ? 472.3737+-4.9408 ? <geometric> 577.5367+-3.6241 ! 592.1537+-4.3534 ! definitely 1.0253x slower TipOfTree FunctionRealloc TipOfTree FunctionRealloc Geomean of preferred means: <scaled-result> 109.6649+-0.8579 ? 110.0916+-0.8314 ? might be 1.0039x slower
Filip Pizlo
Comment 10 2015-03-31 15:48:01 PDT
I believe that the CompressionBench regression is because we were already having a bad rage-recompilation due to some weak references. So this is a red herring. We should fix that separately. I fixed the other regressions. We need to run strength reduction late to ensure that GetIndexedPropertyStorage gets folded to ConstantStoragePointer.
Filip Pizlo
Comment 11 2015-03-31 16:01:50 PDT
Created attachment 249865 [details] the patch?
Filip Pizlo
Comment 12 2015-04-01 14:46:43 PDT
Latest perf numbers: Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on bigmac (MacPro5,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r182200) "FunctionRealloc" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r182200) Collected 6 samples per benchmark/VM, with 6 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. TipOfTree FunctionRealloc SunSpider: 3d-cube 8.4810+-0.2016 8.4732+-0.1296 3d-morph 12.1388+-0.1951 ! 12.4761+-0.1142 ! definitely 1.0278x slower 3d-raytrace 11.3971+-0.2271 ? 11.4582+-0.2299 ? access-binary-trees 3.8177+-0.0985 ? 3.8732+-0.1827 ? might be 1.0145x slower access-fannkuch 10.4670+-0.1228 ? 10.5421+-0.1770 ? access-nbody 5.5786+-0.1508 ? 5.5892+-0.1518 ? access-nsieve 5.6069+-0.1690 5.5050+-0.1952 might be 1.0185x faster bitops-3bit-bits-in-byte 2.3797+-0.1142 ? 2.4126+-0.0752 ? might be 1.0138x slower bitops-bits-in-byte 6.5447+-0.0950 ? 6.5991+-0.1082 ? bitops-bitwise-and 3.0582+-0.0865 ? 3.1058+-0.0797 ? might be 1.0156x slower bitops-nsieve-bits 6.9078+-0.1584 6.8429+-0.1447 controlflow-recursive 3.5944+-0.1084 3.4936+-0.1484 might be 1.0288x faster crypto-aes 7.2669+-0.2349 ? 7.3394+-0.2256 ? crypto-md5 4.3189+-0.1658 ? 4.3491+-0.1976 ? crypto-sha1 4.3068+-0.2171 4.2981+-0.1929 date-format-tofte 17.6088+-0.7711 ? 17.6542+-0.6337 ? date-format-xparb 10.1322+-0.3880 ? 10.2145+-0.4346 ? math-cordic 5.7141+-0.1352 5.6290+-0.0937 might be 1.0151x faster math-partial-sums 11.7697+-0.2021 ? 11.9012+-0.1128 ? might be 1.0112x slower math-spectral-norm 3.5730+-0.1509 3.5647+-0.1088 regexp-dna 11.5015+-0.3987 11.4412+-0.3274 string-base64 7.9395+-0.1392 7.8960+-0.3815 string-fasta 13.1721+-0.3000 13.1628+-0.2633 string-tagcloud 18.6296+-0.5084 18.2605+-0.3327 might be 1.0202x faster string-unpack-code 38.6478+-0.7940 37.8841+-0.6727 might be 1.0202x faster string-validate-input 9.1630+-0.2202 ? 9.1967+-0.1833 ? <arithmetic> 9.3737+-0.0869 9.3524+-0.0714 might be 1.0023x faster TipOfTree FunctionRealloc LongSpider: 3d-cube 1590.1569+-9.8988 ! 1628.6880+-16.0210 ! definitely 1.0242x slower 3d-morph 2002.7146+-7.3762 ? 2006.1272+-17.4664 ? 3d-raytrace 1587.8490+-29.2992 1575.9705+-11.9158 access-binary-trees 1905.9116+-20.4482 1904.8468+-13.9499 access-fannkuch 615.8153+-29.8431 ? 622.0608+-23.7807 ? might be 1.0101x slower access-nbody 1502.4249+-15.8854 1491.1864+-9.9597 access-nsieve 1758.1257+-10.4707 ? 1770.8966+-18.8340 ? bitops-3bit-bits-in-byte 72.2614+-0.8734 72.1582+-0.5813 bitops-bits-in-byte 401.1255+-4.5546 400.0387+-3.4656 bitops-nsieve-bits 1472.2507+-20.1884 1462.2565+-11.6723 controlflow-recursive 1087.1993+-8.3525 1075.4246+-8.2157 might be 1.0109x faster crypto-aes 1324.4575+-8.0747 ? 1332.2167+-8.3142 ? crypto-md5 999.7779+-11.3507 997.9005+-10.6537 crypto-sha1 1407.4612+-8.0650 1404.6551+-17.6433 date-format-tofte 1522.4288+-13.6064 ! 1562.5554+-19.4320 ! definitely 1.0264x slower date-format-xparb 1405.8477+-28.7087 ? 1449.3708+-27.0644 ? might be 1.0310x slower math-cordic 1163.0284+-77.3048 ? 1213.1833+-5.4777 ? might be 1.0431x slower math-partial-sums 1321.4050+-13.4235 ? 1345.5815+-14.2393 ? might be 1.0183x slower math-spectral-norm 1226.3757+-13.9633 ? 1233.6867+-9.6120 ? string-base64 650.8695+-5.4045 650.8557+-4.0222 string-fasta 892.4399+-8.2187 ? 901.1303+-8.6010 ? string-tagcloud 446.6796+-6.3249 435.8852+-7.6501 might be 1.0248x faster <geometric> 1015.8707+-4.2799 ? 1021.3146+-2.3849 ? might be 1.0054x slower TipOfTree FunctionRealloc V8Spider: crypto 102.8811+-1.4076 ? 103.2911+-1.2926 ? deltablue 126.4406+-2.4481 123.9976+-4.2167 might be 1.0197x faster earley-boyer 82.5880+-0.6222 82.0009+-1.1918 raytrace 52.6703+-1.4138 52.3138+-1.7909 regexp 129.9740+-1.9519 128.4670+-0.7258 might be 1.0117x faster richards 132.3771+-4.8818 ? 133.1882+-2.7955 ? splay 65.4045+-2.8652 64.4268+-4.9704 might be 1.0152x faster <geometric> 93.7320+-0.4995 93.0464+-1.0792 might be 1.0074x faster TipOfTree FunctionRealloc Octane: encrypt 0.47781+-0.01484 0.47385+-0.01162 decrypt 8.42039+-0.10206 ? 8.44427+-0.08932 ? deltablue x2 0.39722+-0.00520 ? 0.39876+-0.00519 ? earley 1.10154+-0.01648 ? 1.12632+-0.01318 ? might be 1.0225x slower boyer 14.28735+-0.15547 ? 14.31238+-0.10447 ? navier-stokes x2 7.46542+-0.08310 7.38812+-0.02874 might be 1.0105x faster raytrace x2 2.59856+-0.04965 2.54591+-0.08113 might be 1.0207x faster richards x2 0.24333+-0.00303 ? 0.24343+-0.00314 ? splay x2 0.66503+-0.01520 ? 0.67626+-0.01363 ? might be 1.0169x slower regexp x2 64.25706+-1.46037 64.22079+-0.87271 pdfjs x2 90.13653+-0.83521 ? 91.25179+-0.98928 ? might be 1.0124x slower mandreel x2 106.54531+-1.63132 ? 106.85910+-1.38959 ? gbemu x2 94.31471+-3.43407 93.48742+-1.67201 closure 0.99443+-0.00899 ? 1.00298+-0.01273 ? jquery 14.13406+-3.71944 12.68464+-0.17084 might be 1.1143x faster box2d x2 26.84720+-0.32516 ^ 26.01378+-0.23466 ^ definitely 1.0320x faster zlib x2 731.52295+-8.73186 ^ 693.89528+-9.38646 ^ definitely 1.0542x faster typescript x2 1431.76099+-18.30633 ? 1442.10099+-16.90197 ? <geometric> 13.14068+-0.10837 13.04385+-0.06096 might be 1.0074x faster TipOfTree FunctionRealloc Kraken: ai-astar 829.929+-5.855 ? 834.398+-7.019 ? audio-beat-detection 216.717+-5.053 ? 217.840+-6.128 ? audio-dft 305.650+-23.639 ? 325.836+-26.220 ? might be 1.0660x slower audio-fft 160.772+-2.898 ? 161.230+-1.588 ? audio-oscillator 385.197+-2.677 384.154+-4.338 imaging-darkroom 177.239+-1.475 ? 177.768+-1.236 ? imaging-desaturate 148.185+-1.274 147.704+-0.669 imaging-gaussian-blur 223.501+-2.043 222.010+-2.916 json-parse-financial 94.679+-1.074 ? 94.982+-2.406 ? json-stringify-tinderbox 108.179+-1.348 ! 116.289+-5.440 ! definitely 1.0750x slower stanford-crypto-aes 123.731+-2.408 121.056+-1.357 might be 1.0221x faster stanford-crypto-ccm 105.156+-13.043 ? 107.447+-13.094 ? might be 1.0218x slower stanford-crypto-pbkdf2 311.438+-2.290 309.873+-4.378 stanford-crypto-sha256-iterative 97.113+-1.222 ? 97.845+-1.708 ? <arithmetic> 234.820+-2.559 ? 237.031+-3.088 ? might be 1.0094x slower TipOfTree FunctionRealloc JSRegress: abs-boolean 4.6372+-0.1259 ? 4.7638+-0.0884 ? might be 1.0273x slower adapt-to-double-divide 19.9825+-0.2952 19.8339+-0.2262 aliased-arguments-getbyval 1.7673+-0.0818 ! 1.9916+-0.1361 ! definitely 1.1269x slower allocate-big-object 4.5236+-0.4153 4.5191+-0.3605 arguments-named-and-reflective 20.2916+-0.5043 ? 20.5632+-0.3065 ? might be 1.0134x slower arguments-out-of-bounds 21.8207+-0.3953 21.5380+-0.3002 might be 1.0131x faster arguments-strict-mode 18.5219+-0.6590 18.5168+-0.2517 arguments 16.3992+-0.1757 ? 16.4232+-0.3912 ? arity-mismatch-inlining 1.3746+-0.0841 1.3198+-0.1411 might be 1.0415x faster array-access-polymorphic-structure 14.5602+-0.1622 ^ 12.9334+-0.3096 ^ definitely 1.1258x faster array-nonarray-polymorhpic-access 69.2900+-3.0440 ? 69.3665+-3.0998 ? array-prototype-every 188.9119+-2.4220 ? 193.6886+-3.7007 ? might be 1.0253x slower array-prototype-forEach 186.4793+-3.0560 ? 188.5688+-1.7800 ? might be 1.0112x slower array-prototype-map 204.3593+-1.0954 ? 214.3596+-17.0101 ? might be 1.0489x slower array-prototype-some 187.4749+-1.6526 ? 191.7623+-4.9094 ? might be 1.0229x slower array-splice-contiguous 89.2327+-1.1187 87.8767+-1.2159 might be 1.0154x faster array-with-double-add 7.6300+-0.1700 7.6036+-0.0887 array-with-double-increment 5.6619+-0.1618 5.6455+-0.0905 array-with-double-mul-add 11.9068+-0.1280 ? 11.9188+-0.2289 ? array-with-double-sum 5.5288+-0.1122 5.5083+-0.1187 array-with-int32-add-sub 13.4939+-0.1411 13.4639+-0.1336 array-with-int32-or-double-sum 5.3707+-0.1237 ? 5.3938+-0.1268 ? ArrayBuffer-DataView-alloc-large-long-lived 68.1457+-1.3899 ? 69.8191+-0.8247 ? might be 1.0246x slower ArrayBuffer-DataView-alloc-long-lived 30.3087+-1.8649 ? 30.8167+-1.1397 ? might be 1.0168x slower ArrayBuffer-Int32Array-byteOffset 5.3802+-0.0606 ? 5.3955+-0.1678 ? ArrayBuffer-Int8Array-alloc-large-long-lived 71.1059+-2.0208 ? 72.8843+-2.8889 ? might be 1.0250x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 50.0404+-3.7933 49.2636+-2.6133 might be 1.0158x faster ArrayBuffer-Int8Array-alloc-long-lived 27.1328+-0.6367 ? 27.6198+-1.5397 ? might be 1.0179x slower ArrayBuffer-Int8Array-alloc 22.4934+-0.9702 ? 24.1892+-2.6156 ? might be 1.0754x slower asmjs_bool_bug 13.4961+-0.2351 ^ 12.9948+-0.1355 ^ definitely 1.0386x faster assign-custom-setter-polymorphic 6.3818+-0.1343 6.1565+-0.1140 might be 1.0366x faster assign-custom-setter 8.4947+-0.2133 8.3595+-0.1698 might be 1.0162x faster basic-set 15.8360+-0.7404 ? 15.9752+-0.6336 ? big-int-mul 7.8745+-0.0586 ? 7.9682+-0.1643 ? might be 1.0119x slower boolean-test 4.9748+-0.0520 4.9549+-0.0561 branch-fold 5.3802+-0.1496 5.3325+-0.1120 by-val-generic 16.7179+-1.8055 16.3497+-0.3780 might be 1.0225x faster call-spread-apply 61.8566+-3.0846 61.1526+-1.3215 might be 1.0115x faster call-spread-call 49.3092+-0.4431 ? 50.0270+-0.5757 ? might be 1.0146x slower captured-assignments 0.8538+-0.0857 ? 0.8712+-0.0613 ? might be 1.0203x slower cast-int-to-double 8.7362+-0.1623 ? 8.8175+-0.1564 ? cell-argument 12.2745+-0.2501 ? 12.6148+-0.1795 ? might be 1.0277x slower cfg-simplify 4.0476+-0.1407 4.0116+-0.1127 chain-getter-access 17.0269+-0.4141 16.9087+-0.2847 cmpeq-obj-to-obj-other 17.3100+-0.3928 16.7251+-0.2809 might be 1.0350x faster constant-test 8.2809+-0.1057 ? 8.3166+-0.1129 ? create-lots-of-functions 41.8090+-0.5457 41.6048+-1.6994 DataView-custom-properties 78.4391+-3.5927 ? 78.6688+-1.8705 ? deconstructing-parameters-overridden-by-function 0.8975+-0.0946 0.8899+-0.0782 delay-tear-off-arguments-strictmode 27.7898+-0.2365 27.7741+-0.2850 deltablue-varargs 366.5708+-3.8329 361.7295+-2.1793 might be 1.0134x faster destructuring-arguments 27.8071+-0.1289 ? 28.0787+-0.1919 ? destructuring-swap 8.5881+-0.1470 8.5191+-0.1542 direct-arguments-getbyval 1.8448+-0.2143 ? 1.9458+-0.2518 ? might be 1.0547x slower div-boolean-double 5.9832+-0.1617 ? 6.0423+-0.1020 ? div-boolean 10.3437+-0.1096 ? 10.3875+-0.1868 ? double-get-by-val-out-of-bounds 8.3682+-0.2938 ? 8.6376+-0.1440 ? might be 1.0322x slower double-pollution-getbyval 10.3070+-0.1039 10.2623+-0.1009 double-pollution-putbyoffset 8.3718+-0.1686 8.2369+-0.2534 might be 1.0164x faster double-to-int32-typed-array-no-inline 3.7122+-0.0852 ? 3.8353+-0.1069 ? might be 1.0331x slower double-to-int32-typed-array 3.2496+-0.1074 ? 3.3577+-0.1150 ? might be 1.0333x slower double-to-uint32-typed-array-no-inline 3.8170+-0.1068 ? 3.9489+-0.1584 ? might be 1.0345x slower double-to-uint32-typed-array 3.3094+-0.1271 ? 3.3969+-0.1449 ? might be 1.0264x slower elidable-new-object-dag 65.3667+-0.8646 ? 65.3841+-0.8496 ? elidable-new-object-roflcopter 72.3917+-0.7270 ? 72.7797+-0.8268 ? elidable-new-object-then-call 62.4799+-0.7429 61.8256+-0.5751 might be 1.0106x faster elidable-new-object-tree 72.1904+-1.1482 ? 73.0547+-0.8683 ? might be 1.0120x slower empty-string-plus-int 10.1538+-0.1839 ! 10.5570+-0.1847 ! definitely 1.0397x slower emscripten-cube2hash 57.7673+-0.9597 57.2740+-1.0135 exit-length-on-plain-object 31.8496+-1.0197 31.6769+-3.2369 external-arguments-getbyval 2.1076+-0.1099 2.1009+-0.1574 external-arguments-putbyval 4.0160+-0.1408 ? 4.1803+-0.1359 ? might be 1.0409x slower fixed-typed-array-storage-var-index 1.9669+-0.0581 ! 2.1321+-0.0412 ! definitely 1.0840x slower fixed-typed-array-storage 1.4421+-0.1518 ? 1.4993+-0.0846 ? might be 1.0396x slower Float32Array-matrix-mult 8.3491+-0.1332 8.3363+-0.2336 Float32Array-to-Float64Array-set 120.2933+-2.4242 120.1361+-1.0831 Float64Array-alloc-long-lived 118.2761+-1.0303 ^ 115.0354+-1.3362 ^ definitely 1.0282x faster Float64Array-to-Int16Array-set 147.3549+-1.3292 ? 151.5083+-5.5450 ? might be 1.0282x slower fold-double-to-int 29.1365+-0.5560 ^ 26.0089+-0.2821 ^ definitely 1.1203x faster fold-get-by-id-to-multi-get-by-offset-rare-int 14.6176+-0.3314 ? 15.2863+-0.4227 ? might be 1.0458x slower fold-get-by-id-to-multi-get-by-offset 12.6366+-0.3634 ? 12.8507+-0.3584 ? might be 1.0169x slower fold-multi-get-by-offset-to-get-by-offset 11.5122+-0.8367 11.3775+-0.8546 might be 1.0118x faster fold-multi-get-by-offset-to-poly-get-by-offset 11.9398+-0.3632 11.9010+-0.3681 fold-multi-put-by-offset-to-poly-put-by-offset 10.4482+-1.0406 10.3116+-0.8087 might be 1.0132x faster fold-multi-put-by-offset-to-put-by-offset 8.3604+-0.8719 ? 8.8287+-0.7708 ? might be 1.0560x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 16.6799+-0.9914 16.1919+-1.2984 might be 1.0301x faster fold-put-by-id-to-multi-put-by-offset 11.5290+-0.6581 ? 11.8126+-0.7568 ? might be 1.0246x slower fold-put-structure 8.7214+-0.6114 ? 8.9083+-0.8191 ? might be 1.0214x slower for-of-iterate-array-entries 8.6837+-0.1654 ? 8.7337+-0.1135 ? for-of-iterate-array-keys 7.2896+-0.2281 7.2611+-0.2046 for-of-iterate-array-values 6.9913+-0.0982 ? 7.0334+-0.1715 ? fround 26.4005+-0.3801 ? 26.7940+-0.5490 ? might be 1.0149x slower ftl-library-inlining-dataview 148.9085+-1.4847 ? 149.1331+-3.5390 ? ftl-library-inlining 136.2604+-3.7671 135.5728+-2.3505 function-dot-apply 3.6984+-0.1377 ? 3.8004+-0.1058 ? might be 1.0276x slower function-test 5.5102+-0.1849 5.3671+-0.0860 might be 1.0267x faster function-with-eval 174.6312+-1.9965 ? 175.0583+-2.2060 ? gcse-poly-get-less-obvious 37.3602+-0.6146 37.0553+-0.5090 gcse-poly-get 37.4473+-0.7193 37.2612+-0.5492 gcse 9.3502+-0.1681 ? 9.5082+-0.1373 ? might be 1.0169x slower get-by-id-bimorphic-check-structure-elimination-simple 4.1667+-0.1306 4.1512+-0.0899 get-by-id-bimorphic-check-structure-elimination 12.4229+-0.1872 ? 12.5432+-0.2446 ? get-by-id-chain-from-try-block 14.1735+-0.1919 14.1320+-0.1747 get-by-id-check-structure-elimination 11.0828+-0.0993 ? 11.2359+-0.1233 ? might be 1.0138x slower get-by-id-proto-or-self 33.5221+-3.3577 32.3248+-2.7986 might be 1.0370x faster get-by-id-quadmorphic-check-structure-elimination-simple 5.3187+-0.1135 5.2923+-0.0665 get-by-id-self-or-proto 32.7278+-2.8678 ? 33.3554+-3.1478 ? might be 1.0192x slower get-by-val-out-of-bounds 8.0638+-0.1936 ? 8.1963+-0.2155 ? might be 1.0164x slower get_callee_monomorphic 6.5424+-0.2295 6.2639+-0.4453 might be 1.0445x faster get_callee_polymorphic 5.7527+-0.2408 ? 5.8416+-0.2076 ? might be 1.0155x slower getter-no-activation 6.3410+-0.0669 ? 6.5377+-0.1459 ? might be 1.0310x slower getter-richards 176.7166+-3.0653 176.4984+-3.8682 getter 10.1573+-0.1994 ^ 9.6432+-0.1948 ^ definitely 1.0533x faster global-var-const-infer-fire-from-opt 1.7760+-0.2435 1.7373+-0.2085 might be 1.0223x faster global-var-const-infer 1.7332+-0.1211 1.6862+-0.1399 might be 1.0279x faster HashMap-put-get-iterate-keys 50.0980+-0.5020 ? 50.1169+-0.5774 ? HashMap-put-get-iterate 49.8684+-0.8090 49.6967+-1.1841 HashMap-string-put-get-iterate 52.6733+-2.3512 50.3297+-0.7130 might be 1.0466x faster hoist-make-rope 18.1472+-0.8036 17.3600+-1.1625 might be 1.0453x faster hoist-poly-check-structure-effectful-loop 9.7716+-0.1461 9.7013+-0.1772 hoist-poly-check-structure 6.4919+-0.1409 ? 6.5953+-0.1482 ? might be 1.0159x slower imul-double-only 12.8941+-1.1252 ? 13.5534+-1.6023 ? might be 1.0511x slower imul-int-only 14.7253+-0.0843 14.6727+-0.4274 imul-mixed 12.7329+-0.6915 12.2440+-0.6065 might be 1.0399x faster in-four-cases 35.9988+-0.6766 35.8795+-0.4670 in-one-case-false 18.9905+-0.3746 18.9587+-0.2044 in-one-case-true 18.9263+-0.3610 ? 18.9657+-0.3272 ? in-two-cases 19.5633+-0.1760 ? 19.5686+-0.2553 ? indexed-properties-in-objects 4.6455+-0.1189 ? 4.8112+-0.0514 ? might be 1.0357x slower infer-closure-const-then-mov-no-inline 6.1092+-0.0947 ! 6.6040+-0.0760 ! definitely 1.0810x slower infer-closure-const-then-mov 26.3870+-0.7470 ! 27.5795+-0.3128 ! definitely 1.0452x slower infer-closure-const-then-put-to-scope-no-inline 19.3095+-0.3852 ! 23.2356+-0.3130 ! definitely 1.2033x slower infer-closure-const-then-put-to-scope 31.2489+-0.5619 ! 32.9851+-0.2978 ! definitely 1.0556x slower infer-closure-const-then-reenter-no-inline 92.5141+-1.4086 ! 108.8505+-1.2300 ! definitely 1.1766x slower infer-closure-const-then-reenter 236.8604+-6.5741 ^ 31.1582+-0.2091 ^ definitely 7.6019x faster infer-constant-global-property 39.5734+-0.4515 39.3753+-0.3443 infer-constant-property 3.7166+-0.0658 3.7120+-0.1221 infer-one-time-closure-ten-vars 18.0313+-0.2373 17.7373+-0.2708 might be 1.0166x faster infer-one-time-closure-two-vars 17.2639+-0.2185 17.1375+-0.3049 infer-one-time-closure 17.0057+-0.1600 ? 17.1001+-0.3862 ? infer-one-time-deep-closure 30.1902+-0.3151 ? 30.2829+-0.4074 ? inline-arguments-access 7.0894+-0.1696 ? 7.3212+-0.2613 ? might be 1.0327x slower inline-arguments-aliased-access 7.1412+-0.2026 ? 7.2084+-0.1055 ? inline-arguments-local-escape 7.3125+-0.2066 ? 7.5053+-0.0561 ? might be 1.0264x slower inline-get-scoped-var 6.0421+-0.1398 ! 6.3124+-0.1138 ! definitely 1.0447x slower inlined-put-by-id-transition 18.0750+-0.3434 17.8066+-0.1391 might be 1.0151x faster int-or-other-abs-then-get-by-val 9.6622+-0.0685 9.6152+-0.0830 int-or-other-abs-zero-then-get-by-val 34.6544+-0.4110 ? 34.9651+-0.5338 ? int-or-other-add-then-get-by-val 8.7907+-0.1282 8.7207+-0.1241 int-or-other-add 9.0822+-0.1876 ? 9.4688+-0.2067 ? might be 1.0426x slower int-or-other-div-then-get-by-val 6.7786+-0.1137 6.7284+-0.1957 int-or-other-max-then-get-by-val 7.4323+-0.1825 ! 8.4701+-0.1942 ! definitely 1.1396x slower int-or-other-min-then-get-by-val 7.4322+-0.1881 ? 7.5576+-0.0934 ? might be 1.0169x slower int-or-other-mod-then-get-by-val 6.2262+-0.1026 ? 6.3436+-0.1092 ? might be 1.0189x slower int-or-other-mul-then-get-by-val 6.8903+-0.1049 6.7707+-0.2051 might be 1.0177x faster int-or-other-neg-then-get-by-val 8.3860+-0.1769 8.3529+-0.1944 int-or-other-neg-zero-then-get-by-val 34.4082+-0.3267 ? 34.9393+-0.3330 ? might be 1.0154x slower int-or-other-sub-then-get-by-val 9.2271+-0.1540 ^ 8.9202+-0.0742 ^ definitely 1.0344x faster int-or-other-sub 5.8077+-0.1196 ! 6.8139+-0.2399 ! definitely 1.1733x slower int-overflow-local 8.1946+-0.1155 ^ 7.8297+-0.0660 ^ definitely 1.0466x faster Int16Array-alloc-long-lived 82.6193+-0.5185 81.5149+-0.9530 might be 1.0135x faster Int16Array-bubble-sort-with-byteLength 51.9357+-0.7168 ^ 49.4991+-0.6169 ^ definitely 1.0492x faster Int16Array-bubble-sort 51.0082+-0.4468 ^ 49.7795+-0.6038 ^ definitely 1.0247x faster Int16Array-load-int-mul 2.3557+-0.0915 ? 2.3997+-0.1075 ? might be 1.0187x slower Int16Array-to-Int32Array-set 116.4325+-1.9561 115.3062+-0.9175 Int32Array-alloc-large 38.2351+-1.0482 ? 38.7608+-1.1816 ? might be 1.0137x slower Int32Array-alloc-long-lived 92.4040+-1.1904 ? 92.5303+-1.8599 ? Int32Array-alloc 5.4092+-0.1471 ? 5.4372+-0.1305 ? Int32Array-Int8Array-view-alloc 14.1265+-0.7158 ? 14.8606+-0.7761 ? might be 1.0520x slower int52-spill 12.5463+-0.2710 12.1144+-0.3065 might be 1.0357x faster Int8Array-alloc-long-lived 75.2791+-0.3760 74.2340+-0.7447 might be 1.0141x faster Int8Array-load-with-byteLength 5.1659+-0.0703 ? 5.2334+-0.1120 ? might be 1.0131x slower Int8Array-load 5.3096+-0.0715 5.2802+-0.1269 integer-divide 19.7816+-0.2810 19.7015+-0.3242 integer-modulo 3.7594+-0.2221 3.6230+-0.1634 might be 1.0376x faster large-int-captured 10.3087+-0.2176 10.1399+-0.2703 might be 1.0166x faster large-int-neg 31.0345+-0.3633 30.9097+-0.5126 large-int 27.7433+-0.2488 ? 27.9448+-0.4867 ? logical-not 8.4107+-0.1273 8.1319+-0.1792 might be 1.0343x faster lots-of-fields 23.8121+-0.2324 23.4897+-0.3222 might be 1.0137x faster make-indexed-storage 5.6484+-0.1775 5.6114+-0.3052 make-rope-cse 7.5108+-0.2069 7.3688+-0.1714 might be 1.0193x faster marsaglia-larger-ints 67.1167+-0.5147 ? 67.4016+-0.9295 ? marsaglia-osr-entry 35.0520+-0.5643 ? 35.2349+-0.6770 ? max-boolean 4.0460+-0.1713 ? 4.1387+-0.2301 ? might be 1.0229x slower method-on-number 34.4795+-0.3560 34.0663+-0.2046 might be 1.0121x faster min-boolean 3.8215+-0.0703 ? 4.3843+-0.6749 ? might be 1.1473x slower minus-boolean-double 4.4462+-0.0787 ? 4.4812+-0.1234 ? minus-boolean 3.7967+-0.0885 3.7502+-0.1091 might be 1.0124x faster misc-strict-eq 72.5022+-1.1873 ? 72.8765+-1.9463 ? mod-boolean-double 14.5662+-0.2512 14.5234+-0.1763 mod-boolean 9.3221+-0.1531 ? 9.4073+-0.1700 ? mul-boolean-double 5.0779+-0.1309 5.0721+-0.1080 mul-boolean 4.0280+-0.0940 ? 4.0941+-0.0710 ? might be 1.0164x slower neg-boolean 4.6706+-0.0830 ? 4.7434+-0.1553 ? might be 1.0156x slower negative-zero-divide 0.5830+-0.0704 ? 0.6000+-0.0663 ? might be 1.0292x slower negative-zero-modulo 0.6558+-0.0649 ? 0.6691+-0.0821 ? might be 1.0204x slower negative-zero-negate 0.5862+-0.0723 0.5860+-0.0756 nested-function-parsing 72.7106+-0.9411 ! 74.8148+-0.5389 ! definitely 1.0289x slower new-array-buffer-dead 4.0808+-0.1568 ? 4.3743+-0.2097 ? might be 1.0719x slower new-array-buffer-push 10.5935+-0.1473 10.5618+-0.1996 new-array-dead 17.1913+-0.4906 17.1818+-0.3454 new-array-push 6.8381+-0.3412 ? 6.9331+-0.4804 ? might be 1.0139x slower no-inline-constructor 182.4877+-2.8688 ? 182.7014+-2.3212 ? number-test 4.8836+-0.0891 ? 4.9356+-0.0777 ? might be 1.0106x slower object-closure-call 10.6036+-0.2423 10.5870+-0.2489 object-test 5.3441+-0.1452 5.2143+-0.0914 might be 1.0249x faster obvious-sink-pathology-taken 221.1471+-2.0352 220.3617+-1.4686 obvious-sink-pathology 208.9010+-4.2433 207.1008+-4.7430 obviously-elidable-new-object 56.7538+-2.4072 ? 57.2893+-1.0050 ? plus-boolean-arith 4.1536+-0.1203 4.0943+-0.1095 might be 1.0145x faster plus-boolean-double 4.5243+-0.0976 4.4610+-0.0866 might be 1.0142x faster plus-boolean 3.7138+-0.1452 3.6554+-0.0620 might be 1.0160x faster poly-chain-access-different-prototypes-simple 5.3973+-0.1752 5.2826+-0.0916 might be 1.0217x faster poly-chain-access-different-prototypes 4.0162+-0.0481 ? 4.0165+-0.0692 ? poly-chain-access-simpler 5.2909+-0.1136 ? 5.3205+-0.0742 ? poly-chain-access 4.0023+-0.1131 3.9496+-0.1124 might be 1.0134x faster poly-stricteq 101.9936+-2.2821 ? 102.7776+-0.9535 ? polymorphic-array-call 2.7008+-0.2202 2.4980+-0.2858 might be 1.0812x faster polymorphic-get-by-id 5.3763+-0.1344 ? 5.3870+-0.1336 ? polymorphic-put-by-id 48.1921+-4.9036 ? 49.2382+-3.9072 ? might be 1.0217x slower polymorphic-structure 31.1222+-0.8660 30.7380+-0.6559 might be 1.0125x faster polyvariant-monomorphic-get-by-id 17.7556+-0.1641 17.5857+-0.2170 proto-getter-access 17.0512+-0.3949 ? 17.1710+-0.3316 ? put-by-id-replace-and-transition 15.0740+-0.2256 14.9371+-0.2162 put-by-id-slightly-polymorphic 4.1481+-0.1023 4.1259+-0.0682 put-by-id 20.7929+-0.5375 ? 21.2352+-0.5364 ? might be 1.0213x slower put-by-val-direct 0.9870+-0.0132 ! 1.1253+-0.0880 ! definitely 1.1401x slower put-by-val-large-index-blank-indexing-type 11.0206+-0.3753 11.0180+-0.2295 put-by-val-machine-int 4.5713+-0.2182 ? 4.5990+-0.0696 ? rare-osr-exit-on-local 25.9672+-0.1732 ? 26.0394+-0.2222 ? register-pressure-from-osr 39.1909+-0.1581 ! 40.1932+-0.5707 ! definitely 1.0256x slower setter 7.7785+-0.1390 ? 7.8680+-0.1151 ? might be 1.0115x slower simple-activation-demo 41.3638+-0.5648 ? 41.7620+-0.3541 ? simple-getter-access 22.6350+-0.6422 22.2850+-0.5462 might be 1.0157x faster simple-poly-call-nested 13.8516+-0.3141 13.7382+-0.5731 simple-poly-call 2.2760+-0.1396 2.2244+-0.0600 might be 1.0232x faster sin-boolean 30.0334+-1.0078 30.0226+-0.7781 singleton-scope 129.8584+-1.5479 ? 130.1784+-1.4936 ? sinkable-new-object-dag 119.6704+-1.3304 116.6926+-5.5818 might be 1.0255x faster sinkable-new-object-taken 93.1318+-1.3153 91.9278+-0.8242 might be 1.0131x faster sinkable-new-object 63.2611+-1.0232 63.1046+-1.1282 slow-array-profile-convergence 5.1769+-0.1649 ? 5.3076+-0.2221 ? might be 1.0252x slower slow-convergence 6.0119+-0.0724 ^ 4.7785+-0.1149 ^ definitely 1.2581x faster sparse-conditional 1.8597+-0.0745 ? 1.9451+-0.0703 ? might be 1.0459x slower splice-to-remove 33.5450+-0.3225 ? 34.8856+-2.7404 ? might be 1.0400x slower string-char-code-at 29.7480+-0.3641 ! 30.6230+-0.3865 ! definitely 1.0294x slower string-concat-object 3.9719+-0.3222 3.9559+-0.2861 string-concat-pair-object 3.9095+-0.2550 ? 3.9724+-0.3149 ? might be 1.0161x slower string-concat-pair-simple 20.1566+-0.3627 20.0327+-0.1462 string-concat-simple 21.1319+-0.5068 20.8547+-0.4359 might be 1.0133x faster string-cons-repeat 12.9817+-0.2427 ? 12.9977+-0.3710 ? string-cons-tower 13.1386+-0.2451 ? 13.1702+-0.3352 ? string-equality 32.8647+-0.3635 ? 33.0878+-0.1265 ? string-get-by-val-big-char 13.6868+-0.2376 ? 13.8095+-0.2041 ? string-get-by-val-out-of-bounds-insane 7.9911+-0.0935 ! 8.2723+-0.1450 ! definitely 1.0352x slower string-get-by-val-out-of-bounds 9.7182+-0.2431 ? 9.8190+-0.1035 ? might be 1.0104x slower string-get-by-val 6.8730+-0.0967 6.8180+-0.1469 string-hash 3.6246+-0.1083 ? 3.6258+-0.1198 ? string-long-ident-equality 26.6435+-0.2455 ! 27.4686+-0.2429 ! definitely 1.0310x slower string-out-of-bounds 21.8202+-0.2930 ? 21.9139+-0.3522 ? string-repeat-arith 62.2993+-0.3713 ! 68.6299+-0.2938 ! definitely 1.1016x slower string-sub 120.9099+-1.9737 118.9036+-1.6034 might be 1.0169x faster string-test 4.9242+-0.1972 4.7723+-0.0964 might be 1.0318x faster string-var-equality 61.4928+-0.8376 ! 63.8375+-0.8524 ! definitely 1.0381x slower structure-hoist-over-transitions 4.1767+-0.1524 ? 4.1901+-0.2087 ? substring-concat-weird 75.5112+-1.0627 75.1747+-0.9039 substring-concat 79.3778+-0.6537 ? 79.8456+-0.9833 ? substring 91.1971+-0.5745 ? 91.2722+-0.7358 ? switch-char-constant 3.7733+-0.1198 ? 3.8507+-0.1095 ? might be 1.0205x slower switch-char 11.5227+-0.3795 ? 11.5981+-0.4664 ? switch-constant 14.3551+-0.8554 13.8326+-0.6792 might be 1.0378x faster switch-string-basic-big-var 31.0388+-0.6432 ! 32.9944+-0.2559 ! definitely 1.0630x slower switch-string-basic-big 24.3395+-1.2638 ? 25.2662+-1.5895 ? might be 1.0381x slower switch-string-basic-var 33.3258+-1.8387 32.9588+-0.2273 might be 1.0111x faster switch-string-basic 23.5888+-1.5529 ? 26.3652+-2.5347 ? might be 1.1177x slower switch-string-big-length-tower-var 30.6675+-0.4558 ? 30.9092+-0.3109 ? switch-string-length-tower-var 26.2149+-0.4051 ? 26.3083+-0.3444 ? switch-string-length-tower 21.9967+-1.2382 20.9017+-0.2629 might be 1.0524x faster switch-string-short 20.7013+-0.3406 ? 20.8234+-0.1648 ? switch 19.6932+-0.4004 19.4009+-0.4384 might be 1.0151x faster tear-off-arguments-simple 5.5334+-0.1674 5.3845+-0.2102 might be 1.0276x faster tear-off-arguments 8.0594+-0.3016 8.0449+-0.1589 temporal-structure 19.9373+-0.2048 ? 20.1066+-0.1977 ? to-int32-boolean 25.3206+-0.3265 ? 25.5153+-0.2054 ? try-catch-get-by-val-cloned-arguments 28.4725+-0.4571 ? 28.7288+-0.8583 ? try-catch-get-by-val-direct-arguments 11.0622+-0.3328 ? 11.0740+-0.2457 ? try-catch-get-by-val-scoped-arguments 14.1603+-0.6126 13.5814+-0.3222 might be 1.0426x faster undefined-property-access 590.8569+-3.2191 ^ 543.6483+-4.0454 ^ definitely 1.0868x faster undefined-test 5.1136+-0.1049 ? 5.1878+-0.1633 ? might be 1.0145x slower unprofiled-licm 35.3812+-0.9065 35.3144+-0.4174 varargs-call 25.3518+-0.4672 ? 26.2458+-0.4407 ? might be 1.0353x slower varargs-construct-inline 38.4165+-0.4056 ? 39.1309+-0.5410 ? might be 1.0186x slower varargs-construct 58.4938+-0.6851 ! 59.8538+-0.5924 ! definitely 1.0233x slower varargs-inline 15.6162+-0.1483 ! 17.3502+-0.2058 ! definitely 1.1110x slower varargs-strict-mode 18.3553+-0.3675 ! 19.7152+-0.2157 ! definitely 1.0741x slower varargs 17.8351+-0.1403 ! 19.5759+-0.1199 ! definitely 1.0976x slower weird-inlining-const-prop 3.7981+-0.1105 3.7394+-0.2096 might be 1.0157x faster <geometric> 14.8229+-0.0281 14.8109+-0.0425 might be 1.0008x faster TipOfTree FunctionRealloc AsmBench: bigfib.cpp 890.3599+-8.2649 ! 929.6189+-15.7229 ! definitely 1.0441x slower cray.c 870.2829+-7.3294 ! 935.6772+-5.6458 ! definitely 1.0751x slower dry.c 1031.7040+-30.0777 1003.2992+-27.5600 might be 1.0283x faster FloatMM.c 1314.9526+-9.2808 ! 1355.8177+-7.9437 ! definitely 1.0311x slower gcc-loops.cpp 8320.4091+-54.6634 8306.8607+-30.7496 n-body.c 2476.7920+-16.1929 2472.5660+-13.9471 Quicksort.c 724.7983+-5.9733 ^ 715.4457+-3.1240 ^ definitely 1.0131x faster stepanov_container.cpp 6467.5629+-150.3867 ? 6547.4906+-116.9477 ? might be 1.0124x slower Towers.c 613.9661+-3.9391 ^ 576.1823+-7.4044 ^ definitely 1.0656x faster <geometric> 1582.6853+-5.4215 ? 1591.6498+-8.4391 ? might be 1.0057x slower TipOfTree FunctionRealloc CompressionBench: huffman 777.7400+-9.7981 ! 807.4622+-8.9564 ! definitely 1.0382x slower arithmetic-simple 724.4967+-4.5291 ! 741.8892+-6.9666 ! definitely 1.0240x slower arithmetic-precise 558.7560+-4.4426 ! 575.2786+-5.8740 ! definitely 1.0296x slower arithmetic-complex-precise 553.6388+-4.9665 ! 579.5320+-5.3444 ! definitely 1.0468x slower arithmetic-precise-order-0 784.5962+-18.9015 781.9229+-8.9835 arithmetic-precise-order-1 604.7003+-23.0804 ? 611.0160+-5.2036 ? might be 1.0104x slower arithmetic-precise-order-2 676.8846+-32.2441 673.5516+-10.6048 arithmetic-simple-order-1 718.5388+-2.6832 ! 736.0574+-4.5831 ! definitely 1.0244x slower arithmetic-simple-order-2 782.7725+-7.0706 ? 795.7834+-10.0304 ? might be 1.0166x slower lz-string 617.6868+-22.3185 ? 626.6821+-38.3485 ? might be 1.0146x slower <geometric> 674.2246+-6.7804 ! 687.3929+-4.1989 ! definitely 1.0195x slower TipOfTree FunctionRealloc TipOfTree FunctionRealloc Geomean of preferred means: <scaled-result> 120.1940+-0.3077 ? 120.5229+-0.2672 ? might be 1.0027x slower
Filip Pizlo
Comment 13 2015-04-07 17:01:19 PDT
Figured out the cause of the regressions. Some tests now do one more round of exits because previously, a GetClosureVar that was unprofiled but constant folded would just get constant folded - while now, an unprofiled GetClosureVar is an exit site. It's worth having some hack that constant-folds this sooner. This is yet another one of those examples of sooner SSA conversion being better than our weird CPS IR. I'll look into it. Right now this is a 1% speed-up on Octane, and some of the AsmBench tests are seeing speed-ups. So if I find a good hack then we should have a healthy net speed-up from this.
Filip Pizlo
Comment 14 2015-04-07 17:04:57 PDT
Filip Pizlo
Comment 15 2015-04-07 20:16:22 PDT
Created attachment 250327 [details] even more Replacing VariableWatchpointSet with InferredValue, which is a super easy to use singleton inference thingy. For now I'm making FunctionExecutable use it, and then I'll make SymbolTable use it for inferring JSScope singletons. This will give us a more rational approach to early constant-folding of resolve_scope while also handling the case where a non-singleton scope chain leads to a singleton scope.
Filip Pizlo
Comment 16 2015-04-07 21:34:28 PDT
Created attachment 250331 [details] this might be the one! Now I'm using InferredValue to infer JSSymbolTableObjects for a given SymbolTable.
Filip Pizlo
Comment 17 2015-04-08 12:35:15 PDT
Created attachment 250374 [details] the patch Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r182498) "FunctionRealloc" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r182498) Collected 6 samples per benchmark/VM, with 6 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. TipOfTree FunctionRealloc SunSpider: 3d-cube 4.9250+-0.0801 ? 4.9863+-0.1011 ? might be 1.0125x slower 3d-morph 5.6396+-0.0299 ? 5.7006+-0.1988 ? might be 1.0108x slower 3d-raytrace 6.7137+-0.7093 6.3422+-0.1512 might be 1.0586x faster access-binary-trees 2.3136+-0.0800 2.2896+-0.1110 might be 1.0105x faster access-fannkuch 5.8263+-0.2175 5.7805+-0.0903 access-nbody 2.8565+-0.0301 ? 2.9017+-0.1637 ? might be 1.0158x slower access-nsieve 3.3407+-0.0719 ? 3.4296+-0.1716 ? might be 1.0266x slower bitops-3bit-bits-in-byte 1.6421+-0.0679 1.5901+-0.0508 might be 1.0327x faster bitops-bits-in-byte 3.3757+-0.0444 ? 3.5194+-0.2701 ? might be 1.0426x slower bitops-bitwise-and 2.0987+-0.0384 ? 2.1454+-0.0595 ? might be 1.0223x slower bitops-nsieve-bits 4.0744+-0.4957 3.8364+-0.2075 might be 1.0620x faster controlflow-recursive 2.1493+-0.0421 ? 2.2019+-0.1857 ? might be 1.0245x slower crypto-aes 4.2770+-0.2552 4.0697+-0.0574 might be 1.0510x faster crypto-md5 2.4952+-0.1359 2.4247+-0.0292 might be 1.0291x faster crypto-sha1 2.6940+-0.1898 ? 2.8033+-0.2341 ? might be 1.0406x slower date-format-tofte 9.2659+-0.1627 ? 9.4330+-0.1897 ? might be 1.0180x slower date-format-xparb 5.3555+-0.1723 ? 5.5708+-0.1605 ? might be 1.0402x slower math-cordic 3.1312+-0.0564 3.0493+-0.0480 might be 1.0268x faster math-partial-sums 5.2253+-0.1211 ? 5.4952+-0.6956 ? might be 1.0517x slower math-spectral-norm 1.9673+-0.0277 ? 1.9851+-0.1193 ? regexp-dna 7.6839+-1.2630 7.6123+-1.2103 string-base64 4.9362+-0.7948 4.7124+-0.2037 might be 1.0475x faster string-fasta 6.7264+-0.0922 6.6978+-0.2167 string-tagcloud 9.6509+-0.2356 ? 9.6871+-0.2718 ? string-unpack-code 19.9715+-0.8735 19.7571+-0.7070 might be 1.0109x faster string-validate-input 4.9993+-0.2065 4.9528+-0.1388 <arithmetic> 5.1283+-0.0568 5.1144+-0.0766 might be 1.0027x faster TipOfTree FunctionRealloc LongSpider: 3d-cube 1085.8740+-15.5978 ? 1088.3162+-17.7758 ? 3d-morph 1552.8687+-23.6196 1534.4194+-3.0586 might be 1.0120x faster 3d-raytrace 734.0000+-6.2293 726.2999+-6.4545 might be 1.0106x faster access-binary-trees 1019.5015+-9.9440 1017.7312+-8.7104 access-fannkuch 328.3807+-8.7917 ? 336.0554+-8.6994 ? might be 1.0234x slower access-nbody 614.6836+-1.4039 ? 619.4366+-5.1307 ? access-nsieve 854.5482+-13.1418 ? 856.3176+-6.5269 ? bitops-3bit-bits-in-byte 44.7743+-0.8615 44.6446+-0.7625 bitops-bits-in-byte 104.8393+-1.5066 ? 106.0655+-1.8013 ? might be 1.0117x slower bitops-nsieve-bits 705.1925+-13.1786 701.2912+-6.1613 controlflow-recursive 495.3839+-20.3753 479.4252+-3.1846 might be 1.0333x faster crypto-aes 709.2493+-8.6884 ? 716.2637+-4.1725 ? crypto-md5 567.7901+-20.5173 552.2805+-6.3440 might be 1.0281x faster crypto-sha1 604.7793+-10.9915 ? 644.2812+-105.8182 ? might be 1.0653x slower date-format-tofte 769.9083+-31.5751 ? 790.5561+-9.7426 ? might be 1.0268x slower date-format-xparb 792.6657+-97.3842 781.4341+-34.0010 might be 1.0144x faster math-cordic 595.3482+-2.2452 ? 596.3726+-4.7895 ? math-partial-sums 510.4870+-8.0785 509.3400+-5.0383 math-spectral-norm 566.9928+-4.5623 ? 567.0435+-3.0728 ? string-base64 366.1850+-4.5037 ? 373.5304+-16.0132 ? might be 1.0201x slower string-fasta 456.5754+-3.9428 452.4404+-3.1441 string-tagcloud 215.4006+-1.9615 ? 217.0247+-3.6130 ? <geometric> 507.2100+-3.9932 ? 508.4441+-3.0733 ? might be 1.0024x slower TipOfTree FunctionRealloc V8Spider: crypto 56.8501+-1.5859 54.5890+-1.7855 might be 1.0414x faster deltablue 93.4441+-6.1436 ? 96.1612+-3.2731 ? might be 1.0291x slower earley-boyer 42.5973+-1.6500 ? 42.7173+-0.7018 ? raytrace 40.8090+-2.6844 39.7108+-2.6831 might be 1.0277x faster regexp 68.5098+-2.6313 67.2522+-1.3989 might be 1.0187x faster richards 80.0323+-1.8785 78.4126+-1.4421 might be 1.0207x faster splay 38.7594+-0.9634 ? 38.7640+-1.4481 ? <geometric> 56.9958+-0.9743 56.3980+-0.7812 might be 1.0106x faster TipOfTree FunctionRealloc Octane: encrypt 0.20254+-0.00131 0.20235+-0.00093 decrypt 3.62811+-0.04524 ? 3.64212+-0.05664 ? deltablue x2 0.20885+-0.00196 ? 0.20899+-0.00209 ? earley 0.58767+-0.00696 0.58420+-0.00383 boyer 6.42312+-0.02325 ? 6.45272+-0.06872 ? navier-stokes x2 5.20860+-0.00996 ? 5.23259+-0.04911 ? raytrace x2 1.28691+-0.02382 1.25601+-0.04226 might be 1.0246x faster richards x2 0.12288+-0.00145 0.12246+-0.00099 splay x2 0.38392+-0.00311 ? 0.38745+-0.00439 ? regexp x2 33.19287+-0.22299 ? 33.42332+-0.36159 ? pdfjs x2 44.98951+-0.28259 44.51823+-0.23829 might be 1.0106x faster mandreel x2 50.35633+-0.44106 ? 50.40703+-0.18486 ? gbemu x2 39.53212+-0.74386 38.78705+-0.49685 might be 1.0192x faster closure 0.56719+-0.00967 0.56064+-0.00525 might be 1.0117x faster jquery 7.17399+-0.12855 7.06396+-0.04765 might be 1.0156x faster box2d x2 12.48591+-0.62880 12.22665+-0.10551 might be 1.0212x faster zlib x2 387.08908+-1.12193 ? 388.81367+-10.58554 ? typescript x2 828.58215+-11.77211 823.00090+-10.42154 <geometric> 6.73098+-0.01962 6.69938+-0.02472 might be 1.0047x faster TipOfTree FunctionRealloc Kraken: ai-astar 268.630+-1.717 ? 268.990+-1.770 ? audio-beat-detection 107.139+-1.261 ? 107.169+-1.567 ? audio-dft 149.999+-1.665 ? 150.266+-3.511 ? audio-fft 84.409+-4.369 ? 84.991+-3.205 ? audio-oscillator 208.242+-1.704 ? 208.601+-2.494 ? imaging-darkroom 104.364+-0.223 ? 105.681+-1.855 ? might be 1.0126x slower imaging-desaturate 64.143+-1.830 64.060+-2.149 imaging-gaussian-blur 113.142+-2.197 ? 113.680+-2.415 ? json-parse-financial 45.894+-1.993 ? 47.161+-1.987 ? might be 1.0276x slower json-stringify-tinderbox 57.887+-2.955 56.130+-1.293 might be 1.0313x faster stanford-crypto-aes 63.479+-1.990 63.417+-1.391 stanford-crypto-ccm 51.550+-1.785 50.344+-1.888 might be 1.0240x faster stanford-crypto-pbkdf2 170.440+-3.982 168.231+-1.815 might be 1.0131x faster stanford-crypto-sha256-iterative 57.687+-3.326 56.389+-4.199 might be 1.0230x faster <arithmetic> 110.500+-0.818 110.365+-0.550 might be 1.0012x faster TipOfTree FunctionRealloc JSRegress: abs-boolean 2.6721+-0.0445 ? 2.7322+-0.1365 ? might be 1.0225x slower adapt-to-double-divide 16.6415+-0.2463 ? 16.7919+-0.2573 ? aliased-arguments-getbyval 1.2297+-0.1014 ? 1.2565+-0.0695 ? might be 1.0218x slower allocate-big-object 2.6691+-0.1555 2.6017+-0.0659 might be 1.0259x faster arguments-named-and-reflective 12.8475+-0.7888 ? 12.9371+-1.4552 ? arguments-out-of-bounds 15.2753+-0.7596 14.8877+-0.3218 might be 1.0260x faster arguments-strict-mode 11.6694+-0.3823 ? 11.7072+-0.5141 ? arguments 10.0948+-0.2859 ? 10.3591+-0.4032 ? might be 1.0262x slower arity-mismatch-inlining 0.8979+-0.0927 0.8612+-0.0194 might be 1.0425x faster array-access-polymorphic-structure 6.5102+-0.1263 ? 7.4481+-1.0109 ? might be 1.1441x slower array-nonarray-polymorhpic-access 37.0502+-2.8047 36.3414+-1.9855 might be 1.0195x faster array-prototype-every 87.9055+-1.2179 ? 91.1745+-2.8241 ? might be 1.0372x slower array-prototype-forEach 86.9964+-2.7757 84.5792+-2.6438 might be 1.0286x faster array-prototype-map 93.3152+-2.5707 ? 95.5261+-2.7503 ? might be 1.0237x slower array-prototype-some 87.8527+-2.1499 ? 91.7321+-2.2425 ? might be 1.0442x slower array-splice-contiguous 42.7360+-2.3043 42.2169+-1.1395 might be 1.0123x faster array-with-double-add 4.1158+-0.0862 ? 4.1702+-0.0490 ? might be 1.0132x slower array-with-double-increment 3.2271+-0.0299 ? 3.2449+-0.0620 ? array-with-double-mul-add 4.9999+-0.1034 ? 5.0585+-0.0857 ? might be 1.0117x slower array-with-double-sum 3.3687+-0.2597 3.3095+-0.0860 might be 1.0179x faster array-with-int32-add-sub 6.7706+-0.1403 ? 6.8940+-0.2987 ? might be 1.0182x slower array-with-int32-or-double-sum 3.3932+-0.0870 3.3459+-0.0389 might be 1.0141x faster ArrayBuffer-DataView-alloc-large-long-lived 34.3880+-1.9397 33.9420+-1.8951 might be 1.0131x faster ArrayBuffer-DataView-alloc-long-lived 14.8265+-1.6271 ? 15.0337+-1.1313 ? might be 1.0140x slower ArrayBuffer-Int32Array-byteOffset 3.8442+-0.0595 3.8185+-0.1536 ArrayBuffer-Int8Array-alloc-large-long-lived 32.7754+-0.7473 ? 34.7366+-1.6586 ? might be 1.0598x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 24.6790+-2.1027 24.5888+-1.9104 ArrayBuffer-Int8Array-alloc-long-lived 15.5741+-1.4961 15.2957+-1.8175 might be 1.0182x faster ArrayBuffer-Int8Array-alloc 11.2515+-0.4011 ? 11.8396+-1.5375 ? might be 1.0523x slower asmjs_bool_bug 7.8272+-0.3912 7.6112+-0.0462 might be 1.0284x faster assign-custom-setter-polymorphic 2.9849+-0.0390 ? 3.0129+-0.0544 ? assign-custom-setter 4.0579+-0.0804 ? 4.1091+-0.2139 ? might be 1.0126x slower basic-set 8.7367+-0.6426 8.7349+-0.7051 big-int-mul 4.1639+-0.1180 4.1188+-0.0441 might be 1.0109x faster boolean-test 3.1341+-0.1890 3.0630+-0.0440 might be 1.0232x faster branch-fold 3.6842+-0.0328 ? 3.7117+-0.1265 ? by-val-generic 8.0981+-0.2651 ? 8.5984+-1.1100 ? might be 1.0618x slower call-spread-apply 33.3491+-3.7182 29.3708+-1.0046 might be 1.1355x faster call-spread-call 25.3745+-1.1686 24.8943+-1.6182 might be 1.0193x faster captured-assignments 0.4669+-0.0123 ? 0.4751+-0.0135 ? might be 1.0174x slower cast-int-to-double 5.2768+-0.0321 ? 5.2994+-0.0349 ? cell-argument 8.6812+-0.3289 8.5165+-0.1978 might be 1.0193x faster cfg-simplify 2.9582+-0.1849 ? 2.9646+-0.1286 ? chain-getter-access 10.1713+-0.1406 10.1506+-0.3318 cmpeq-obj-to-obj-other 11.1842+-0.9734 ? 11.6505+-0.7955 ? might be 1.0417x slower constant-test 4.9452+-0.0582 4.9423+-0.0380 create-lots-of-functions 23.9682+-1.7810 ? 24.3022+-1.0070 ? might be 1.0139x slower DataView-custom-properties 40.1956+-2.2900 ? 40.4730+-1.9227 ? deconstructing-parameters-overridden-by-function 0.5295+-0.0429 0.5199+-0.0359 might be 1.0185x faster delay-tear-off-arguments-strictmode 13.6793+-0.1243 13.6103+-0.2022 deltablue-varargs 201.6226+-2.9561 200.9221+-2.8593 destructuring-arguments 16.3276+-0.3521 16.2229+-0.3170 destructuring-swap 5.0611+-0.1195 4.9955+-0.0138 might be 1.0131x faster direct-arguments-getbyval 1.2489+-0.0721 1.2147+-0.0771 might be 1.0281x faster div-boolean-double 5.2085+-0.0126 ? 5.2226+-0.0311 ? div-boolean 7.9036+-0.2002 7.7737+-0.0207 might be 1.0167x faster double-get-by-val-out-of-bounds 4.5190+-0.1426 4.4896+-0.1440 double-pollution-getbyval 8.8409+-0.0327 ? 9.1069+-0.3619 ? might be 1.0301x slower double-pollution-putbyoffset 4.2846+-0.0295 ? 4.3129+-0.1571 ? double-to-int32-typed-array-no-inline 2.2485+-0.0394 ? 2.3029+-0.0535 ? might be 1.0242x slower double-to-int32-typed-array 1.9615+-0.0697 ? 2.0110+-0.1784 ? might be 1.0252x slower double-to-uint32-typed-array-no-inline 2.3477+-0.2173 2.3301+-0.0508 double-to-uint32-typed-array 2.0369+-0.1130 2.0211+-0.0682 elidable-new-object-dag 44.4705+-0.9421 44.3093+-1.8957 elidable-new-object-roflcopter 47.1418+-2.1445 ? 48.3983+-1.6167 ? might be 1.0267x slower elidable-new-object-then-call 39.0524+-0.9886 ? 40.0160+-1.6801 ? might be 1.0247x slower elidable-new-object-tree 45.8427+-2.2329 ? 46.8080+-2.1215 ? might be 1.0211x slower empty-string-plus-int 5.3478+-0.0859 ? 5.3951+-0.0979 ? emscripten-cube2hash 38.9958+-1.4705 ? 39.3750+-2.3065 ? exit-length-on-plain-object 15.0839+-1.8035 14.6549+-1.6338 might be 1.0293x faster external-arguments-getbyval 1.2096+-0.0368 1.1970+-0.0639 might be 1.0105x faster external-arguments-putbyval 2.2732+-0.0320 ? 2.2767+-0.0642 ? fixed-typed-array-storage-var-index 1.2992+-0.0928 1.2384+-0.0336 might be 1.0492x faster fixed-typed-array-storage 0.9459+-0.1064 0.9283+-0.0073 might be 1.0190x faster Float32Array-matrix-mult 4.2386+-0.0523 ? 4.2989+-0.1015 ? might be 1.0142x slower Float32Array-to-Float64Array-set 58.6935+-1.9507 54.0833+-3.5596 might be 1.0852x faster Float64Array-alloc-long-lived 72.4810+-1.3233 72.4694+-1.1342 Float64Array-to-Int16Array-set 69.7657+-2.1106 68.9403+-1.6763 might be 1.0120x faster fold-double-to-int 13.4434+-0.1715 13.4080+-0.2180 fold-get-by-id-to-multi-get-by-offset-rare-int 9.5300+-0.2884 ? 9.9062+-0.8518 ? might be 1.0395x slower fold-get-by-id-to-multi-get-by-offset 9.7065+-1.1641 ? 9.7499+-0.8591 ? fold-multi-get-by-offset-to-get-by-offset 7.7506+-1.4456 ? 9.1993+-0.8010 ? might be 1.1869x slower fold-multi-get-by-offset-to-poly-get-by-offset 8.3392+-0.7665 ? 9.3884+-1.1029 ? might be 1.1258x slower fold-multi-put-by-offset-to-poly-put-by-offset 8.0717+-1.5918 ? 8.1219+-1.3453 ? fold-multi-put-by-offset-to-put-by-offset 6.1981+-1.5556 5.0907+-0.9989 might be 1.2175x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 9.3127+-0.8532 ? 9.6066+-0.6015 ? might be 1.0316x slower fold-put-by-id-to-multi-put-by-offset 9.8420+-1.6091 9.7350+-0.6356 might be 1.0110x faster fold-put-structure 6.9079+-0.6056 5.5673+-1.5670 might be 1.2408x faster for-of-iterate-array-entries 4.5448+-0.1054 ? 4.6523+-0.1439 ? might be 1.0237x slower for-of-iterate-array-keys 3.8466+-0.0551 ? 3.9411+-0.1235 ? might be 1.0246x slower for-of-iterate-array-values 3.7158+-0.0463 3.6975+-0.0122 fround 20.3944+-0.6229 19.8998+-0.2584 might be 1.0249x faster ftl-library-inlining-dataview 79.9185+-1.9203 77.9720+-2.5283 might be 1.0250x faster ftl-library-inlining 76.0061+-18.5782 74.6234+-18.7884 might be 1.0185x faster function-dot-apply 1.9779+-0.1565 ! 2.2473+-0.0703 ! definitely 1.1362x slower function-test 3.3751+-0.0359 3.3640+-0.0274 function-with-eval 96.8919+-3.2764 ? 102.7410+-2.8724 ? might be 1.0604x slower gcse-poly-get-less-obvious 19.6378+-2.4901 ? 20.3600+-1.0937 ? might be 1.0368x slower gcse-poly-get 23.4616+-1.2810 ^ 20.5409+-1.0509 ^ definitely 1.1422x faster gcse 4.2965+-0.0450 ? 4.3239+-0.0705 ? get-by-id-bimorphic-check-structure-elimination-simple 2.7705+-0.0744 2.7700+-0.0383 get-by-id-bimorphic-check-structure-elimination 6.1460+-0.0338 6.0777+-0.1038 might be 1.0112x faster get-by-id-chain-from-try-block 7.4904+-1.4817 6.6653+-0.1408 might be 1.1238x faster get-by-id-check-structure-elimination 5.1137+-0.0692 ? 5.5386+-0.6989 ? might be 1.0831x slower get-by-id-proto-or-self 18.0013+-1.2829 17.2503+-0.5130 might be 1.0435x faster get-by-id-quadmorphic-check-structure-elimination-simple 2.9962+-0.1257 2.9550+-0.0311 might be 1.0139x faster get-by-id-self-or-proto 17.3097+-0.1460 ? 17.4957+-0.3640 ? might be 1.0107x slower get-by-val-out-of-bounds 4.3345+-0.0878 ? 4.4478+-0.1702 ? might be 1.0261x slower get_callee_monomorphic 3.7051+-0.1990 3.6634+-0.0426 might be 1.0114x faster get_callee_polymorphic 3.6258+-0.0906 ? 3.7197+-0.3644 ? might be 1.0259x slower getter-no-activation 4.8075+-0.8977 ? 4.8239+-0.0071 ? getter-richards 126.4342+-7.2845 121.7340+-8.7555 might be 1.0386x faster getter 6.0412+-0.8295 5.7036+-0.8249 might be 1.0592x faster global-var-const-infer-fire-from-opt 0.9473+-0.1049 0.8702+-0.0562 might be 1.0887x faster global-var-const-infer 0.8368+-0.0894 ? 0.9104+-0.1455 ? might be 1.0880x slower HashMap-put-get-iterate-keys 27.0236+-0.4763 ? 27.1150+-0.9376 ? HashMap-put-get-iterate 26.0730+-0.2155 ? 26.7907+-0.6871 ? might be 1.0275x slower HashMap-string-put-get-iterate 27.7793+-1.4063 27.2145+-0.8901 might be 1.0208x faster hoist-make-rope 12.0557+-0.8316 11.6673+-0.9282 might be 1.0333x faster hoist-poly-check-structure-effectful-loop 5.1092+-0.3055 ? 5.1335+-0.2283 ? hoist-poly-check-structure 3.7584+-0.0514 ? 3.7816+-0.0570 ? imul-double-only 8.7391+-0.5145 8.6867+-0.8248 imul-int-only 10.3331+-0.9641 ? 10.9566+-1.1022 ? might be 1.0603x slower imul-mixed 8.4437+-0.3619 7.9890+-0.4019 might be 1.0569x faster in-four-cases 19.3302+-1.1096 18.8748+-0.4128 might be 1.0241x faster in-one-case-false 10.0962+-0.3028 ? 10.1195+-0.3660 ? in-one-case-true 10.0107+-0.2461 ? 10.2807+-0.6490 ? might be 1.0270x slower in-two-cases 10.1748+-0.0913 ? 10.4299+-0.4617 ? might be 1.0251x slower indexed-properties-in-objects 2.8966+-0.0284 ? 2.9602+-0.1427 ? might be 1.0219x slower infer-closure-const-then-mov-no-inline 4.0253+-0.4873 3.6569+-0.0289 might be 1.1007x faster infer-closure-const-then-mov 17.8190+-0.4552 ! 19.6688+-0.4287 ! definitely 1.1038x slower infer-closure-const-then-put-to-scope-no-inline 12.2506+-1.4569 ? 13.2628+-0.2349 ? might be 1.0826x slower infer-closure-const-then-put-to-scope 22.9888+-1.4733 ? 23.4200+-1.4928 ? might be 1.0188x slower infer-closure-const-then-reenter-no-inline 49.6613+-1.6597 ! 63.3414+-1.3726 ! definitely 1.2755x slower infer-closure-const-then-reenter 125.5074+-4.1101 ^ 23.2455+-1.8735 ^ definitely 5.3992x faster infer-constant-global-property 31.3693+-1.2861 ? 31.7639+-3.1413 ? might be 1.0126x slower infer-constant-property 2.7829+-0.1079 2.7197+-0.0381 might be 1.0232x faster infer-one-time-closure-ten-vars 12.1574+-0.3044 ? 12.9643+-0.8596 ? might be 1.0664x slower infer-one-time-closure-two-vars 12.2651+-0.9391 ? 13.3950+-1.6687 ? might be 1.0921x slower infer-one-time-closure 11.8008+-0.3774 ? 12.0962+-0.2744 ? might be 1.0250x slower infer-one-time-deep-closure 21.6983+-1.3487 21.5813+-1.1795 inline-arguments-access 4.2643+-0.0336 ? 4.3363+-0.0619 ? might be 1.0169x slower inline-arguments-aliased-access 4.3071+-0.0708 ? 4.3975+-0.1341 ? might be 1.0210x slower inline-arguments-local-escape 4.5760+-0.3566 4.4696+-0.1115 might be 1.0238x faster inline-get-scoped-var 4.4269+-0.3565 ? 4.8453+-0.2166 ? might be 1.0945x slower inlined-put-by-id-transition 11.0185+-0.6563 10.4552+-0.6400 might be 1.0539x faster int-or-other-abs-then-get-by-val 4.9395+-0.0646 ? 5.2116+-0.2627 ? might be 1.0551x slower int-or-other-abs-zero-then-get-by-val 16.7398+-0.3194 ? 17.8930+-0.9118 ? might be 1.0689x slower int-or-other-add-then-get-by-val 4.3014+-0.0967 ? 4.3725+-0.2560 ? might be 1.0165x slower int-or-other-add 5.2650+-0.0214 ? 5.3743+-0.0946 ? might be 1.0208x slower int-or-other-div-then-get-by-val 4.2203+-0.0130 ? 4.3703+-0.1473 ? might be 1.0355x slower int-or-other-max-then-get-by-val 4.3542+-0.0604 4.3460+-0.0507 int-or-other-min-then-get-by-val 4.4829+-0.0906 4.4381+-0.0257 might be 1.0101x faster int-or-other-mod-then-get-by-val 3.9177+-0.0386 3.8794+-0.0493 int-or-other-mul-then-get-by-val 3.9874+-0.0327 ? 4.0895+-0.1592 ? might be 1.0256x slower int-or-other-neg-then-get-by-val 4.6661+-0.1757 4.6402+-0.0837 int-or-other-neg-zero-then-get-by-val 17.5003+-1.3031 17.2601+-0.3999 might be 1.0139x faster int-or-other-sub-then-get-by-val 4.3774+-0.1353 4.2879+-0.0808 might be 1.0209x faster int-or-other-sub 3.5516+-0.0361 3.5033+-0.0512 might be 1.0138x faster int-overflow-local 4.3203+-0.0232 4.3164+-0.0783 Int16Array-alloc-long-lived 50.4646+-1.2298 50.0060+-1.1079 Int16Array-bubble-sort-with-byteLength 21.1336+-0.9369 ? 21.3282+-1.9904 ? Int16Array-bubble-sort 20.5496+-0.7094 ? 20.8999+-1.4582 ? might be 1.0170x slower Int16Array-load-int-mul 1.5358+-0.1098 1.5077+-0.0280 might be 1.0187x faster Int16Array-to-Int32Array-set 60.5276+-0.9697 ^ 51.5043+-1.8603 ^ definitely 1.1752x faster Int32Array-alloc-large 25.4411+-1.3066 24.8808+-0.7636 might be 1.0225x faster Int32Array-alloc-long-lived 56.5892+-2.0863 ? 57.5586+-1.6539 ? might be 1.0171x slower Int32Array-alloc 3.6598+-0.4836 ? 3.9104+-0.6795 ? might be 1.0685x slower Int32Array-Int8Array-view-alloc 8.0074+-1.1381 7.2189+-0.6000 might be 1.1092x faster int52-spill 6.3981+-0.1304 ? 6.6352+-0.1556 ? might be 1.0371x slower Int8Array-alloc-long-lived 47.0903+-1.9396 ? 48.9224+-1.1670 ? might be 1.0389x slower Int8Array-load-with-byteLength 3.3986+-0.0959 3.3497+-0.0436 might be 1.0146x faster Int8Array-load 3.4084+-0.0638 3.3662+-0.0588 might be 1.0126x faster integer-divide 12.1721+-1.1017 11.7240+-0.1626 might be 1.0382x faster integer-modulo 2.1011+-0.0970 2.0991+-0.0399 large-int-captured 5.7803+-0.3257 5.6272+-0.0875 might be 1.0272x faster large-int-neg 17.0446+-1.1951 16.4922+-0.5063 might be 1.0335x faster large-int 14.8522+-0.2491 ? 15.4784+-1.4207 ? might be 1.0422x slower logical-not 4.5147+-0.0349 ! 4.6130+-0.0363 ! definitely 1.0218x slower lots-of-fields 12.9028+-0.4683 12.8330+-0.5821 make-indexed-storage 3.0599+-0.0807 ? 3.1136+-0.0556 ? might be 1.0175x slower make-rope-cse 5.1518+-0.7830 4.5785+-0.0428 might be 1.1252x faster marsaglia-larger-ints 36.8245+-2.2106 35.7552+-0.3837 might be 1.0299x faster marsaglia-osr-entry 23.2393+-0.5851 23.0422+-0.5852 max-boolean 2.4629+-0.0530 ? 2.5089+-0.0327 ? might be 1.0187x slower method-on-number 18.8588+-1.1383 17.8641+-1.4631 might be 1.0557x faster min-boolean 2.5190+-0.0783 ? 2.5672+-0.1105 ? might be 1.0191x slower minus-boolean-double 3.2124+-0.1193 3.1503+-0.0329 might be 1.0197x faster minus-boolean 2.3447+-0.0729 ? 2.3465+-0.0855 ? misc-strict-eq 38.7329+-2.3414 37.6043+-0.5565 might be 1.0300x faster mod-boolean-double 11.7033+-1.1577 11.3716+-0.8281 might be 1.0292x faster mod-boolean 7.8176+-0.0517 ? 7.9848+-0.2553 ? might be 1.0214x slower mul-boolean-double 3.8910+-0.2424 3.7233+-0.0645 might be 1.0451x faster mul-boolean 2.9137+-0.1433 2.9001+-0.0454 neg-boolean 3.1691+-0.0371 ? 3.1995+-0.0462 ? negative-zero-divide 0.3701+-0.0218 ? 0.3813+-0.0402 ? might be 1.0302x slower negative-zero-modulo 0.3611+-0.0181 0.3577+-0.0184 negative-zero-negate 0.3416+-0.0196 ? 0.3643+-0.0181 ? might be 1.0667x slower nested-function-parsing 37.0640+-0.1599 ! 40.5151+-2.0894 ! definitely 1.0931x slower new-array-buffer-dead 2.8475+-0.0408 ? 2.8789+-0.0788 ? might be 1.0110x slower new-array-buffer-push 6.6461+-0.2402 ? 7.3286+-0.9158 ? might be 1.1027x slower new-array-dead 12.4574+-0.2386 12.4506+-0.7829 new-array-push 3.8422+-0.0448 ? 3.9250+-0.1532 ? might be 1.0215x slower no-inline-constructor 120.2118+-2.7387 ? 122.0947+-2.9645 ? might be 1.0157x slower number-test 3.0001+-0.0317 ? 3.0051+-0.0157 ? object-closure-call 5.7203+-0.0676 ? 5.7278+-0.0479 ? object-test 3.1082+-0.0211 ? 3.1385+-0.1146 ? obvious-sink-pathology-taken 145.3853+-2.4106 ? 147.8713+-1.4735 ? might be 1.0171x slower obvious-sink-pathology 140.9152+-1.7669 140.6307+-1.4081 obviously-elidable-new-object 35.3818+-0.6485 ? 37.1530+-2.1010 ? might be 1.0501x slower plus-boolean-arith 2.4963+-0.0226 ? 2.5302+-0.0154 ? might be 1.0136x slower plus-boolean-double 3.2215+-0.0978 3.1997+-0.1211 plus-boolean 2.3877+-0.0327 ? 2.4266+-0.1163 ? might be 1.0163x slower poly-chain-access-different-prototypes-simple 3.2528+-0.0854 ? 3.2957+-0.0424 ? might be 1.0132x slower poly-chain-access-different-prototypes 2.6219+-0.0696 ? 2.6584+-0.1093 ? might be 1.0139x slower poly-chain-access-simpler 3.2926+-0.0679 ? 3.3030+-0.0452 ? poly-chain-access 2.5900+-0.0356 ? 2.6113+-0.0373 ? poly-stricteq 58.9033+-3.1377 ? 59.7670+-2.4642 ? might be 1.0147x slower polymorphic-array-call 1.3232+-0.1640 ? 1.3932+-0.1755 ? might be 1.0530x slower polymorphic-get-by-id 3.0669+-0.0453 ? 3.1140+-0.0375 ? might be 1.0153x slower polymorphic-put-by-id 29.2610+-2.2635 28.5816+-1.0558 might be 1.0238x faster polymorphic-structure 15.1651+-0.4424 15.1484+-0.5156 polyvariant-monomorphic-get-by-id 8.4717+-0.0593 ? 8.5545+-0.1306 ? proto-getter-access 10.1666+-0.1689 10.0459+-0.1305 might be 1.0120x faster put-by-id-replace-and-transition 8.6154+-0.2126 ? 8.6696+-0.1889 ? put-by-id-slightly-polymorphic 2.8499+-0.0620 2.8289+-0.0424 put-by-id 13.4347+-0.4986 ? 13.5535+-0.5035 ? put-by-val-direct 0.6392+-0.0263 0.6353+-0.0238 put-by-val-large-index-blank-indexing-type 6.0756+-0.5585 ? 6.4419+-1.1898 ? might be 1.0603x slower put-by-val-machine-int 2.7293+-0.1250 2.6810+-0.0403 might be 1.0180x faster rare-osr-exit-on-local 14.8688+-0.1897 14.7635+-0.2397 register-pressure-from-osr 22.2151+-1.4501 21.6177+-0.1658 might be 1.0276x faster setter 6.2104+-0.7597 5.5968+-0.5182 might be 1.1096x faster simple-activation-demo 25.9100+-0.9220 ? 26.2005+-1.4012 ? might be 1.0112x slower simple-getter-access 12.8553+-0.2566 12.6443+-0.2594 might be 1.0167x faster simple-poly-call-nested 8.1139+-0.2874 ? 8.2025+-0.3744 ? might be 1.0109x slower simple-poly-call 1.3916+-0.1283 1.3170+-0.0797 might be 1.0567x faster sin-boolean 23.7073+-1.7334 23.2901+-0.6743 might be 1.0179x faster singleton-scope 70.9766+-1.6444 68.2211+-2.0617 might be 1.0404x faster sinkable-new-object-dag 71.5484+-2.4277 70.1779+-0.9151 might be 1.0195x faster sinkable-new-object-taken 52.7122+-2.4708 50.8223+-2.8833 might be 1.0372x faster sinkable-new-object 39.2212+-1.9521 ? 39.4716+-0.4705 ? slow-array-profile-convergence 2.7756+-0.0472 ? 2.8069+-0.0799 ? might be 1.0113x slower slow-convergence 3.2941+-0.1620 ^ 2.6208+-0.0611 ^ definitely 1.2569x faster sparse-conditional 1.1672+-0.0278 1.1508+-0.0303 might be 1.0142x faster splice-to-remove 16.3682+-0.4114 ? 17.2229+-1.2211 ? might be 1.0522x slower string-char-code-at 16.2557+-0.2036 ? 16.4409+-0.1585 ? might be 1.0114x slower string-concat-object 2.3905+-0.0573 ? 2.4158+-0.0515 ? might be 1.0106x slower string-concat-pair-object 2.3828+-0.1034 2.3558+-0.0372 might be 1.0115x faster string-concat-pair-simple 12.3417+-1.4062 11.1431+-0.2081 might be 1.1076x faster string-concat-simple 12.4489+-1.2146 11.9434+-0.6104 might be 1.0423x faster string-cons-repeat 7.8883+-0.7565 ? 8.3374+-0.8112 ? might be 1.0569x slower string-cons-tower 8.6018+-0.9184 ? 8.9860+-1.1453 ? might be 1.0447x slower string-equality 17.5401+-0.4610 ? 17.7528+-0.3738 ? might be 1.0121x slower string-get-by-val-big-char 7.1405+-0.0720 ? 7.1433+-0.1335 ? string-get-by-val-out-of-bounds-insane 3.8757+-0.1365 3.7973+-0.0309 might be 1.0207x faster string-get-by-val-out-of-bounds 5.3198+-0.0311 ^ 5.2170+-0.0601 ^ definitely 1.0197x faster string-get-by-val 3.2744+-0.0564 3.2570+-0.0453 string-hash 2.1146+-0.0421 ? 2.1158+-0.0888 ? string-long-ident-equality 14.4252+-0.1519 ? 14.5861+-0.5747 ? might be 1.0112x slower string-out-of-bounds 14.8557+-0.1456 ? 15.1298+-0.3558 ? might be 1.0185x slower string-repeat-arith 35.4165+-1.8666 34.4462+-1.9443 might be 1.0282x faster string-sub 67.9183+-1.2971 ? 68.9661+-5.0363 ? might be 1.0154x slower string-test 2.9734+-0.0515 2.8972+-0.0304 might be 1.0263x faster string-var-equality 30.9649+-1.4551 ! 37.3593+-1.1015 ! definitely 1.2065x slower structure-hoist-over-transitions 2.6285+-0.1643 2.5727+-0.0650 might be 1.0217x faster substring-concat-weird 38.8635+-1.5136 ? 38.9397+-1.3364 ? substring-concat 40.8782+-1.8642 ? 41.4612+-1.8470 ? might be 1.0143x slower substring 45.6228+-1.1480 45.5901+-1.7298 switch-char-constant 2.7616+-0.0738 ? 2.8000+-0.0961 ? might be 1.0139x slower switch-char 6.9162+-0.8870 ? 7.0967+-1.0097 ? might be 1.0261x slower switch-constant 8.1318+-0.1631 8.0712+-0.4472 switch-string-basic-big-var 15.5608+-1.3076 ? 15.9170+-1.7665 ? might be 1.0229x slower switch-string-basic-big 14.9167+-1.5947 14.7517+-1.6817 might be 1.0112x faster switch-string-basic-var 16.1773+-1.8509 15.8918+-1.5889 might be 1.0180x faster switch-string-basic 13.8016+-1.6902 ? 14.0821+-1.7849 ? might be 1.0203x slower switch-string-big-length-tower-var 20.6296+-1.3130 20.3771+-1.2284 might be 1.0124x faster switch-string-length-tower-var 15.2662+-1.4159 15.2255+-1.2368 switch-string-length-tower 12.6387+-0.0880 12.5393+-0.1764 switch-string-short 14.1183+-1.7640 13.2578+-1.3292 might be 1.0649x faster switch 12.2740+-0.2487 12.0433+-0.2248 might be 1.0192x faster tear-off-arguments-simple 3.4851+-0.2705 3.3212+-0.1423 might be 1.0493x faster tear-off-arguments 4.4690+-0.0361 4.4526+-0.0721 temporal-structure 13.3090+-1.5777 12.3705+-0.3304 might be 1.0759x faster to-int32-boolean 13.9733+-0.5374 13.8850+-0.5287 try-catch-get-by-val-cloned-arguments 14.6123+-1.2164 14.2061+-0.4527 might be 1.0286x faster try-catch-get-by-val-direct-arguments 6.0341+-0.2334 ? 6.1515+-0.0728 ? might be 1.0195x slower try-catch-get-by-val-scoped-arguments 7.7464+-1.1047 ? 8.0839+-0.9557 ? might be 1.0436x slower undefined-property-access 388.0720+-4.3181 ^ 355.3491+-3.6221 ^ definitely 1.0921x faster undefined-test 3.1049+-0.1231 2.9772+-0.0462 might be 1.0429x faster unprofiled-licm 22.9626+-0.5814 ? 22.9842+-0.5800 ? varargs-call 15.8070+-1.3433 ? 16.9543+-1.4527 ? might be 1.0726x slower varargs-construct-inline 23.1932+-1.2714 22.8490+-1.7358 might be 1.0151x faster varargs-construct 31.9290+-1.0798 ? 32.3120+-1.4279 ? might be 1.0120x slower varargs-inline 9.1115+-0.1467 ! 9.5127+-0.1576 ! definitely 1.0440x slower varargs-strict-mode 9.5859+-0.0867 ! 10.1805+-0.1338 ! definitely 1.0620x slower varargs 10.0417+-1.0761 ? 10.0990+-0.1622 ? weird-inlining-const-prop 2.3427+-0.1311 2.2876+-0.1233 might be 1.0241x faster <geometric> 8.7315+-0.0308 8.6923+-0.0172 might be 1.0045x faster TipOfTree FunctionRealloc AsmBench: bigfib.cpp 493.0593+-3.7750 490.5004+-2.1220 cray.c 439.2513+-7.6554 ^ 427.6735+-1.8534 ^ definitely 1.0271x faster dry.c 491.2350+-2.0374 488.2406+-7.1499 FloatMM.c 729.8935+-3.2026 ? 732.0606+-5.5383 ? gcc-loops.cpp 4302.6537+-98.8335 ? 4302.8216+-13.3102 ? n-body.c 1009.8979+-25.9154 984.4889+-2.5985 might be 1.0258x faster Quicksort.c 450.5911+-11.1394 ^ 435.3630+-2.3627 ^ definitely 1.0350x faster stepanov_container.cpp 3584.0342+-16.9142 3567.1348+-10.9824 Towers.c 265.6820+-2.2044 265.4826+-9.6995 <geometric> 806.6878+-3.3973 ^ 797.7624+-3.6862 ^ definitely 1.0112x faster TipOfTree FunctionRealloc CompressionBench: huffman 369.7833+-8.1116 ! 383.1773+-2.7191 ! definitely 1.0362x slower arithmetic-simple 398.6577+-2.6603 ? 401.0917+-8.3839 ? arithmetic-precise 299.4504+-2.5867 297.3054+-3.8346 arithmetic-complex-precise 298.4787+-4.0636 ? 300.7178+-3.7527 ? arithmetic-precise-order-0 428.0608+-4.5119 427.2370+-5.7287 arithmetic-precise-order-1 327.3994+-3.5718 ? 328.2664+-7.5618 ? arithmetic-precise-order-2 364.8403+-3.5319 ? 367.4930+-4.8679 ? arithmetic-simple-order-1 424.3108+-4.3663 ? 426.0158+-6.7366 ? arithmetic-simple-order-2 471.4926+-1.9479 ? 472.7461+-3.8261 ? lz-string 328.2074+-23.2972 ? 332.5008+-22.7965 ? might be 1.0131x slower <geometric> 366.8501+-2.6268 ? 369.4032+-2.3654 ? might be 1.0070x slower TipOfTree FunctionRealloc TipOfTree FunctionRealloc Geomean of preferred means: <scaled-result> 64.0958+-0.1805 63.8925+-0.1926 might be 1.0032x faster
WebKit Commit Bot
Comment 18 2015-04-08 12:39:12 PDT
Attachment 250374 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/InferredValue.h:53: The parameter name "globalObject" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 1 in 74 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 19 2015-04-08 14:14:57 PDT
Created attachment 250384 [details] fix some builds
Filip Pizlo
Comment 20 2015-04-08 16:05:13 PDT
Created attachment 250392 [details] more fixes
WebKit Commit Bot
Comment 21 2015-04-08 16:07:31 PDT
Attachment 250392 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/JSFunction.h:63: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSFunction.h:63: The parameter name "executable" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSFunction.h:63: The parameter name "scope" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 3 in 75 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 22 2015-04-08 20:43:12 PDT
Created attachment 250407 [details] fix style
Geoffrey Garen
Comment 23 2015-04-09 13:22:06 PDT
Comment on attachment 250407 [details] fix style View in context: https://bugs.webkit.org/attachment.cgi?id=250407&action=review r=me > Source/JavaScriptCore/ChangeLog:35 > + constant folding. Second, it means that we will detect a singlton scope even if it is singlton => singleton > Source/JavaScriptCore/ChangeLog:50 > + change, block scoping would had had to have some story for the function reentry watchpoint on any would had had to have => would have needed > Source/JavaScriptCore/bytecode/VariableWriteFireDetail.h:50 > +private: > + JSObject* m_object; > + const PropertyName& m_name; Would be nice to "void* operator new(size_t) = delete;" to help document and enforce that this is a stack-only thing. > Source/JavaScriptCore/bytecode/Watchpoint.h:91 > + WatchpointState stateOnMainThread() const You can run JS on a non-main thread, so we should probably call this "stateOnJSThread". > Source/JavaScriptCore/bytecode/Watchpoint.h:233 > + // Fast way of getting the state, which only works from the main thread. > + WatchpointState stateOnMainThread() const only works from the JS execution thread. stateOnJSThread. > Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3503 > + JSValue value = globalObject->variableAt(offset).get(); What happens if the JS thread resizes the global object's segmented vector while the compilation thread tries to read from it. Might the compilation thread try to read from free'd memory? Individual segments will not be deleted in a segmented vector, but the parent vector that points to the individual segments may be deleted. > Source/JavaScriptCore/dfg/DFGGraph.cpp:1056 > + value = activation->variableAt(offset).get(); Same concurrency question about variableAt. > Source/JavaScriptCore/runtime/InferredValue.h:110 > + class ValueCleanup : public UnconditionalFinalizer { Please use WTF_MAKE_FAST_ALLOCATED.
Filip Pizlo
Comment 24 2015-04-11 07:52:05 PDT
(In reply to comment #23) > Comment on attachment 250407 [details] > fix style > > View in context: > https://bugs.webkit.org/attachment.cgi?id=250407&action=review > > r=me > > > Source/JavaScriptCore/ChangeLog:35 > > + constant folding. Second, it means that we will detect a singlton scope even if it is > > singlton => singleton > > > Source/JavaScriptCore/ChangeLog:50 > > + change, block scoping would had had to have some story for the function reentry watchpoint on any > > would had had to have => would have needed > > > Source/JavaScriptCore/bytecode/VariableWriteFireDetail.h:50 > > +private: > > + JSObject* m_object; > > + const PropertyName& m_name; > > Would be nice to "void* operator new(size_t) = delete;" to help document and > enforce that this is a stack-only thing. Interesting. Will do@ > > > Source/JavaScriptCore/bytecode/Watchpoint.h:91 > > + WatchpointState stateOnMainThread() const > > You can run JS on a non-main thread, so we should probably call this > "stateOnJSThread". > > > Source/JavaScriptCore/bytecode/Watchpoint.h:233 > > + // Fast way of getting the state, which only works from the main thread. > > + WatchpointState stateOnMainThread() const > > only works from the JS execution thread. > > stateOnJSThread. OK! > > > Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:3503 > > + JSValue value = globalObject->variableAt(offset).get(); > > What happens if the JS thread resizes the global object's segmented vector > while the compilation thread tries to read from it. Might the compilation > thread try to read from free'd memory? Individual segments will not be > deleted in a segmented vector, but the parent vector that points to the > individual segments may be deleted. You found a bug! It's a shamefully self-inflicted one, too. The solution is just to say: JSValue value = JSValue::decode(*bitwise_cast<EncodedJSValue*>(operand)); That's because the bytecode has a pointer to the global inside it. Currently, we assert equivalence between &variableAt(offset) and that expression. So, we should remove the assertion and just use the bytecode's pointer operand directly. JSSegmentedVariableObject is unusual in this regard - the rest of our object models allow for concurrent access because all interior data structures are subject to GC and will not be invalidated until a GC flip, which synchronizes correctly with compiler threads (by waiting for them to either complete, or safepoint into LLVM). I'll add a FIXME comment in JSSegmentedVariableObject and file a bug about that. It's an asymptomatic bug right now because the compiler accesses globals directly by pointer (via the operand in the bytecode and in the case of Get/PutGlobalVar, a pointer operand in DFG IR), but it's a surprising and undesirable thing so we should change it eventually. > > > Source/JavaScriptCore/dfg/DFGGraph.cpp:1056 > > + value = activation->variableAt(offset).get(); > > Same concurrency question about variableAt. Nope! Activations use a more sensible object model - in fact the properties are just inline and there is no resizing - so this has no such concurrency issue. > > > Source/JavaScriptCore/runtime/InferredValue.h:110 > > + class ValueCleanup : public UnconditionalFinalizer { > > Please use WTF_MAKE_FAST_ALLOCATED. OK! Thanks for the review.
Filip Pizlo
Comment 25 2015-04-13 15:14:46 PDT
Brent Fulgham
Comment 26 2015-04-13 16:06:07 PDT
I don't know why EWS didn't catch this, but we're getting Windows build failure with this patch: error C2248: 'JSC::InferredValue::ValueCleanup' : cannot access private class declared in class 'JSC::InferredValue' (..\runtime\InferredValue.cpp)
Filip Pizlo
Comment 27 2015-04-13 16:08:49 PDT
(In reply to comment #26) > I don't know why EWS didn't catch this, but we're getting Windows build > failure with this patch: > > error C2248: 'JSC::InferredValue::ValueCleanup' : cannot access private > class declared in class 'JSC::InferredValue' (..\runtime\InferredValue.cpp) I think I just fixed this.
Note You need to log in before you can comment on or make changes to this bug.