Bug 145204

Summary: Node::origin should be able to tell you if it's OK to exit
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, basile_clement, benjamin, commit-queue, ggaren, mark.lam, mhahnenb, mmirman, msaboff, nrotem, oliver, saam, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on: 145205, 148286, 148323, 148331, 148338, 148367, 148397    
Bug Blocks: 148259, 148462    
Attachments:
Description Flags
maybe it'll work
none
builds but crashes on launch
none
more things
none
builds again
none
it passed a test
none
more things
none
even more things
none
passing so many tests
none
more fixes
none
passes hundreds of tests!
none
passes thousands of tests!
none
might be done
none
few more fixes
none
even more stuff
none
the patch ggaren: review+

Filip Pizlo
Reported 2015-05-19 22:49:04 PDT
We often have sequences of operations like this: a: GetStuff(...) b: Check(Thing:@a) c: Call(@a, ...) d: MovHint(@c, loc42) Notice that GetStuff, Check, and Call can all exit. But after Call, you can't exit anymore. In particular, MovHint cannot exit. But, the fact that MovHint cannot exit is not communicated in the IR. We should change that: a Node's forExit origin is set only when that node can exit. This means that we can for example immediately see that we cannot hoist an exiting node just above the MovHint. But, we would also see that we could hoist an exiting node above the Call, or above @a or @b. This would harden the IR for fancier CFG transformations, and make it easier to split blocks and insert control flow.
Attachments
maybe it'll work (11.49 KB, patch)
2015-08-20 15:24 PDT, Filip Pizlo
no flags
builds but crashes on launch (22.83 KB, patch)
2015-08-20 16:04 PDT, Filip Pizlo
no flags
more things (29.63 KB, patch)
2015-08-21 12:35 PDT, Filip Pizlo
no flags
builds again (33.94 KB, patch)
2015-08-21 14:12 PDT, Filip Pizlo
no flags
it passed a test (38.36 KB, patch)
2015-08-21 15:05 PDT, Filip Pizlo
no flags
more things (43.26 KB, patch)
2015-08-22 11:55 PDT, Filip Pizlo
no flags
even more things (59.89 KB, patch)
2015-08-24 19:50 PDT, Filip Pizlo
no flags
passing so many tests (71.35 KB, patch)
2015-08-24 21:37 PDT, Filip Pizlo
no flags
more fixes (78.98 KB, patch)
2015-08-25 12:39 PDT, Filip Pizlo
no flags
passes hundreds of tests! (81.35 KB, patch)
2015-08-25 12:52 PDT, Filip Pizlo
no flags
passes thousands of tests! (86.87 KB, patch)
2015-08-25 14:14 PDT, Filip Pizlo
no flags
might be done (95.67 KB, patch)
2015-08-25 15:40 PDT, Filip Pizlo
no flags
few more fixes (97.10 KB, patch)
2015-08-25 16:49 PDT, Filip Pizlo
no flags
even more stuff (97.55 KB, patch)
2015-08-25 18:39 PDT, Filip Pizlo
no flags
the patch (112.86 KB, patch)
2015-08-25 21:32 PDT, Filip Pizlo
ggaren: review+
Filip Pizlo
Comment 1 2015-08-20 15:24:02 PDT
Created attachment 259507 [details] maybe it'll work
Filip Pizlo
Comment 2 2015-08-20 16:04:09 PDT
Created attachment 259512 [details] builds but crashes on launch Off to a good start!
Filip Pizlo
Comment 3 2015-08-21 12:35:57 PDT
Created attachment 259643 [details] more things
Filip Pizlo
Comment 4 2015-08-21 14:12:11 PDT
Created attachment 259656 [details] builds again Validation is catching tons of errors. Fixing them...
Filip Pizlo
Comment 5 2015-08-21 15:05:37 PDT
Created attachment 259666 [details] it passed a test
Filip Pizlo
Comment 6 2015-08-22 11:55:43 PDT
Created attachment 259724 [details] more things
Filip Pizlo
Comment 7 2015-08-24 19:50:10 PDT
Created attachment 259810 [details] even more things
Filip Pizlo
Comment 8 2015-08-24 21:37:32 PDT
Created attachment 259820 [details] passing so many tests
Filip Pizlo
Comment 9 2015-08-25 12:39:40 PDT
Created attachment 259871 [details] more fixes
Filip Pizlo
Comment 10 2015-08-25 12:52:27 PDT
Created attachment 259872 [details] passes hundreds of tests!
Filip Pizlo
Comment 11 2015-08-25 14:14:57 PDT
Created attachment 259879 [details] passes thousands of tests!
Filip Pizlo
Comment 12 2015-08-25 15:40:55 PDT
Created attachment 259892 [details] might be done This one looks like it might be the winner. So far, no test failures...
Filip Pizlo
Comment 13 2015-08-25 16:49:54 PDT
Created attachment 259902 [details] few more fixes
Filip Pizlo
Comment 14 2015-08-25 18:39:06 PDT
Created attachment 259911 [details] even more stuff Finding more little corner cases
Filip Pizlo
Comment 15 2015-08-25 19:11:48 PDT
(In reply to comment #14) > Created attachment 259911 [details] > even more stuff > > Finding more little corner cases This just passed debug 64-bit tests.
Filip Pizlo
Comment 16 2015-08-25 20:51:42 PDT
This doesn't appear to hurt performance. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on shakezilla (MacBookPro11,3). VMs tested: "TipOfTree" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r188938) "ExitOK" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r188938) Collected 7 samples per benchmark/VM, with 7 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 ExitOK SunSpider: 3d-cube 4.8896+-0.1833 ? 5.3938+-1.5224 ? might be 1.1031x slower 3d-morph 5.3436+-0.3864 5.2766+-0.1187 might be 1.0127x faster 3d-raytrace 5.1812+-0.4144 5.1461+-0.3324 access-binary-trees 1.9736+-0.0592 ? 2.0747+-0.2195 ? might be 1.0512x slower access-fannkuch 5.3772+-0.3580 5.2728+-0.0767 might be 1.0198x faster access-nbody 2.4603+-0.0778 2.4450+-0.0610 access-nsieve 3.0032+-0.0711 ? 3.2390+-0.3367 ? might be 1.0785x slower bitops-3bit-bits-in-byte 1.4457+-0.0521 ? 1.4539+-0.0514 ? bitops-bits-in-byte 3.2582+-0.0774 3.2457+-0.0710 bitops-bitwise-and 1.9789+-0.0653 1.9486+-0.0345 might be 1.0155x faster bitops-nsieve-bits 2.9690+-0.0724 2.9212+-0.0396 might be 1.0164x faster controlflow-recursive 2.1756+-0.4144 2.0517+-0.0688 might be 1.0604x faster crypto-aes 3.8805+-0.2668 3.8577+-0.1680 crypto-md5 2.4336+-0.1663 2.3236+-0.0925 might be 1.0473x faster crypto-sha1 2.4112+-0.2668 ? 2.4223+-0.1492 ? date-format-tofte 6.6462+-0.2358 6.5720+-0.4110 might be 1.0113x faster date-format-xparb 4.6622+-0.1911 ? 5.0462+-0.4624 ? might be 1.0824x slower math-cordic 2.7442+-0.1126 ? 2.8068+-0.2761 ? might be 1.0228x slower math-partial-sums 5.0578+-0.1121 5.0247+-0.0790 math-spectral-norm 1.9392+-0.3083 1.7838+-0.0606 might be 1.0871x faster regexp-dna 6.4343+-0.2482 ? 6.7470+-0.3588 ? might be 1.0486x slower string-base64 4.3145+-0.2144 ? 4.4381+-0.3994 ? might be 1.0286x slower string-fasta 5.9825+-0.2559 5.8736+-0.2866 might be 1.0185x faster string-tagcloud 7.9216+-0.1464 ? 8.2128+-0.4057 ? might be 1.0368x slower string-unpack-code 18.3817+-0.6447 ? 18.9768+-0.9092 ? might be 1.0324x slower string-validate-input 4.5040+-0.1386 4.4999+-0.1523 <arithmetic> 4.5142+-0.0571 ? 4.5790+-0.1200 ? might be 1.0144x slower TipOfTree ExitOK LongSpider: 3d-cube 808.3400+-10.0554 ? 818.5363+-10.9203 ? might be 1.0126x slower 3d-morph 1500.2028+-10.8913 1498.3061+-9.2667 3d-raytrace 603.4610+-6.6692 ? 607.3777+-4.3103 ? access-binary-trees 797.7372+-3.3536 ? 798.3420+-6.0576 ? access-fannkuch 284.8860+-9.4044 ? 292.6564+-22.8851 ? might be 1.0273x slower access-nbody 509.1995+-3.6657 506.9030+-2.3976 access-nsieve 365.0481+-9.2001 363.5181+-10.6793 bitops-3bit-bits-in-byte 38.5849+-0.8184 ? 39.2378+-1.8421 ? might be 1.0169x slower bitops-bits-in-byte 77.5928+-2.3438 76.3056+-1.6621 might be 1.0169x faster bitops-nsieve-bits 407.5053+-7.9268 ? 410.0804+-8.0490 ? controlflow-recursive 427.2923+-7.7161 425.4536+-6.3240 crypto-aes 568.1852+-11.6548 ? 572.4289+-8.6458 ? crypto-md5 500.0910+-3.3382 496.8773+-6.3817 crypto-sha1 641.3495+-13.1620 ? 651.4514+-10.2983 ? might be 1.0158x slower date-format-tofte 494.4534+-5.8857 ? 498.8000+-9.3658 ? date-format-xparb 672.9099+-13.2751 ! 754.3044+-9.4436 ! definitely 1.1210x slower hash-map 149.1402+-1.8986 ? 151.0415+-3.5234 ? might be 1.0127x slower math-cordic 484.4093+-3.3417 482.2714+-2.2487 math-partial-sums 465.8065+-3.0430 ? 467.7980+-3.3115 ? math-spectral-norm 551.0503+-4.4607 550.0794+-3.5044 string-base64 351.9412+-5.8611 349.3042+-4.0061 string-fasta 364.7245+-2.8287 ? 368.3845+-4.7967 ? might be 1.0100x slower string-tagcloud 178.4104+-1.7611 ? 179.2775+-1.1052 ? <geometric> 390.8698+-1.4926 ! 394.1693+-1.1317 ! definitely 1.0084x slower TipOfTree ExitOK V8Spider: crypto 49.3206+-1.9541 49.0698+-1.1195 deltablue 89.3190+-5.1352 85.4078+-5.4816 might be 1.0458x faster earley-boyer 39.1767+-1.1275 ? 40.1682+-1.1828 ? might be 1.0253x slower raytrace 32.0417+-1.7159 31.9754+-1.6580 regexp 61.8215+-1.1598 ? 62.0590+-2.2039 ? richards 65.1760+-1.1590 ? 65.5263+-1.6507 ? splay 35.7221+-1.6290 34.8504+-1.5896 might be 1.0250x faster <geometric> 50.0950+-0.5312 49.7906+-0.6245 might be 1.0061x faster TipOfTree ExitOK Octane: encrypt 0.16835+-0.00385 ? 0.17087+-0.00161 ? might be 1.0149x slower decrypt 3.25838+-0.10900 ? 3.26244+-0.11730 ? deltablue x2 0.15809+-0.00236 0.15538+-0.00352 might be 1.0175x faster earley 0.27482+-0.00174 ? 0.27742+-0.00291 ? boyer 4.14026+-0.04072 4.12559+-0.01394 navier-stokes x2 4.88253+-0.03590 4.86301+-0.01878 raytrace x2 0.99439+-0.03701 ? 0.99524+-0.04065 ? richards x2 0.10996+-0.00085 0.10955+-0.00110 splay x2 0.33553+-0.00424 0.33212+-0.00392 might be 1.0103x faster regexp x2 25.26138+-0.50646 24.87384+-0.37559 might be 1.0156x faster pdfjs x2 36.62692+-0.26023 36.59849+-0.27802 mandreel x2 44.65932+-0.91312 44.31157+-1.02146 gbemu x2 34.22528+-0.42733 ? 34.22709+-0.33630 ? closure 0.56477+-0.00582 ? 0.56604+-0.00348 ? jquery 7.13536+-0.02819 ? 7.14109+-0.07167 ? box2d x2 10.02969+-0.11983 ? 10.20829+-0.24253 ? might be 1.0178x slower zlib x2 390.47519+-7.59867 390.02182+-6.13878 typescript x2 639.91085+-9.84479 ? 656.27741+-12.23213 ? might be 1.0256x slower <geometric> 5.58119+-0.01319 5.57958+-0.03397 might be 1.0003x faster TipOfTree ExitOK Kraken: ai-astar 228.318+-12.078 ? 229.190+-8.489 ? audio-beat-detection 50.138+-0.511 ? 51.053+-0.862 ? might be 1.0182x slower audio-dft 95.221+-0.303 ? 98.130+-3.190 ? might be 1.0305x slower audio-fft 34.779+-0.359 ? 34.861+-0.268 ? audio-oscillator 60.515+-0.639 59.657+-1.031 might be 1.0144x faster imaging-darkroom 61.089+-0.577 60.790+-0.088 imaging-desaturate 49.408+-0.425 ? 49.700+-0.501 ? imaging-gaussian-blur 84.811+-2.928 84.612+-0.923 json-parse-financial 38.814+-0.795 ? 39.707+-0.906 ? might be 1.0230x slower json-stringify-tinderbox 22.287+-0.710 ? 23.121+-0.806 ? might be 1.0374x slower stanford-crypto-aes 41.077+-1.961 ? 42.103+-0.807 ? might be 1.0250x slower stanford-crypto-ccm 33.910+-0.585 ? 35.390+-1.193 ? might be 1.0436x slower stanford-crypto-pbkdf2 95.025+-1.618 ? 95.365+-1.706 ? stanford-crypto-sha256-iterative 37.845+-1.223 36.653+-0.786 might be 1.0325x faster <arithmetic> 66.660+-0.821 ? 67.166+-0.588 ? might be 1.0076x slower TipOfTree ExitOK JSRegress: abc-forward-loop-equal 30.4698+-1.3190 29.4448+-0.4076 might be 1.0348x faster abc-postfix-backward-loop 30.7947+-1.5435 30.1754+-0.8200 might be 1.0205x faster abc-simple-backward-loop 30.2321+-0.7664 ? 31.4377+-2.9701 ? might be 1.0399x slower abc-simple-forward-loop 29.6490+-0.6774 ? 30.4507+-1.4745 ? might be 1.0270x slower abc-skippy-loop 21.8389+-0.3638 21.7327+-0.7147 abs-boolean 2.4155+-0.0657 ? 2.4914+-0.2234 ? might be 1.0314x slower adapt-to-double-divide 16.6795+-0.5643 16.3973+-0.3894 might be 1.0172x faster aliased-arguments-getbyval 1.3232+-0.1773 1.2033+-0.0847 might be 1.0996x faster allocate-big-object 2.4394+-0.1895 ? 2.4978+-0.2010 ? might be 1.0239x slower arguments-named-and-reflective 11.1548+-0.5601 10.9955+-0.5189 might be 1.0145x faster arguments-out-of-bounds 9.3332+-0.2055 ? 9.5661+-0.2637 ? might be 1.0250x slower arguments-strict-mode 9.8496+-0.2187 9.7982+-0.5506 arguments 8.9028+-0.4698 8.3916+-0.2159 might be 1.0609x faster arity-mismatch-inlining 0.7661+-0.0086 ? 0.7789+-0.0155 ? might be 1.0166x slower array-access-polymorphic-structure 5.8091+-0.1679 ? 5.9122+-0.1920 ? might be 1.0177x slower array-nonarray-polymorhpic-access 24.8020+-0.4813 ? 25.0867+-0.7482 ? might be 1.0115x slower array-prototype-every 77.7476+-1.0371 ? 78.7034+-1.7710 ? might be 1.0123x slower array-prototype-forEach 76.9349+-2.5649 76.5386+-1.7993 array-prototype-map 81.7243+-0.8562 ? 83.5348+-3.5031 ? might be 1.0222x slower array-prototype-reduce 73.1005+-2.9519 71.7309+-1.7091 might be 1.0191x faster array-prototype-reduceRight 71.9795+-1.5904 71.7950+-1.4373 array-prototype-some 77.6536+-1.2321 76.5376+-1.2714 might be 1.0146x faster array-splice-contiguous 20.1143+-0.4437 ? 20.7225+-0.4967 ? might be 1.0302x slower array-with-double-add 3.4363+-0.1568 ? 3.5920+-0.2024 ? might be 1.0453x slower array-with-double-increment 3.0782+-0.1170 3.0622+-0.0839 array-with-double-mul-add 4.1679+-0.1702 ? 4.3237+-0.4513 ? might be 1.0374x slower array-with-double-sum 3.1311+-0.1324 ? 3.1365+-0.0361 ? array-with-int32-add-sub 5.8179+-0.0649 5.7378+-0.0997 might be 1.0140x faster array-with-int32-or-double-sum 3.2452+-0.2143 ? 3.2574+-0.1195 ? ArrayBuffer-DataView-alloc-large-long-lived 25.7573+-0.7892 ? 26.6571+-0.9699 ? might be 1.0349x slower ArrayBuffer-DataView-alloc-long-lived 11.6248+-0.3907 ? 11.7550+-0.4453 ? might be 1.0112x slower ArrayBuffer-Int32Array-byteOffset 3.6823+-0.1416 3.5969+-0.1422 might be 1.0238x faster ArrayBuffer-Int8Array-alloc-large-long-lived 31.3067+-3.5543 30.5074+-0.5660 might be 1.0262x faster ArrayBuffer-Int8Array-alloc-long-lived-buffer 20.0981+-0.5562 ? 20.5520+-0.6470 ? might be 1.0226x slower ArrayBuffer-Int8Array-alloc-long-lived 12.1869+-0.3097 ? 12.6426+-0.4827 ? might be 1.0374x slower ArrayBuffer-Int8Array-alloc 9.4494+-0.2549 ? 9.6077+-0.3719 ? might be 1.0168x slower arrowfunction-call 10.1312+-0.1011 9.9428+-0.3881 might be 1.0189x faster asmjs_bool_bug 6.9733+-0.3603 6.8529+-0.0975 might be 1.0176x faster assign-custom-setter-polymorphic 2.3062+-0.0407 ? 2.3190+-0.0818 ? assign-custom-setter 3.1531+-0.0951 ? 3.2816+-0.3032 ? might be 1.0407x slower basic-set 8.7397+-0.1847 8.7258+-0.6103 big-int-mul 3.4840+-0.2896 ? 3.5791+-0.1221 ? might be 1.0273x slower boolean-test 2.9172+-0.1591 ? 2.9885+-0.1551 ? might be 1.0244x slower branch-fold 3.5517+-0.0631 3.5396+-0.0492 branch-on-string-as-boolean 17.0410+-0.5453 ? 17.6646+-0.9355 ? might be 1.0366x slower by-val-generic 2.4249+-0.2230 2.2906+-0.0929 might be 1.0587x faster call-spread-apply 25.9804+-0.5496 25.9255+-0.6542 call-spread-call 20.9815+-0.3201 ? 21.5199+-0.7379 ? might be 1.0257x slower captured-assignments 0.5308+-0.1792 0.4657+-0.0520 might be 1.1398x faster cast-int-to-double 5.0031+-0.0756 ? 5.1517+-0.2375 ? might be 1.0297x slower cell-argument 6.6503+-0.4772 6.4904+-0.6054 might be 1.0246x faster cfg-simplify 2.6374+-0.0775 ? 2.7147+-0.1287 ? might be 1.0293x slower chain-getter-access 8.4846+-0.3806 8.3207+-0.1807 might be 1.0197x faster cmpeq-obj-to-obj-other 11.9402+-0.5529 ? 12.4177+-1.0157 ? might be 1.0400x slower constant-test 4.8178+-0.2333 4.7880+-0.0702 create-lots-of-functions 9.7049+-0.4674 9.3466+-0.3243 might be 1.0383x faster cse-new-array-buffer 2.1017+-0.1020 ? 2.2136+-0.0891 ? might be 1.0532x slower cse-new-array 2.2688+-0.3004 2.2414+-0.0982 might be 1.0122x faster DataView-custom-properties 30.5092+-0.5099 ? 31.9320+-1.3195 ? might be 1.0466x slower delay-tear-off-arguments-strictmode 13.7024+-3.1280 12.4542+-0.4523 might be 1.1002x faster deltablue-varargs 161.1699+-3.2985 159.4307+-3.1459 might be 1.0109x faster destructuring-arguments 161.6390+-2.7455 158.9493+-2.4782 might be 1.0169x faster destructuring-parameters-overridden-by-function 0.5042+-0.1385 0.4852+-0.0871 might be 1.0390x faster destructuring-swap 4.6210+-0.0642 ? 4.7531+-0.2157 ? might be 1.0286x slower direct-arguments-getbyval 1.2997+-0.1812 1.2055+-0.0507 might be 1.0781x faster div-boolean-double 5.3129+-0.0854 5.2583+-0.1081 might be 1.0104x faster div-boolean 8.1765+-0.1337 8.1445+-0.1610 double-get-by-val-out-of-bounds 4.2850+-0.7986 3.9773+-0.1031 might be 1.0774x faster double-pollution-getbyval 8.8892+-0.4766 ? 8.8962+-0.3639 ? double-pollution-putbyoffset 3.8402+-0.2338 ? 3.9023+-0.4059 ? might be 1.0162x slower double-real-use 24.9604+-2.0559 ? 25.5760+-2.6534 ? might be 1.0247x slower double-to-int32-typed-array-no-inline 1.9641+-0.0838 ? 2.1265+-0.2835 ? might be 1.0827x slower double-to-int32-typed-array 1.7376+-0.0488 ? 1.7497+-0.1332 ? double-to-uint32-typed-array-no-inline 1.9878+-0.0622 ? 2.0178+-0.0783 ? might be 1.0151x slower double-to-uint32-typed-array 1.8614+-0.1373 ? 1.9076+-0.1080 ? might be 1.0248x slower elidable-new-object-dag 34.3115+-0.9118 ? 34.5193+-1.0677 ? elidable-new-object-roflcopter 32.9223+-1.6101 ? 33.2328+-1.7590 ? elidable-new-object-then-call 31.7666+-0.9912 31.2389+-0.4176 might be 1.0169x faster elidable-new-object-tree 37.4168+-0.8893 ? 37.9925+-1.4968 ? might be 1.0154x slower empty-string-plus-int 4.8125+-0.2719 4.7802+-0.2064 emscripten-cube2hash 27.5885+-1.1768 26.0370+-0.9753 might be 1.0596x faster exit-length-on-plain-object 12.4285+-0.7695 12.3016+-0.7431 might be 1.0103x faster external-arguments-getbyval 1.1988+-0.1032 1.1540+-0.0735 might be 1.0388x faster external-arguments-putbyval 2.2773+-0.3406 2.1579+-0.1198 might be 1.0554x faster fixed-typed-array-storage-var-index 1.1438+-0.0286 1.1143+-0.0384 might be 1.0264x faster fixed-typed-array-storage 0.8456+-0.0572 0.8448+-0.0165 Float32Array-matrix-mult 3.9317+-0.1272 3.8333+-0.1836 might be 1.0257x faster Float32Array-to-Float64Array-set 46.2292+-0.4682 ? 46.7229+-0.9425 ? might be 1.0107x slower Float64Array-alloc-long-lived 70.1972+-1.3152 68.7367+-1.3666 might be 1.0212x faster Float64Array-to-Int16Array-set 56.8904+-1.9615 ? 58.7655+-1.0549 ? might be 1.0330x slower fold-double-to-int 11.9571+-0.1793 11.9384+-0.2948 fold-get-by-id-to-multi-get-by-offset-rare-int 11.1296+-0.8040 ? 12.6097+-1.2274 ? might be 1.1330x slower fold-get-by-id-to-multi-get-by-offset 10.6460+-1.4266 10.2802+-0.3830 might be 1.0356x faster fold-multi-get-by-offset-to-get-by-offset 7.9280+-1.4227 ? 9.0385+-0.6676 ? might be 1.1401x slower fold-multi-get-by-offset-to-poly-get-by-offset 8.9663+-0.8717 7.8375+-1.7048 might be 1.1440x faster fold-multi-put-by-offset-to-poly-put-by-offset 8.6588+-0.7348 8.2246+-1.0498 might be 1.0528x faster fold-multi-put-by-offset-to-put-by-offset 6.0339+-1.5662 4.5663+-0.7756 might be 1.3214x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 8.4769+-1.1738 8.0220+-0.1819 might be 1.0567x faster fold-put-by-id-to-multi-put-by-offset 9.8156+-1.5095 ? 10.1333+-1.3423 ? might be 1.0324x slower fold-put-by-val-with-string-to-multi-put-by-offset 10.4302+-1.3854 9.7178+-0.5050 might be 1.0733x faster fold-put-by-val-with-symbol-to-multi-put-by-offset 10.3157+-1.4323 ? 11.5949+-2.4073 ? might be 1.1240x slower fold-put-structure 5.8551+-0.8126 4.5640+-1.0157 might be 1.2829x faster for-of-iterate-array-entries 11.4443+-0.6031 11.0149+-0.3072 might be 1.0390x faster for-of-iterate-array-keys 3.3741+-0.1590 3.3563+-0.1787 for-of-iterate-array-values 3.4786+-0.2960 3.4550+-0.2379 fround 17.9725+-0.5887 17.8930+-0.5270 ftl-library-inlining-dataview 55.7602+-0.9962 ? 56.0685+-1.6089 ? ftl-library-inlining 108.9796+-2.3380 108.6687+-1.1867 function-call 9.9092+-0.2060 ? 10.2310+-0.2590 ? might be 1.0325x slower function-dot-apply 1.8305+-0.0914 ? 1.9946+-0.1959 ? might be 1.0896x slower function-test 2.6820+-0.0484 ? 2.6937+-0.0554 ? function-with-eval 98.5656+-1.5687 ? 102.3465+-2.7759 ? might be 1.0384x slower gcse-poly-get-less-obvious 14.3858+-0.3796 ? 14.4665+-0.3622 ? gcse-poly-get 16.2370+-0.5220 ? 16.3306+-1.0435 ? gcse 3.8783+-0.2961 3.8205+-0.1295 might be 1.0151x faster get-by-id-bimorphic-check-structure-elimination-simple 2.5454+-0.0386 ? 2.5957+-0.0617 ? might be 1.0197x slower get-by-id-bimorphic-check-structure-elimination 5.9804+-0.4146 5.9579+-0.4387 get-by-id-chain-from-try-block 5.4656+-0.1293 5.4190+-0.1319 get-by-id-check-structure-elimination 4.3968+-0.1786 4.3503+-0.0728 might be 1.0107x faster get-by-id-proto-or-self 14.5692+-0.4610 ? 15.3856+-0.7658 ? might be 1.0560x slower get-by-id-quadmorphic-check-structure-elimination-simple 2.9245+-0.2379 2.8370+-0.0375 might be 1.0308x faster get-by-id-self-or-proto 14.9092+-0.5470 14.7171+-0.3855 might be 1.0131x faster get-by-val-out-of-bounds 3.7075+-0.0922 ? 3.7876+-0.1064 ? might be 1.0216x slower get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.7619+-0.0473 ? 2.8193+-0.1035 ? might be 1.0208x slower get-by-val-with-string-bimorphic-check-structure-elimination 6.0056+-0.0926 ? 6.0322+-0.2165 ? get-by-val-with-string-chain-from-try-block 5.8793+-0.5130 5.7002+-0.2256 might be 1.0314x faster get-by-val-with-string-check-structure-elimination 5.3671+-0.5176 5.2140+-0.3133 might be 1.0294x faster get-by-val-with-string-proto-or-self 15.2861+-0.6039 ? 15.2912+-0.9452 ? get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.1856+-0.1361 ? 3.2192+-0.2686 ? might be 1.0105x slower get-by-val-with-string-self-or-proto 15.0463+-0.6830 ? 15.3380+-0.6312 ? might be 1.0194x slower get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 3.0564+-0.1821 2.9965+-0.0667 might be 1.0200x faster get-by-val-with-symbol-bimorphic-check-structure-elimination 12.3433+-0.2214 12.2345+-0.0584 get-by-val-with-symbol-chain-from-try-block 5.5285+-0.1089 5.5176+-0.1024 get-by-val-with-symbol-check-structure-elimination 11.4343+-1.2463 10.9274+-0.0441 might be 1.0464x faster get-by-val-with-symbol-proto-or-self 14.9707+-1.0659 ? 15.1043+-0.3913 ? get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 3.9099+-0.1038 3.8887+-0.0672 get-by-val-with-symbol-self-or-proto 15.1580+-0.4574 15.0433+-0.6596 get_callee_monomorphic 2.1760+-0.0904 ? 2.2046+-0.1925 ? might be 1.0131x slower get_callee_polymorphic 3.4118+-0.2298 3.1697+-0.2157 might be 1.0764x faster getter-no-activation 4.7752+-0.1850 4.6045+-0.0607 might be 1.0371x faster getter-prototype 8.8917+-0.1554 ? 9.0577+-0.3627 ? might be 1.0187x slower getter-richards 120.9947+-2.6959 ? 122.5612+-3.6869 ? might be 1.0129x slower getter 5.6491+-0.5961 ? 5.6795+-0.6068 ? global-object-access-with-mutating-structure 5.5910+-0.1593 5.5138+-0.0537 might be 1.0140x faster global-var-const-infer-fire-from-opt 0.7881+-0.0105 ? 0.8290+-0.0482 ? might be 1.0518x slower global-var-const-infer 0.6005+-0.0320 ? 0.6425+-0.0793 ? might be 1.0699x slower hard-overflow-check-equal 33.5056+-0.7832 ? 34.4111+-1.4211 ? might be 1.0270x slower hard-overflow-check 33.8466+-0.8502 33.1149+-0.7903 might be 1.0221x faster HashMap-put-get-iterate-keys 25.7039+-0.8206 ? 26.4381+-2.0471 ? might be 1.0286x slower HashMap-put-get-iterate 27.0393+-2.0074 ? 28.2359+-0.9442 ? might be 1.0443x slower HashMap-string-put-get-iterate 26.6911+-5.4665 25.6192+-1.4611 might be 1.0418x faster hoist-make-rope 9.0221+-1.2041 ? 9.1301+-0.9107 ? might be 1.0120x slower hoist-poly-check-structure-effectful-loop 4.2654+-0.4186 4.0371+-0.0632 might be 1.0565x faster hoist-poly-check-structure 3.2921+-0.2250 3.2795+-0.0878 imul-double-only 7.2348+-0.2267 ? 7.4163+-0.5965 ? might be 1.0251x slower imul-int-only 9.0261+-0.4133 8.8375+-0.7348 might be 1.0213x faster imul-mixed 6.9876+-0.3542 ? 7.0445+-0.1292 ? in-four-cases 16.9824+-0.5784 ? 17.1726+-0.7333 ? might be 1.0112x slower in-one-case-false 10.0744+-0.7010 ? 10.7332+-1.1331 ? might be 1.0654x slower in-one-case-true 9.7698+-0.6614 9.4651+-0.6156 might be 1.0322x faster in-two-cases 9.7930+-0.6670 ? 10.1045+-0.4704 ? might be 1.0318x slower indexed-properties-in-objects 2.6688+-0.0576 ? 2.6911+-0.0277 ? infer-closure-const-then-mov-no-inline 2.8336+-0.0429 ? 2.8508+-0.0434 ? infer-closure-const-then-mov 18.8043+-0.6521 ? 18.9519+-1.0607 ? infer-closure-const-then-put-to-scope-no-inline 10.3857+-0.7846 9.9120+-0.2168 might be 1.0478x faster infer-closure-const-then-put-to-scope 21.4362+-0.5355 21.3803+-0.5083 infer-closure-const-then-reenter-no-inline 50.5754+-1.2301 ^ 48.1675+-0.8183 ^ definitely 1.0500x faster infer-closure-const-then-reenter 21.3747+-0.7987 ? 22.6381+-0.7574 ? might be 1.0591x slower infer-constant-global-property 3.4296+-0.1847 3.3832+-0.0454 might be 1.0137x faster infer-constant-property 2.5742+-0.0333 2.5725+-0.0697 infer-one-time-closure-ten-vars 7.9633+-0.4493 7.6648+-0.2859 might be 1.0389x faster infer-one-time-closure-two-vars 7.5497+-0.4067 7.2544+-0.1982 might be 1.0407x faster infer-one-time-closure 7.1812+-0.1719 ? 7.4365+-0.4900 ? might be 1.0356x slower infer-one-time-deep-closure 11.0851+-0.6582 10.6424+-0.3333 might be 1.0416x faster inline-arguments-access 3.4545+-0.0762 ? 3.6799+-0.2109 ? might be 1.0652x slower inline-arguments-aliased-access 3.7333+-0.1652 3.4788+-0.0935 might be 1.0731x faster inline-arguments-local-escape 3.8767+-0.3520 3.6222+-0.2397 might be 1.0703x faster inline-get-scoped-var 4.5140+-0.1349 ? 4.5684+-0.1863 ? might be 1.0121x slower inlined-put-by-id-transition 10.4773+-0.6586 10.0448+-0.4030 might be 1.0431x faster inlined-put-by-val-with-string-transition 73.9001+-3.5650 72.0616+-1.0752 might be 1.0255x faster inlined-put-by-val-with-symbol-transition 71.1769+-1.7692 70.2564+-1.5650 might be 1.0131x faster int-or-other-abs-then-get-by-val 4.7199+-0.0578 ? 4.7698+-0.1654 ? might be 1.0106x slower int-or-other-abs-zero-then-get-by-val 16.4823+-1.0342 16.3928+-0.6534 int-or-other-add-then-get-by-val 3.9773+-0.0306 3.9647+-0.1158 int-or-other-add 5.0492+-0.6637 4.7840+-0.0671 might be 1.0554x faster int-or-other-div-then-get-by-val 3.8086+-0.0860 3.7864+-0.1292 int-or-other-max-then-get-by-val 3.8836+-0.2637 3.7798+-0.1196 might be 1.0275x faster int-or-other-min-then-get-by-val 3.8796+-0.0630 ? 3.9825+-0.1966 ? might be 1.0265x slower int-or-other-mod-then-get-by-val 3.5254+-0.1028 3.5060+-0.0422 int-or-other-mul-then-get-by-val 3.5375+-0.0816 ? 3.5656+-0.0968 ? int-or-other-neg-then-get-by-val 4.4333+-0.1648 4.3682+-0.0405 might be 1.0149x faster int-or-other-neg-zero-then-get-by-val 16.1765+-0.9870 16.1153+-1.0318 int-or-other-sub-then-get-by-val 4.1050+-0.1903 3.9386+-0.0545 might be 1.0422x faster int-or-other-sub 3.3941+-0.1817 3.3645+-0.0827 int-overflow-local 4.1480+-0.0582 ? 4.3097+-0.3244 ? might be 1.0390x slower Int16Array-alloc-long-lived 47.5698+-1.2972 46.8081+-1.1704 might be 1.0163x faster Int16Array-bubble-sort-with-byteLength 18.3340+-1.2604 17.6042+-0.8244 might be 1.0415x faster Int16Array-bubble-sort 17.6725+-0.7786 17.5391+-0.5440 Int16Array-load-int-mul 1.3820+-0.0182 ? 1.4269+-0.0710 ? might be 1.0325x slower Int16Array-to-Int32Array-set 44.9193+-1.3225 43.6104+-1.2054 might be 1.0300x faster Int32Array-alloc-large 12.0658+-0.4597 11.9804+-0.4320 Int32Array-alloc-long-lived 55.9835+-1.2658 ? 56.0404+-1.1622 ? Int32Array-alloc 2.9322+-0.3100 2.8357+-0.1538 might be 1.0340x faster Int32Array-Int8Array-view-alloc 6.1364+-0.4244 5.9699+-0.3002 might be 1.0279x faster int52-spill 4.7604+-0.3340 4.4377+-0.0742 might be 1.0727x faster Int8Array-alloc-long-lived 40.3136+-0.8603 ? 41.0736+-1.5408 ? might be 1.0189x slower Int8Array-load-with-byteLength 3.4319+-0.1359 ? 3.5174+-0.2307 ? might be 1.0249x slower Int8Array-load 3.3490+-0.0409 ? 3.3685+-0.0738 ? integer-divide 10.0212+-0.1538 9.9912+-0.0790 integer-modulo 1.4974+-0.0428 ? 1.5041+-0.0648 ? is-boolean-fold-tricky 3.7498+-0.1190 ? 3.7798+-0.0892 ? is-boolean-fold 2.5579+-0.0478 ! 2.6608+-0.0461 ! definitely 1.0402x slower is-function-fold-tricky-internal-function 9.7749+-0.1353 ^ 9.4858+-0.1223 ^ definitely 1.0305x faster is-function-fold-tricky 4.1228+-0.1525 ? 4.2090+-0.1535 ? might be 1.0209x slower is-function-fold 2.6451+-0.0892 ? 2.6740+-0.1483 ? might be 1.0109x slower is-number-fold-tricky 4.1336+-0.3067 4.0310+-0.1056 might be 1.0255x faster is-number-fold 2.5708+-0.0300 2.5573+-0.0446 is-object-or-null-fold-functions 2.6231+-0.0662 2.6041+-0.0254 is-object-or-null-fold-less-tricky 4.2829+-0.5289 4.0423+-0.0492 might be 1.0595x faster is-object-or-null-fold-tricky 5.1393+-0.1241 ? 5.1607+-0.1642 ? is-object-or-null-fold 2.7434+-0.1984 2.6706+-0.1333 might be 1.0273x faster is-object-or-null-trickier-function 4.0792+-0.0781 ? 4.1448+-0.1850 ? might be 1.0161x slower is-object-or-null-trickier-internal-function 10.3335+-0.2572 ? 10.7017+-0.2552 ? might be 1.0356x slower is-object-or-null-tricky-function 4.0414+-0.1037 ? 4.1411+-0.1595 ? might be 1.0247x slower is-object-or-null-tricky-internal-function 7.8750+-0.4457 7.8108+-0.2041 is-string-fold-tricky 4.0026+-0.1606 3.9656+-0.0256 is-string-fold 2.5640+-0.0447 ? 2.5833+-0.0787 ? is-undefined-fold-tricky 3.3192+-0.1327 ? 3.4178+-0.2040 ? might be 1.0297x slower is-undefined-fold 2.6233+-0.0386 2.6038+-0.0374 JSONP-negative-0 0.2610+-0.0280 0.2534+-0.0129 might be 1.0301x faster large-int-captured 3.9407+-0.2897 3.6677+-0.0649 might be 1.0744x faster large-int-neg 13.7328+-0.1887 ? 13.7682+-0.4428 ? large-int 12.7982+-0.7093 12.2503+-0.1766 might be 1.0447x faster load-varargs-elimination 20.9674+-0.9109 20.8583+-0.7551 logical-not-weird-types 2.7074+-0.0414 2.7073+-0.0563 logical-not 4.1912+-0.0759 4.0839+-0.0681 might be 1.0263x faster lots-of-fields 9.7500+-0.3601 9.6051+-0.4588 might be 1.0151x faster make-indexed-storage 2.7122+-0.1669 ? 2.7126+-0.2162 ? make-rope-cse 3.7447+-0.2867 3.5873+-0.1270 might be 1.0439x faster marsaglia-larger-ints 31.9111+-0.7289 31.8458+-0.9551 marsaglia-osr-entry 21.5986+-0.9519 21.2733+-0.8299 might be 1.0153x faster math-with-out-of-bounds-array-values 22.6468+-0.6927 22.2170+-0.9633 might be 1.0193x faster max-boolean 2.7205+-0.1741 ? 2.7976+-0.1749 ? might be 1.0284x slower method-on-number 15.5593+-0.2606 ? 16.5821+-1.0081 ? might be 1.0657x slower min-boolean 2.5738+-0.0328 ? 2.6017+-0.1160 ? might be 1.0108x slower minus-boolean-double 3.2739+-0.6033 3.0879+-0.1073 might be 1.0602x faster minus-boolean 2.2992+-0.0700 2.2617+-0.0266 might be 1.0166x faster misc-strict-eq 28.6559+-1.1611 ? 29.2071+-1.1071 ? might be 1.0192x slower mod-boolean-double 11.2738+-0.3854 11.0689+-0.1846 might be 1.0185x faster mod-boolean 8.2922+-0.1064 ? 8.3664+-0.1548 ? mul-boolean-double 3.5704+-0.0485 ? 3.7159+-0.1421 ? might be 1.0408x slower mul-boolean 2.8695+-0.1238 2.7959+-0.0863 might be 1.0263x faster neg-boolean 3.2227+-0.3741 3.0600+-0.0433 might be 1.0532x faster negative-zero-divide 0.3456+-0.0166 0.3361+-0.0074 might be 1.0282x faster negative-zero-modulo 0.3404+-0.0097 ? 0.3455+-0.0170 ? might be 1.0151x slower negative-zero-negate 0.3423+-0.0361 0.3254+-0.0212 might be 1.0518x faster nested-function-parsing 44.9306+-0.7378 ? 46.5511+-1.0663 ? might be 1.0361x slower new-array-buffer-dead 88.3361+-1.0779 87.7802+-0.8938 new-array-buffer-push 6.1810+-0.4946 6.0363+-0.4000 might be 1.0240x faster new-array-dead 15.2165+-0.8713 ? 15.3443+-1.0570 ? new-array-push 3.4165+-0.1588 ? 3.5086+-0.1664 ? might be 1.0270x slower no-inline-constructor 30.9124+-0.4919 30.8752+-0.6936 number-test 2.8707+-0.0759 ? 2.8939+-0.1378 ? object-closure-call 4.9714+-0.3019 4.7649+-0.1434 might be 1.0433x faster object-get-own-property-symbols-on-large-array 4.1204+-0.2174 ? 4.2705+-0.1884 ? might be 1.0364x slower object-test 2.5985+-0.0356 ? 2.7511+-0.2178 ? might be 1.0587x slower obvious-sink-pathology-taken 99.6016+-1.1994 99.5434+-0.9208 obvious-sink-pathology 93.8476+-0.5055 93.4044+-0.9585 obviously-elidable-new-object 29.3661+-1.0342 28.3551+-0.4303 might be 1.0357x faster plus-boolean-arith 2.4301+-0.1188 2.3824+-0.0514 might be 1.0200x faster plus-boolean-double 3.1951+-0.1942 3.0863+-0.0408 might be 1.0353x faster plus-boolean 2.6107+-0.1783 2.4896+-0.0514 might be 1.0486x faster poly-chain-access-different-prototypes-simple 3.2236+-0.0806 ? 3.2630+-0.1264 ? might be 1.0122x slower poly-chain-access-different-prototypes 2.9226+-0.1541 2.8943+-0.1205 poly-chain-access-simpler 3.2139+-0.0644 ? 3.3181+-0.1222 ? might be 1.0324x slower poly-chain-access 3.2621+-0.0576 3.2506+-0.0699 poly-stricteq 48.3000+-1.3243 48.2075+-0.8781 polymorphic-array-call 1.2656+-0.2995 ? 1.3396+-0.2290 ? might be 1.0585x slower polymorphic-get-by-id 2.8593+-0.1257 2.8014+-0.0650 might be 1.0207x faster polymorphic-put-by-id 25.1350+-0.9576 ? 25.4116+-1.1636 ? might be 1.0110x slower polymorphic-put-by-val-with-string 25.6296+-1.0726 25.2155+-0.3187 might be 1.0164x faster polymorphic-put-by-val-with-symbol 26.1808+-1.0395 ? 26.4073+-1.4693 ? polymorphic-structure 13.1381+-0.3707 ? 13.6190+-0.8812 ? might be 1.0366x slower polyvariant-monomorphic-get-by-id 6.2665+-0.5253 ? 6.7006+-1.1876 ? might be 1.0693x slower proto-getter-access 8.3124+-0.2412 8.2133+-0.2085 might be 1.0121x faster prototype-access-with-mutating-prototype 5.6769+-0.3800 5.5255+-0.2268 might be 1.0274x faster put-by-id-replace-and-transition 8.1458+-0.5264 ? 8.2584+-1.1034 ? might be 1.0138x slower put-by-id-slightly-polymorphic 2.6482+-0.1435 2.6470+-0.1109 put-by-id 9.7928+-0.3883 9.6982+-0.5361 put-by-val-direct 0.3845+-0.0618 ? 0.3982+-0.1146 ? might be 1.0356x slower put-by-val-large-index-blank-indexing-type 5.3746+-0.3148 5.0473+-0.2698 might be 1.0649x faster put-by-val-machine-int 2.2857+-0.1080 ? 2.3072+-0.1142 ? put-by-val-with-string-replace-and-transition 10.2638+-0.5097 10.1181+-0.4648 might be 1.0144x faster put-by-val-with-string-slightly-polymorphic 2.8301+-0.0430 ? 2.8444+-0.1028 ? put-by-val-with-string 10.2091+-0.5318 ? 10.4694+-0.8198 ? might be 1.0255x slower put-by-val-with-symbol-replace-and-transition 11.5507+-0.2532 ? 11.5885+-0.6499 ? put-by-val-with-symbol-slightly-polymorphic 3.2574+-0.2940 3.0965+-0.0464 might be 1.0520x faster put-by-val-with-symbol 10.8313+-0.7692 10.4110+-0.3822 might be 1.0404x faster rare-osr-exit-on-local 14.8477+-0.4697 14.5754+-0.5404 might be 1.0187x faster register-pressure-from-osr 16.7494+-0.4680 ? 16.8634+-0.6414 ? repeat-multi-get-by-offset 20.8780+-0.5619 ? 21.4251+-0.9321 ? might be 1.0262x slower setter-prototype 7.5159+-0.0430 ! 7.9371+-0.2759 ! definitely 1.0560x slower setter 5.5669+-0.6042 5.2563+-0.3300 might be 1.0591x faster simple-activation-demo 24.5015+-0.6021 ? 24.7694+-1.1143 ? might be 1.0109x slower simple-getter-access 10.7201+-0.2322 10.6562+-0.3582 simple-poly-call-nested 8.8230+-0.4501 8.7064+-0.7425 might be 1.0134x faster simple-poly-call 1.1693+-0.0854 ? 1.2064+-0.0768 ? might be 1.0318x slower sin-boolean 18.5954+-1.3679 ? 20.4302+-1.8377 ? might be 1.0987x slower singleton-scope 52.6837+-0.8403 ? 52.9659+-0.7674 ? sink-function 10.4165+-0.6144 10.2003+-0.3316 might be 1.0212x faster sink-huge-activation 16.7293+-0.8411 16.6853+-0.6841 sinkable-new-object-dag 55.0483+-1.1016 54.9665+-1.1426 sinkable-new-object-taken 44.2879+-1.8126 ? 44.3845+-0.4512 ? sinkable-new-object 30.3952+-0.9326 30.0963+-0.5969 slow-array-profile-convergence 2.3841+-0.0836 2.3392+-0.0950 might be 1.0192x faster slow-convergence 2.2537+-0.0697 ? 2.2898+-0.1066 ? might be 1.0160x slower slow-ternaries 17.7145+-0.9793 17.3070+-0.4795 might be 1.0235x faster sorting-benchmark 16.7590+-0.9076 ? 16.8106+-0.4376 ? sparse-conditional 1.0890+-0.0247 ? 1.0944+-0.0386 ? splice-to-remove 12.0253+-0.1314 ? 12.4504+-0.5867 ? might be 1.0354x slower string-char-code-at 13.9816+-0.3134 ? 14.1931+-0.2427 ? might be 1.0151x slower string-concat-object 2.1389+-0.1075 2.0664+-0.0926 might be 1.0351x faster string-concat-pair-object 2.3579+-0.5598 2.2564+-0.2565 might be 1.0450x faster string-concat-pair-simple 9.0254+-0.2005 ? 9.2311+-0.2519 ? might be 1.0228x slower string-concat-simple 9.4737+-0.5766 9.2212+-0.2468 might be 1.0274x faster string-cons-repeat 6.4663+-0.1881 ? 6.5348+-0.2104 ? might be 1.0106x slower string-cons-tower 6.5168+-0.1667 ? 6.9007+-0.5651 ? might be 1.0589x slower string-equality 16.4184+-0.7229 ? 16.5308+-1.2035 ? string-get-by-val-big-char 6.7213+-0.4182 6.4678+-0.1167 might be 1.0392x faster string-get-by-val-out-of-bounds-insane 3.0568+-0.0694 2.9987+-0.0349 might be 1.0194x faster string-get-by-val-out-of-bounds 4.2462+-0.7582 4.0337+-0.1724 might be 1.0527x faster string-get-by-val 2.8815+-0.1007 ? 2.9979+-0.3570 ? might be 1.0404x slower string-hash 1.7902+-0.0504 ? 1.7964+-0.0533 ? string-long-ident-equality 14.9160+-0.4421 14.6138+-0.1160 might be 1.0207x faster string-out-of-bounds 10.4899+-0.7788 10.2904+-0.3766 might be 1.0194x faster string-repeat-arith 27.2992+-1.0994 27.2383+-0.6558 string-sub 54.0286+-2.0908 53.3387+-1.4644 might be 1.0129x faster string-test 2.7499+-0.0473 ? 2.8112+-0.1049 ? might be 1.0223x slower string-var-equality 29.1468+-0.8969 ? 30.0219+-1.3981 ? might be 1.0300x slower structure-hoist-over-transitions 2.3252+-0.1309 ? 2.3728+-0.1250 ? might be 1.0205x slower substring-concat-weird 35.6656+-1.0478 ? 36.2475+-0.8726 ? might be 1.0163x slower substring-concat 39.3784+-0.5236 ? 40.0609+-1.5303 ? might be 1.0173x slower substring 46.2250+-2.2693 45.4114+-1.0586 might be 1.0179x faster switch-char-constant 2.6574+-0.1299 2.5897+-0.0386 might be 1.0262x faster switch-char 6.0310+-0.9133 ? 6.0753+-1.0285 ? switch-constant 8.8509+-1.2189 7.8828+-0.5771 might be 1.1228x faster switch-string-basic-big-var 13.5812+-0.1936 ? 14.3868+-0.8297 ? might be 1.0593x slower switch-string-basic-big 13.8801+-0.2138 ? 14.2633+-0.5168 ? might be 1.0276x slower switch-string-basic-var 12.9577+-0.3684 12.8540+-0.2716 switch-string-basic 12.5769+-0.4312 12.3060+-0.2304 might be 1.0220x faster switch-string-big-length-tower-var 18.2888+-0.7924 17.6908+-0.4393 might be 1.0338x faster switch-string-length-tower-var 13.0086+-0.2104 ? 13.2680+-0.7202 ? might be 1.0199x slower switch-string-length-tower 12.0233+-0.6443 11.7844+-0.3766 might be 1.0203x faster switch-string-short 12.0448+-0.5004 11.6650+-0.1304 might be 1.0326x faster switch 11.7311+-0.6936 11.0530+-0.7046 might be 1.0614x faster tear-off-arguments-simple 2.8398+-0.1295 ? 3.0720+-0.3767 ? might be 1.0818x slower tear-off-arguments 3.8645+-0.0922 ? 4.0838+-0.2921 ? might be 1.0568x slower temporal-structure 12.0540+-0.2402 12.0521+-0.3287 to-int32-boolean 12.8553+-0.4350 12.7300+-0.1994 try-catch-get-by-val-cloned-arguments 14.1943+-0.5596 ? 14.2414+-0.5574 ? try-catch-get-by-val-direct-arguments 6.2373+-0.3026 6.1438+-0.1203 might be 1.0152x faster try-catch-get-by-val-scoped-arguments 7.6895+-0.4477 ? 7.8871+-0.6416 ? might be 1.0257x slower typed-array-get-set-by-val-profiling 27.3549+-0.7046 ? 27.6141+-0.9083 ? undefined-property-access 225.5249+-3.5263 224.6792+-2.0526 undefined-test 2.9044+-0.1212 ? 2.9174+-0.0855 ? unprofiled-licm 13.9976+-0.5937 ? 14.0229+-0.5720 ? varargs-call 12.6203+-0.4928 ? 12.7869+-0.3257 ? might be 1.0132x slower varargs-construct-inline 22.2998+-0.9935 ? 22.3860+-0.7416 ? varargs-construct 19.8271+-0.5889 ? 20.0320+-1.2403 ? might be 1.0103x slower varargs-inline 8.2479+-0.2024 ? 8.3212+-0.3149 ? varargs-strict-mode 8.8158+-0.2282 ? 8.8771+-0.3184 ? varargs 8.5624+-0.1039 ? 8.6385+-0.1630 ? weird-inlining-const-prop 2.7343+-0.3340 2.2725+-0.2129 might be 1.2032x faster <geometric> 7.8372+-0.0285 7.8117+-0.0282 might be 1.0033x faster TipOfTree ExitOK AsmBench: bigfib.cpp 454.0028+-8.3266 452.0775+-6.0062 cray.c 400.4227+-3.5026 ? 400.6133+-4.2057 ? dry.c 428.9613+-3.2866 ? 429.8392+-2.2834 ? FloatMM.c 689.2677+-3.4319 686.2321+-3.9377 gcc-loops.cpp 3441.9628+-18.9995 3436.0395+-8.5734 n-body.c 834.4776+-6.5368 827.7265+-3.2103 Quicksort.c 408.5826+-6.9697 ? 408.9957+-5.0643 ? stepanov_container.cpp 3614.3223+-23.1930 ? 3748.3386+-230.8086 ? might be 1.0371x slower Towers.c 235.1770+-3.6958 233.3141+-2.5405 <geometric> 722.4239+-4.5320 ? 723.3850+-4.4013 ? might be 1.0013x slower TipOfTree ExitOK CompressionBench: huffman 60.2182+-1.6767 59.3228+-1.0903 might be 1.0151x faster arithmetic-simple 273.7364+-2.9503 272.2260+-2.8617 arithmetic-precise 242.4689+-2.5506 ? 243.2534+-2.7532 ? arithmetic-complex-precise 247.6703+-3.4592 245.3638+-2.5876 arithmetic-precise-order-0 285.3087+-3.6112 283.3357+-3.9428 arithmetic-precise-order-1 307.5774+-5.4324 306.8859+-3.5278 arithmetic-precise-order-2 357.5638+-2.4043 356.6668+-3.4604 arithmetic-simple-order-1 329.2629+-3.4367 ? 331.5043+-5.6785 ? arithmetic-simple-order-2 387.6920+-6.6456 ? 387.7330+-3.7552 ? lz-string 320.2186+-5.2014 319.1564+-9.1053 <geometric> 257.2295+-1.0014 256.3367+-0.7973 might be 1.0035x faster TipOfTree ExitOK Geomean of preferred means: <scaled-result> 51.2886+-0.1309 ? 51.4055+-0.1627 ? might be 1.0023x slower
Filip Pizlo
Comment 17 2015-08-25 21:32:18 PDT
Created attachment 259919 [details] the patch
WebKit Commit Bot
Comment 18 2015-08-25 21:35:33 PDT
Attachment 259919 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGClobbersExitState.cpp:86: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 1 in 48 files If any of these errors are false positives, please file a bug against check-webkit-style.
Geoffrey Garen
Comment 19 2015-08-25 22:59:07 PDT
Comment on attachment 259919 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=259919&action=review r=me > Source/JavaScriptCore/dfg/DFGClobbersExitState.h:37 > +// longer exit to this node's exit origin. ...an observable effect, which means that we can no longer exit to this node's exit origin, since doing so would perform the effect a second time.
Filip Pizlo
Comment 20 2015-08-26 12:25:14 PDT
Note You need to log in before you can comment on or make changes to this bug.