| Summary: | DFG fragile frozen values are fundamentally broken | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Filip Pizlo <fpizlo> | ||||||||||||
| Component: | JavaScriptCore | Assignee: | 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, webkit-bug-importer | ||||||||||||
| Priority: | P2 | Keywords: | InRadar | ||||||||||||
| Version: | 528+ (Nightly build) | ||||||||||||||
| Hardware: | All | ||||||||||||||
| OS: | All | ||||||||||||||
| Attachments: |
|
||||||||||||||
|
Description
Filip Pizlo
2015-07-03 23:09:44 PDT
Created attachment 256137 [details]
work towards finding the issue
Created attachment 256156 [details]
more
Created attachment 256158 [details]
validation is written
It might make it easier to catch these bugs.
Created attachment 256160 [details]
more
Running tests now.
It appears that the OSR entry fragile value bug is very real. Here are the tests that fail now that I have the validation in place. Note that dead-osr-entry-value is the new test added in this patch. ** The following JSC stress test failures have been introduced: internal-js-tests.yaml/V8v7/earley.js.ftl-no-cjit-validate stress/dead-osr-entry-value.js.dfg-eager-no-cjit-validate stress/dead-osr-entry-value.js.ftl-eager-no-cjit stress/dead-osr-entry-value.js.ftl-no-cjit-no-inline-validate stress/dead-osr-entry-value.js.ftl-no-cjit-validate stress/dead-osr-entry-value.js.no-cjit-validate-phases stress/flatten-oversize-dictionary-object.js.dfg-eager-no-cjit-validate stress/flatten-oversize-dictionary-object.js.ftl-eager-no-cjit sunspider-1.0/3d-raytrace.js.dfg-eager-no-cjit-validate sunspider-1.0/3d-raytrace.js.ftl-eager-no-cjit v8-v6/v8-earley-boyer.js.dfg-eager-no-cjit-validate v8-v6/v8-earley-boyer.js.ftl-eager-no-cjit Created attachment 256165 [details]
probably done
Still need to do some perf testing.
Attachment 256165 [details] did not pass style-queue:
ERROR: Source/JavaScriptCore/ftl/FTLExitTimeObjectMaterialization.h:60: The parameter name "trackedReferences" adds no information, so it should be removed. [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:189: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:190: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/TrackedReferences.h:29: Alphabetical sorting problem. [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/StructureSet.cpp:103: Place brace on its own line for function definitions. [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:481: Multi line control clauses should use braces. [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOSREntry.cpp:47: Place brace on its own line for function definitions. [whitespace/braces] [4]
Total errors found: 7 in 48 files
If any of these errors are false positives, please file a bug against check-webkit-style.
I did two benchmark runs, and cannot find any reasons to believe that this is a regression. Which is good - I was fearing that this might screw up OSR entry. That doesn't seem to be the case. First report is below: 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 (r186271) "KillFragile" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r186271) 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 KillFragile SunSpider: 3d-cube 5.1658+-0.1139 ? 5.3016+-0.3218 ? might be 1.0263x slower 3d-morph 5.9030+-0.2500 5.7909+-0.1054 might be 1.0194x faster 3d-raytrace 6.8110+-0.4910 6.5057+-0.1764 might be 1.0469x faster access-binary-trees 2.3487+-0.0570 ? 2.4775+-0.2058 ? might be 1.0548x slower access-fannkuch 6.3613+-0.4316 6.2417+-0.1236 might be 1.0192x faster access-nbody 2.9751+-0.1781 2.8835+-0.0250 might be 1.0318x faster access-nsieve 3.4624+-0.0511 ? 3.4931+-0.1165 ? bitops-3bit-bits-in-byte 1.6587+-0.1626 1.6460+-0.0750 bitops-bits-in-byte 3.9999+-0.3375 3.7528+-0.0815 might be 1.0658x faster bitops-bitwise-and 2.1406+-0.0420 ? 2.2910+-0.1712 ? might be 1.0703x slower bitops-nsieve-bits 3.2180+-0.0167 ? 3.2709+-0.0997 ? might be 1.0164x slower controlflow-recursive 2.7410+-0.1287 ! 3.0517+-0.1751 ! definitely 1.1133x slower crypto-aes 4.7267+-0.2546 ? 4.7601+-0.2028 ? crypto-md5 2.7595+-0.0265 2.7413+-0.0654 crypto-sha1 3.7397+-0.1962 ? 3.8553+-0.2389 ? might be 1.0309x slower date-format-tofte 9.3505+-0.1944 ? 9.3905+-0.1069 ? date-format-xparb 5.4230+-0.0828 ? 5.6960+-0.2186 ? might be 1.0503x slower math-cordic 3.1071+-0.0822 3.1050+-0.0469 math-partial-sums 5.4154+-0.1905 ? 5.4918+-0.3024 ? might be 1.0141x slower math-spectral-norm 2.0257+-0.0540 ? 2.1313+-0.1027 ? might be 1.0521x slower regexp-dna 8.1180+-1.2585 ? 8.2002+-1.2945 ? might be 1.0101x slower string-base64 5.1721+-0.7790 5.0391+-0.2488 might be 1.0264x faster string-fasta 6.8041+-0.4140 ? 6.8783+-0.3566 ? might be 1.0109x slower string-tagcloud 10.3134+-0.9240 10.0135+-0.5165 might be 1.0299x faster string-unpack-code 21.0568+-0.6950 ? 21.1302+-1.4146 ? string-validate-input 5.9877+-0.3966 ? 6.3720+-0.6683 ? might be 1.0642x slower <arithmetic> 5.4148+-0.0653 ? 5.4427+-0.0627 ? might be 1.0052x slower TipOfTree KillFragile LongSpider: 3d-cube 1111.6484+-13.6909 ? 1129.0247+-47.0946 ? might be 1.0156x slower 3d-morph 1533.5403+-9.1098 1531.1944+-5.5061 3d-raytrace 706.4413+-11.4719 698.5375+-7.1135 might be 1.0113x faster access-binary-trees 1002.3462+-8.0472 ? 1006.6850+-7.2561 ? access-fannkuch 351.2570+-11.9549 ? 354.9881+-22.4554 ? might be 1.0106x slower access-nbody 590.0514+-1.4876 ? 593.0566+-5.5511 ? access-nsieve 477.3623+-6.6054 ? 479.2903+-5.3086 ? bitops-3bit-bits-in-byte 44.9222+-1.5452 ? 46.9449+-3.2299 ? might be 1.0450x slower bitops-bits-in-byte 100.3494+-1.3994 99.3380+-0.4403 might be 1.0102x faster bitops-nsieve-bits 416.6311+-3.0204 ? 418.5774+-3.8022 ? controlflow-recursive 488.8066+-9.4110 479.7889+-10.1047 might be 1.0188x faster crypto-aes 686.6007+-23.2664 679.1970+-12.6436 might be 1.0109x faster crypto-md5 522.6184+-6.5017 ? 526.4530+-9.1409 ? crypto-sha1 683.8693+-12.3408 683.5646+-13.9903 date-format-tofte 730.7314+-22.5279 ? 738.7426+-18.7207 ? might be 1.0110x slower date-format-xparb 809.8194+-52.6761 ? 837.0182+-32.2235 ? might be 1.0336x slower hash-map 188.3042+-9.2363 184.5827+-5.0380 might be 1.0202x faster math-cordic 579.0139+-5.3374 576.5954+-1.9425 math-partial-sums 515.7079+-8.9618 ? 520.8332+-19.3225 ? math-spectral-norm 568.2700+-3.3616 ? 572.2967+-4.7012 ? string-base64 407.5018+-3.8717 406.3160+-5.4002 string-fasta 419.0234+-2.7629 ? 423.2995+-8.0328 ? might be 1.0102x slower string-tagcloud 198.8052+-7.5008 198.0483+-6.8016 <geometric> 459.6168+-3.6128 ? 461.2429+-1.8889 ? might be 1.0035x slower TipOfTree KillFragile V8Spider: crypto 55.4757+-2.1297 ? 58.2491+-2.4580 ? might be 1.0500x slower deltablue 99.0967+-1.7898 ? 104.8929+-6.9563 ? might be 1.0585x slower earley-boyer 47.3778+-1.8227 ? 48.0252+-1.0096 ? might be 1.0137x slower raytrace 41.3442+-2.1605 41.2783+-3.2746 regexp 77.9365+-4.6408 75.2558+-0.6068 might be 1.0356x faster richards 79.6482+-1.5252 79.6150+-1.1204 splay 40.9108+-1.2991 ? 45.2399+-14.7671 ? might be 1.1058x slower <geometric> 59.7685+-0.7144 ? 61.1315+-3.4439 ? might be 1.0228x slower TipOfTree KillFragile Octane: encrypt 0.19593+-0.00443 ? 0.20365+-0.01297 ? might be 1.0394x slower decrypt 3.30864+-0.03806 ? 3.34438+-0.16406 ? might be 1.0108x slower deltablue x2 0.19207+-0.00697 ? 0.19449+-0.01031 ? might be 1.0126x slower earley 0.35666+-0.01644 0.34671+-0.00197 might be 1.0287x faster boyer 5.08604+-0.04222 ? 5.11047+-0.03869 ? navier-stokes x2 5.14762+-0.03507 5.12602+-0.00701 raytrace x2 1.29500+-0.03942 1.27381+-0.03536 might be 1.0166x faster richards x2 0.12778+-0.00176 0.12761+-0.00202 splay x2 0.40455+-0.00645 0.39746+-0.00481 might be 1.0178x faster regexp x2 28.89192+-0.17189 ? 29.16002+-0.11726 ? pdfjs x2 42.95033+-0.11565 ? 43.18191+-0.40655 ? mandreel x2 50.69832+-0.87303 ? 51.30054+-2.26108 ? might be 1.0119x slower gbemu x2 42.97147+-1.30845 ? 43.75604+-2.30081 ? might be 1.0183x slower closure 0.62759+-0.00376 0.62218+-0.00340 jquery 8.16884+-0.02996 ? 8.27291+-0.40614 ? might be 1.0127x slower box2d x2 11.85675+-0.07092 ? 12.03736+-0.29166 ? might be 1.0152x slower zlib x2 403.32547+-27.03232 ? 404.47605+-2.78829 ? typescript x2 830.38896+-10.70370 ? 852.90312+-83.22869 ? might be 1.0271x slower <geometric> 6.54650+-0.04089 ? 6.57834+-0.06668 ? might be 1.0049x slower TipOfTree KillFragile Kraken: ai-astar 226.346+-5.806 ? 227.788+-9.129 ? audio-beat-detection 82.928+-1.464 ? 84.818+-6.491 ? might be 1.0228x slower audio-dft 121.797+-1.339 ? 126.608+-12.643 ? might be 1.0395x slower audio-fft 70.353+-4.758 ? 71.962+-2.366 ? might be 1.0229x slower audio-oscillator 78.924+-4.560 76.828+-1.230 might be 1.0273x faster imaging-darkroom 106.470+-2.142 ? 106.901+-2.058 ? imaging-desaturate 62.327+-2.056 62.194+-2.125 imaging-gaussian-blur 109.900+-1.799 ? 113.846+-8.177 ? might be 1.0359x slower json-parse-financial 48.063+-1.867 ? 49.470+-2.333 ? might be 1.0293x slower json-stringify-tinderbox 30.298+-2.002 28.574+-0.872 might be 1.0603x faster stanford-crypto-aes 58.383+-1.224 ? 59.634+-2.747 ? might be 1.0214x slower stanford-crypto-ccm 48.788+-1.085 ? 50.880+-3.302 ? might be 1.0429x slower stanford-crypto-pbkdf2 105.286+-2.654 ? 106.570+-1.083 ? might be 1.0122x slower stanford-crypto-sha256-iterative 43.263+-2.792 41.963+-0.547 might be 1.0310x faster <arithmetic> 85.223+-0.638 ? 86.288+-1.356 ? might be 1.0125x slower TipOfTree KillFragile JSRegress: abc-forward-loop-equal 48.8656+-3.1739 47.6755+-0.7228 might be 1.0250x faster abc-postfix-backward-loop 47.5457+-1.2181 47.4857+-1.6844 abc-simple-backward-loop 46.9294+-0.7073 46.8554+-0.2443 abc-simple-forward-loop 47.5520+-1.8449 46.5876+-0.2892 might be 1.0207x faster abc-skippy-loop 33.1906+-1.8353 32.1427+-0.4142 might be 1.0326x faster abs-boolean 2.7937+-0.2470 2.6542+-0.0375 might be 1.0526x faster adapt-to-double-divide 17.0269+-0.7045 16.9888+-0.9646 aliased-arguments-getbyval 1.2569+-0.0434 ? 1.2805+-0.0458 ? might be 1.0188x slower allocate-big-object 2.8575+-0.1402 ? 2.8764+-0.2151 ? arguments-named-and-reflective 13.0465+-0.9768 12.9622+-1.4357 arguments-out-of-bounds 14.8404+-0.6232 14.7170+-0.6420 arguments-strict-mode 11.5647+-1.4900 11.3732+-0.7950 might be 1.0168x faster arguments 9.6032+-0.1141 ? 9.9503+-0.8095 ? might be 1.0361x slower arity-mismatch-inlining 0.9099+-0.0365 ? 0.9856+-0.1372 ? might be 1.0832x slower array-access-polymorphic-structure 6.6110+-0.1471 ? 7.0507+-1.1571 ? might be 1.0665x slower array-nonarray-polymorhpic-access 32.7572+-1.6663 32.5632+-1.1736 array-prototype-every 88.5128+-3.1296 87.8908+-3.8281 array-prototype-forEach 85.8632+-2.0153 85.6193+-1.1476 array-prototype-map 96.3062+-3.1659 92.9744+-1.9200 might be 1.0358x faster array-prototype-reduce 86.1436+-3.2155 83.5887+-1.3737 might be 1.0306x faster array-prototype-reduceRight 85.5524+-3.0433 81.9420+-1.3088 might be 1.0441x faster array-prototype-some 89.1138+-4.8958 87.0966+-1.8909 might be 1.0232x faster array-splice-contiguous 26.5886+-0.2765 ? 27.2762+-1.1168 ? might be 1.0259x slower array-with-double-add 4.2373+-0.0475 ? 4.3924+-0.3629 ? might be 1.0366x slower array-with-double-increment 3.3459+-0.2699 ? 3.6550+-0.7383 ? might be 1.0924x slower array-with-double-mul-add 5.3520+-0.2911 5.2235+-0.1045 might be 1.0246x faster array-with-double-sum 3.4028+-0.1822 3.3653+-0.0511 might be 1.0111x faster array-with-int32-add-sub 6.8269+-0.0398 ? 7.2637+-0.7778 ? might be 1.0640x slower array-with-int32-or-double-sum 3.4497+-0.2075 ? 3.5410+-0.2782 ? might be 1.0265x slower ArrayBuffer-DataView-alloc-large-long-lived 36.2631+-0.9472 ! 38.9834+-1.4991 ! definitely 1.0750x slower ArrayBuffer-DataView-alloc-long-lived 15.5404+-2.4266 ? 15.9283+-1.5297 ? might be 1.0250x slower ArrayBuffer-Int32Array-byteOffset 3.9292+-0.1573 3.8568+-0.1520 might be 1.0188x faster ArrayBuffer-Int8Array-alloc-large-long-lived 39.4789+-2.5846 39.0430+-1.7040 might be 1.0112x faster ArrayBuffer-Int8Array-alloc-long-lived-buffer 22.8830+-2.0659 ? 22.9473+-1.2714 ? ArrayBuffer-Int8Array-alloc-long-lived 14.1545+-1.7294 ? 14.2828+-1.3662 ? ArrayBuffer-Int8Array-alloc 11.0574+-1.2077 10.9041+-0.7418 might be 1.0141x faster asmjs_bool_bug 7.8291+-0.2369 ! 18.5383+-1.3053 ! definitely 2.3679x slower assign-custom-setter-polymorphic 3.3088+-0.1565 3.2319+-0.0622 might be 1.0238x faster assign-custom-setter 4.6873+-0.2575 4.6745+-0.1944 basic-set 9.4895+-0.2623 ? 9.6869+-0.3566 ? might be 1.0208x slower big-int-mul 4.0697+-0.0474 ? 4.0905+-0.1092 ? boolean-test 3.2308+-0.1219 ? 3.2551+-0.1345 ? branch-fold 3.9612+-0.2302 ? 4.0981+-0.1313 ? might be 1.0346x slower branch-on-string-as-boolean 20.7430+-0.4712 20.6926+-0.4615 by-val-generic 8.6214+-0.2568 8.4107+-0.0874 might be 1.0251x faster call-spread-apply 31.6786+-2.0432 31.1379+-1.4849 might be 1.0174x faster call-spread-call 25.6069+-1.0033 25.0826+-0.6862 might be 1.0209x faster captured-assignments 0.6066+-0.1897 0.5515+-0.0479 might be 1.0999x faster cast-int-to-double 5.3323+-0.0618 5.3077+-0.0244 cell-argument 8.9934+-0.6219 8.5852+-0.1996 might be 1.0475x faster cfg-simplify 2.8853+-0.1092 ? 2.8921+-0.0661 ? chain-getter-access 9.4790+-0.2785 ? 9.5269+-0.4083 ? cmpeq-obj-to-obj-other 11.7711+-0.7494 ? 12.2868+-1.2302 ? might be 1.0438x slower constant-test 5.0017+-0.0191 ? 5.0482+-0.1124 ? create-lots-of-functions 11.7094+-0.6472 11.6580+-0.6335 cse-new-array-buffer 2.5092+-0.0285 ? 2.5701+-0.1183 ? might be 1.0243x slower cse-new-array 2.6077+-0.0393 ? 2.7307+-0.2638 ? might be 1.0472x slower DataView-custom-properties 42.6788+-0.8554 ? 42.9906+-2.4471 ? delay-tear-off-arguments-strictmode 14.2223+-1.1840 13.9430+-0.5564 might be 1.0200x faster deltablue-varargs 219.2578+-11.0620 216.1359+-8.4887 might be 1.0144x faster destructuring-arguments 243.2455+-17.5824 ^ 186.1989+-4.6737 ^ definitely 1.3064x faster destructuring-parameters-overridden-by-function 0.5915+-0.0308 ? 0.6174+-0.0494 ? might be 1.0439x slower destructuring-swap 5.1321+-0.0599 ? 5.1388+-0.0897 ? direct-arguments-getbyval 1.2355+-0.0427 ? 1.2933+-0.0965 ? might be 1.0468x slower div-boolean-double 5.3106+-0.1119 5.2974+-0.0476 div-boolean 7.8267+-0.0308 ? 7.8502+-0.0912 ? double-get-by-val-out-of-bounds 4.7448+-0.0639 ^ 4.6082+-0.0530 ^ definitely 1.0297x faster double-pollution-getbyval 8.9664+-0.0965 ? 9.0214+-0.3278 ? double-pollution-putbyoffset 4.4117+-0.1700 ? 4.4287+-0.1653 ? double-real-use 31.7875+-2.0038 30.0139+-1.2591 might be 1.0591x faster double-to-int32-typed-array-no-inline 2.5334+-0.2329 ? 2.5378+-0.1284 ? double-to-int32-typed-array 1.9543+-0.0323 ? 1.9956+-0.0283 ? might be 1.0211x slower double-to-uint32-typed-array-no-inline 2.5728+-0.0882 ? 2.7020+-0.2401 ? might be 1.0502x slower double-to-uint32-typed-array 2.2045+-0.2791 2.0610+-0.1053 might be 1.0697x faster elidable-new-object-dag 43.3591+-1.8146 ? 43.3979+-1.9395 ? elidable-new-object-roflcopter 43.8473+-2.0571 43.1228+-0.6415 might be 1.0168x faster elidable-new-object-then-call 40.0031+-1.5484 39.3519+-0.9611 might be 1.0165x faster elidable-new-object-tree 46.7940+-1.5835 46.2204+-2.3917 might be 1.0124x faster empty-string-plus-int 5.6799+-0.3588 5.4617+-0.1921 might be 1.0399x faster emscripten-cube2hash 39.3350+-2.5317 38.7665+-2.3517 might be 1.0147x faster exit-length-on-plain-object 14.3972+-1.3795 13.9520+-0.4362 might be 1.0319x faster external-arguments-getbyval 1.2651+-0.0444 ? 1.4343+-0.1721 ? might be 1.1337x slower external-arguments-putbyval 2.3350+-0.0323 ! 2.4221+-0.0513 ! definitely 1.0373x slower fixed-typed-array-storage-var-index 1.2662+-0.0823 1.2157+-0.0573 might be 1.0415x faster fixed-typed-array-storage 0.9425+-0.0814 0.9006+-0.0275 might be 1.0465x faster Float32Array-matrix-mult 4.5906+-0.1292 ? 4.6967+-0.1048 ? might be 1.0231x slower Float32Array-to-Float64Array-set 56.8227+-1.9334 ^ 51.6147+-1.5963 ^ definitely 1.1009x faster Float64Array-alloc-long-lived 86.9775+-3.6954 ? 87.7484+-1.8540 ? Float64Array-to-Int16Array-set 69.6254+-1.4555 ? 69.8114+-1.7463 ? fold-double-to-int 14.2906+-1.2589 ! 22.4733+-0.5278 ! definitely 1.5726x slower fold-get-by-id-to-multi-get-by-offset-rare-int 10.7929+-1.0848 ? 11.0518+-1.2137 ? might be 1.0240x slower fold-get-by-id-to-multi-get-by-offset 10.5487+-0.8843 9.9752+-1.1051 might be 1.0575x faster fold-multi-get-by-offset-to-get-by-offset 9.2335+-0.8697 8.8104+-1.5861 might be 1.0480x faster fold-multi-get-by-offset-to-poly-get-by-offset 9.2823+-0.3638 ? 9.4632+-0.5330 ? might be 1.0195x slower fold-multi-put-by-offset-to-poly-put-by-offset 10.1414+-0.8393 ? 10.6445+-0.7129 ? might be 1.0496x slower fold-multi-put-by-offset-to-put-by-offset 8.1075+-0.3644 8.0507+-0.8025 fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 10.1613+-0.8650 9.9653+-0.6842 might be 1.0197x faster fold-put-by-id-to-multi-put-by-offset 10.7037+-1.0329 10.2995+-0.9381 might be 1.0392x faster fold-put-structure 7.6039+-0.3897 ? 7.6462+-0.5356 ? for-of-iterate-array-entries 12.9559+-1.3629 12.5558+-0.1687 might be 1.0319x faster for-of-iterate-array-keys 3.9853+-0.3665 3.8548+-0.0564 might be 1.0339x faster for-of-iterate-array-values 4.0295+-0.4059 3.9248+-0.1809 might be 1.0267x faster fround 21.0765+-0.6807 20.9597+-0.6053 ftl-library-inlining-dataview 67.8527+-4.8458 67.3314+-3.5550 ftl-library-inlining 73.9913+-18.6773 ? 74.5857+-17.0658 ? function-dot-apply 2.2917+-0.1164 ? 2.2944+-0.0723 ? function-test 2.9986+-0.1382 ? 3.0422+-0.1499 ? might be 1.0145x slower function-with-eval 104.6504+-2.6099 102.1421+-4.0751 might be 1.0246x faster gcse-poly-get-less-obvious 18.5585+-0.9065 ? 19.2482+-1.1608 ? might be 1.0372x slower gcse-poly-get 21.0581+-2.0404 20.6571+-1.9984 might be 1.0194x faster gcse 4.4058+-0.0622 ? 4.4383+-0.1571 ? get-by-id-bimorphic-check-structure-elimination-simple 2.7962+-0.1146 ? 2.8297+-0.1051 ? might be 1.0120x slower get-by-id-bimorphic-check-structure-elimination 6.0188+-0.0632 ? 6.1523+-0.3415 ? might be 1.0222x slower get-by-id-chain-from-try-block 7.0326+-1.1779 6.8705+-0.1547 might be 1.0236x faster get-by-id-check-structure-elimination 5.1882+-0.0461 5.1403+-0.0831 get-by-id-proto-or-self 19.6470+-2.7154 ? 19.9227+-2.6742 ? might be 1.0140x slower get-by-id-quadmorphic-check-structure-elimination-simple 3.0656+-0.1741 3.0421+-0.1559 get-by-id-self-or-proto 19.3027+-2.0398 18.2064+-1.8615 might be 1.0602x faster get-by-val-out-of-bounds 4.4951+-0.1098 4.4148+-0.0366 might be 1.0182x faster get_callee_monomorphic 2.9344+-0.5788 2.6504+-0.0776 might be 1.1072x faster get_callee_polymorphic 3.6644+-0.2309 ! 4.3853+-0.0827 ! definitely 1.1967x slower getter-no-activation 5.2174+-0.3309 5.1107+-0.2790 might be 1.0209x faster getter-prototype 15.0947+-0.7633 14.8254+-0.2975 might be 1.0182x faster getter-richards 125.6264+-4.4010 ? 126.5938+-11.0964 ? getter 6.2266+-0.9945 5.6010+-0.4990 might be 1.1117x faster global-var-const-infer-fire-from-opt 0.9292+-0.0315 ? 0.9463+-0.0506 ? might be 1.0183x slower global-var-const-infer 0.8698+-0.1731 ? 0.9160+-0.2495 ? might be 1.0531x slower HashMap-put-get-iterate-keys 31.3818+-1.7341 31.3200+-2.0030 HashMap-put-get-iterate 32.8168+-0.8292 31.3636+-1.9721 might be 1.0463x faster HashMap-string-put-get-iterate 32.4993+-2.6791 ? 32.7550+-1.5033 ? hoist-make-rope 13.4399+-0.9726 12.4910+-0.9916 might be 1.0760x faster hoist-poly-check-structure-effectful-loop 5.1434+-0.1413 ? 5.3437+-0.5042 ? might be 1.0390x slower hoist-poly-check-structure 3.7586+-0.0701 3.7557+-0.0624 imul-double-only 8.6942+-0.2109 8.6239+-0.7505 imul-int-only 9.9823+-0.1631 9.8886+-0.1736 imul-mixed 8.2263+-0.4108 ? 8.4532+-0.3132 ? might be 1.0276x slower in-four-cases 23.5408+-1.2967 22.7229+-0.2625 might be 1.0360x faster in-one-case-false 11.2818+-0.4317 ? 11.3230+-0.1716 ? in-one-case-true 11.1762+-0.2180 ? 11.3520+-0.2820 ? might be 1.0157x slower in-two-cases 11.4252+-0.0952 ? 11.5972+-0.4166 ? might be 1.0151x slower indexed-properties-in-objects 2.9386+-0.0367 ! 3.1696+-0.0828 ! definitely 1.0786x slower infer-closure-const-then-mov-no-inline 3.9707+-0.0162 ! 4.5913+-0.4841 ! definitely 1.1563x slower infer-closure-const-then-mov 20.0662+-0.7732 19.8011+-0.3405 might be 1.0134x faster infer-closure-const-then-put-to-scope-no-inline 13.1515+-1.0753 13.0079+-0.8154 might be 1.0110x faster infer-closure-const-then-put-to-scope 22.1228+-0.6736 21.5544+-0.5891 might be 1.0264x faster infer-closure-const-then-reenter-no-inline 56.8105+-2.5850 55.0740+-1.6806 might be 1.0315x faster infer-closure-const-then-reenter 23.0161+-1.2799 ? 23.2373+-0.2649 ? infer-constant-global-property 3.6643+-0.1860 3.5857+-0.1092 might be 1.0219x faster infer-constant-property 2.7596+-0.0866 ? 2.8103+-0.1267 ? might be 1.0184x slower infer-one-time-closure-ten-vars 12.5919+-0.2666 ? 13.0062+-0.7755 ? might be 1.0329x slower infer-one-time-closure-two-vars 12.5990+-0.7363 ? 12.8025+-0.9210 ? might be 1.0162x slower infer-one-time-closure 12.3515+-0.7743 ? 12.8923+-1.0654 ? might be 1.0438x slower infer-one-time-deep-closure 21.3260+-1.0696 ? 21.9395+-1.1716 ? might be 1.0288x slower inline-arguments-access 4.4963+-0.3298 4.3958+-0.0842 might be 1.0229x faster inline-arguments-aliased-access 4.5196+-0.3304 4.4453+-0.1837 might be 1.0167x faster inline-arguments-local-escape 4.3909+-0.1384 ? 4.4279+-0.2329 ? inline-get-scoped-var 4.8132+-0.1018 ? 4.9755+-0.2526 ? might be 1.0337x slower inlined-put-by-id-transition 11.8921+-0.7158 ? 11.9030+-0.3108 ? int-or-other-abs-then-get-by-val 5.0362+-0.0699 4.9916+-0.0100 int-or-other-abs-zero-then-get-by-val 19.1250+-1.7199 17.8445+-0.7941 might be 1.0718x faster int-or-other-add-then-get-by-val 4.4007+-0.1034 4.3542+-0.0203 might be 1.0107x faster int-or-other-add 5.4477+-0.1156 ? 5.5089+-0.2023 ? might be 1.0112x slower int-or-other-div-then-get-by-val 4.2552+-0.0369 ? 4.2854+-0.0428 ? int-or-other-max-then-get-by-val 4.3778+-0.0772 ? 4.4424+-0.2245 ? might be 1.0148x slower int-or-other-min-then-get-by-val 4.3628+-0.0421 ? 4.5683+-0.4145 ? might be 1.0471x slower int-or-other-mod-then-get-by-val 3.9526+-0.0204 ? 4.0192+-0.1063 ? might be 1.0169x slower int-or-other-mul-then-get-by-val 3.9506+-0.0356 3.9461+-0.0272 int-or-other-neg-then-get-by-val 4.9621+-0.3243 4.8850+-0.1301 might be 1.0158x faster int-or-other-neg-zero-then-get-by-val 18.4331+-0.9600 17.8401+-0.2970 might be 1.0332x faster int-or-other-sub-then-get-by-val 4.4175+-0.0284 ? 4.4535+-0.0914 ? int-or-other-sub 3.6675+-0.1194 ? 3.7567+-0.3148 ? might be 1.0243x slower int-overflow-local 4.7100+-0.3392 ? 4.7203+-0.2684 ? Int16Array-alloc-long-lived 53.0855+-1.5062 ? 54.0390+-1.1558 ? might be 1.0180x slower Int16Array-bubble-sort-with-byteLength 20.2757+-0.5137 ^ 15.8335+-0.1630 ^ definitely 1.2806x faster Int16Array-bubble-sort 20.6977+-1.5178 ^ 16.5044+-0.8800 ^ definitely 1.2541x faster Int16Array-load-int-mul 1.6093+-0.0981 1.5074+-0.0352 might be 1.0676x faster Int16Array-to-Int32Array-set 56.8641+-2.0835 53.8638+-2.7646 might be 1.0557x faster Int32Array-alloc-large 24.3234+-0.5300 24.0205+-0.3998 might be 1.0126x faster Int32Array-alloc-long-lived 64.2209+-2.0207 63.3881+-1.2789 might be 1.0131x faster Int32Array-alloc 3.4843+-0.3063 3.3528+-0.1334 might be 1.0392x faster Int32Array-Int8Array-view-alloc 6.8088+-0.7801 ? 7.0131+-0.8868 ? might be 1.0300x slower int52-spill 5.6659+-0.1405 5.6159+-0.6383 Int8Array-alloc-long-lived 48.6840+-1.4842 ? 49.4736+-2.3957 ? might be 1.0162x slower Int8Array-load-with-byteLength 3.6733+-0.3868 3.3708+-0.0459 might be 1.0898x faster Int8Array-load 3.3730+-0.0448 ? 3.4354+-0.1293 ? might be 1.0185x slower integer-divide 10.9601+-0.1536 ? 11.0705+-0.1326 ? might be 1.0101x slower integer-modulo 2.2535+-0.2249 2.1164+-0.0822 might be 1.0648x faster is-boolean-fold-tricky 4.6072+-0.2544 4.5149+-0.1948 might be 1.0205x faster is-boolean-fold 2.9569+-0.1541 2.9435+-0.1213 is-function-fold-tricky-internal-function 12.1052+-0.1060 12.0088+-0.2362 is-function-fold-tricky 4.7812+-0.3185 4.7007+-0.1172 might be 1.0171x faster is-function-fold 2.8813+-0.0530 ? 2.9418+-0.0951 ? might be 1.0210x slower is-number-fold-tricky 4.4711+-0.0508 ? 4.4825+-0.0751 ? is-number-fold 2.9513+-0.1176 2.8931+-0.1279 might be 1.0201x faster is-object-or-null-fold-functions 2.9494+-0.0630 ? 3.0299+-0.1397 ? might be 1.0273x slower is-object-or-null-fold-less-tricky 4.7859+-0.5558 4.6829+-0.3717 might be 1.0220x faster is-object-or-null-fold-tricky 6.6710+-0.1639 ? 6.8134+-0.2398 ? might be 1.0213x slower is-object-or-null-fold 2.9689+-0.1559 2.9112+-0.0392 might be 1.0198x faster is-object-or-null-trickier-function 4.5975+-0.0199 ? 4.6213+-0.0578 ? is-object-or-null-trickier-internal-function 12.5915+-0.3019 ? 12.7368+-0.1211 ? might be 1.0115x slower is-object-or-null-tricky-function 4.6618+-0.1000 ? 4.7439+-0.2329 ? might be 1.0176x slower is-object-or-null-tricky-internal-function 9.2953+-0.1329 ? 9.3736+-0.1415 ? is-string-fold-tricky 4.4848+-0.0505 ? 4.6975+-0.3056 ? might be 1.0474x slower is-string-fold 2.8922+-0.0682 ? 2.9178+-0.1238 ? is-undefined-fold-tricky 3.7618+-0.0329 ? 3.8999+-0.1929 ? might be 1.0367x slower is-undefined-fold 2.9103+-0.0932 ? 2.9685+-0.1292 ? might be 1.0200x slower large-int-captured 4.6919+-0.2234 ? 4.7647+-0.1007 ? might be 1.0155x slower large-int-neg 17.4164+-1.3340 17.2292+-1.7193 might be 1.0109x faster large-int 16.3160+-1.7241 15.0413+-0.3826 might be 1.0847x faster load-varargs-elimination 23.0845+-0.3773 ? 23.9302+-1.9131 ? might be 1.0366x slower logical-not-weird-types 3.5027+-0.1000 3.4358+-0.0371 might be 1.0195x faster logical-not 4.7383+-0.0761 4.7196+-0.1211 lots-of-fields 12.0102+-0.2783 ? 12.4755+-0.5081 ? might be 1.0387x slower make-indexed-storage 3.2052+-0.0566 3.1512+-0.0598 might be 1.0171x faster make-rope-cse 12.6359+-1.1304 ? 13.8017+-1.2327 ? might be 1.0923x slower marsaglia-larger-ints 36.5624+-0.8877 ? 36.8232+-0.8595 ? marsaglia-osr-entry 23.1437+-0.6059 ? 23.5035+-1.4732 ? might be 1.0155x slower math-with-out-of-bounds-array-values 25.2302+-0.7472 ^ 24.0509+-0.3887 ^ definitely 1.0490x faster max-boolean 2.5192+-0.0531 2.5187+-0.0458 method-on-number 18.6099+-0.2662 18.0300+-0.8806 might be 1.0322x faster min-boolean 2.5479+-0.0925 ? 2.5504+-0.0998 ? minus-boolean-double 3.2247+-0.0452 3.1755+-0.0342 might be 1.0155x faster minus-boolean 2.4399+-0.1142 2.4355+-0.2259 misc-strict-eq 38.3765+-2.0020 ? 39.9556+-3.0714 ? might be 1.0411x slower mod-boolean-double 10.9436+-0.0353 ? 11.1086+-0.1431 ? might be 1.0151x slower mod-boolean 7.8731+-0.0260 ? 7.9188+-0.0627 ? mul-boolean-double 3.7953+-0.0541 3.7323+-0.0769 might be 1.0169x faster mul-boolean 2.8971+-0.0230 ? 2.9403+-0.0525 ? might be 1.0149x slower neg-boolean 3.2299+-0.0431 ? 3.2428+-0.0467 ? negative-zero-divide 0.4176+-0.0193 0.4078+-0.0493 might be 1.0238x faster negative-zero-modulo 0.3995+-0.0307 0.3873+-0.0222 might be 1.0314x faster negative-zero-negate 0.3821+-0.0288 ? 0.3896+-0.0251 ? might be 1.0197x slower nested-function-parsing 39.6056+-1.8359 ? 41.9015+-2.5262 ? might be 1.0580x slower new-array-buffer-dead 115.6413+-1.0790 113.4774+-2.8829 might be 1.0191x faster new-array-buffer-push 7.2028+-0.9184 7.1790+-0.9169 new-array-dead 19.7540+-0.8675 19.6535+-0.4286 new-array-push 6.5706+-0.2280 ? 6.6888+-0.1152 ? might be 1.0180x slower no-inline-constructor 41.4896+-1.7647 41.4545+-1.9069 number-test 3.2260+-0.2184 3.1711+-0.1030 might be 1.0173x faster object-closure-call 6.0102+-0.6591 5.7353+-0.1013 might be 1.0479x faster object-test 2.8739+-0.0135 ? 2.8960+-0.0209 ? obvious-sink-pathology-taken 142.0662+-3.8283 ? 142.9138+-0.6500 ? obvious-sink-pathology 131.2300+-2.2354 ? 133.5909+-1.2626 ? might be 1.0180x slower obviously-elidable-new-object 34.5745+-1.6824 ? 35.0348+-2.0001 ? might be 1.0133x slower plus-boolean-arith 2.5289+-0.0479 ? 2.5947+-0.1376 ? might be 1.0260x slower plus-boolean-double 3.2545+-0.0458 ? 3.3408+-0.1658 ? might be 1.0265x slower plus-boolean 2.5442+-0.1815 2.4703+-0.0897 might be 1.0299x faster poly-chain-access-different-prototypes-simple 3.3705+-0.0668 3.3550+-0.0514 poly-chain-access-different-prototypes 2.5782+-0.0190 ? 2.6873+-0.1073 ? might be 1.0423x slower poly-chain-access-simpler 3.3444+-0.0569 3.3141+-0.0528 poly-chain-access 2.6253+-0.1403 2.5925+-0.0421 might be 1.0126x faster poly-stricteq 64.5675+-2.8903 62.7793+-2.2574 might be 1.0285x faster polymorphic-array-call 1.3654+-0.0831 ? 1.3757+-0.0418 ? polymorphic-get-by-id 3.1881+-0.0369 3.1626+-0.0377 polymorphic-put-by-id 31.1657+-2.4050 ? 33.0242+-2.9986 ? might be 1.0596x slower polymorphic-structure 15.1262+-0.6822 14.7732+-0.1844 might be 1.0239x faster polyvariant-monomorphic-get-by-id 8.6115+-0.1693 ? 8.6822+-0.2107 ? proto-getter-access 9.3233+-0.1668 9.2735+-0.1557 put-by-id-replace-and-transition 9.7245+-0.3252 ? 9.7318+-0.2561 ? put-by-id-slightly-polymorphic 2.9256+-0.1979 2.8653+-0.0381 might be 1.0210x faster put-by-id 12.7977+-0.3831 ? 12.9371+-0.6515 ? might be 1.0109x slower put-by-val-direct 0.4156+-0.0546 ? 0.4202+-0.0621 ? might be 1.0110x slower put-by-val-large-index-blank-indexing-type 12.8735+-1.4777 12.4545+-1.0238 might be 1.0336x faster put-by-val-machine-int 2.8578+-0.0510 2.8532+-0.0772 rare-osr-exit-on-local 15.1293+-0.8831 14.9592+-0.2221 might be 1.0114x faster register-pressure-from-osr 22.0940+-1.1368 21.4066+-0.1723 might be 1.0321x faster repeat-multi-get-by-offset 24.7769+-0.5270 ? 24.9869+-1.2387 ? setter-prototype 10.7756+-0.5646 10.3408+-0.2578 might be 1.0420x faster setter 6.4272+-0.6087 6.0461+-0.8105 might be 1.0630x faster simple-activation-demo 26.1675+-1.6006 25.3679+-0.0909 might be 1.0315x faster simple-getter-access 11.6413+-0.1959 ? 12.0388+-0.5057 ? might be 1.0341x slower simple-poly-call-nested 8.1929+-0.1404 ? 8.2848+-0.3160 ? might be 1.0112x slower simple-poly-call 1.3306+-0.0197 1.3275+-0.0150 sin-boolean 23.0531+-0.8890 ? 23.5378+-1.4342 ? might be 1.0210x slower singleton-scope 62.4755+-0.5823 62.3252+-0.4383 sink-function 11.9483+-0.5913 11.4709+-0.3051 might be 1.0416x faster sink-huge-activation 19.0968+-0.4666 ? 19.6622+-1.1697 ? might be 1.0296x slower sinkable-new-object-dag 69.3654+-1.6685 ? 72.2611+-3.4394 ? might be 1.0417x slower sinkable-new-object-taken 52.6157+-2.1783 ? 53.8029+-2.3903 ? might be 1.0226x slower sinkable-new-object 38.4804+-1.0714 ? 39.3876+-2.0001 ? might be 1.0236x slower slow-array-profile-convergence 3.0564+-0.3626 2.8841+-0.1559 might be 1.0597x faster slow-convergence 2.7940+-0.1046 ? 2.8886+-0.3572 ? might be 1.0338x slower slow-ternaries 21.1374+-2.2417 ? 21.9553+-3.8604 ? might be 1.0387x slower sorting-benchmark 19.4988+-1.1274 19.3558+-2.1198 sparse-conditional 1.1905+-0.0398 ? 1.2417+-0.0753 ? might be 1.0430x slower splice-to-remove 15.3677+-0.7446 15.0920+-0.1888 might be 1.0183x faster string-char-code-at 16.3259+-0.2594 16.1285+-0.1281 might be 1.0122x faster string-concat-object 2.6724+-0.3609 2.5131+-0.1035 might be 1.0634x faster string-concat-pair-object 2.4733+-0.0876 ? 2.5082+-0.1148 ? might be 1.0141x slower string-concat-pair-simple 12.5156+-1.0503 ? 12.6041+-1.0514 ? string-concat-simple 13.0330+-1.4362 12.3118+-1.0451 might be 1.0586x faster string-cons-repeat 8.6525+-0.9279 ? 8.8453+-0.9191 ? might be 1.0223x slower string-cons-tower 8.3058+-0.9019 ? 8.3438+-0.9312 ? string-equality 18.5274+-0.5978 18.0775+-0.6984 might be 1.0249x faster string-get-by-val-big-char 7.7325+-1.1912 7.2164+-0.0508 might be 1.0715x faster string-get-by-val-out-of-bounds-insane 3.7172+-0.1112 ? 3.7803+-0.0485 ? might be 1.0170x slower string-get-by-val-out-of-bounds 5.3929+-0.0322 ? 5.4357+-0.1438 ? string-get-by-val 3.4978+-0.1642 3.4891+-0.0693 string-hash 2.2407+-0.2532 2.1108+-0.0609 might be 1.0615x faster string-long-ident-equality 15.0696+-0.2651 14.9672+-0.1593 string-out-of-bounds 15.2966+-0.8476 14.9972+-0.2842 might be 1.0200x faster string-repeat-arith 33.6455+-1.8277 ? 36.1458+-1.6684 ? might be 1.0743x slower string-sub 65.9492+-3.3752 ? 69.6652+-5.1862 ? might be 1.0563x slower string-test 3.0201+-0.0676 3.0023+-0.0536 string-var-equality 35.1777+-1.2960 ? 35.5000+-1.6534 ? structure-hoist-over-transitions 2.8464+-0.3144 2.7013+-0.1285 might be 1.0537x faster substring-concat-weird 42.1429+-1.5862 ? 42.3613+-1.2920 ? substring-concat 44.4506+-0.6594 ? 45.2700+-1.7799 ? might be 1.0184x slower substring 50.9342+-1.9239 48.7130+-0.9766 might be 1.0456x faster switch-char-constant 2.8702+-0.2039 2.8126+-0.0924 might be 1.0205x faster switch-char 7.1647+-0.9895 6.8535+-0.7762 might be 1.0454x faster switch-constant 8.0011+-0.1447 ? 8.2594+-0.2242 ? might be 1.0323x slower switch-string-basic-big-var 18.5733+-0.4846 ? 18.7262+-0.7000 ? switch-string-basic-big 15.1267+-0.2544 14.8735+-0.1081 might be 1.0170x faster switch-string-basic-var 15.2437+-0.5006 ? 15.2782+-0.4442 ? switch-string-basic 13.8925+-0.2909 ? 14.0035+-0.3449 ? switch-string-big-length-tower-var 22.0644+-4.4160 20.6120+-0.2261 might be 1.0705x faster switch-string-length-tower-var 16.2492+-1.6432 15.7633+-0.3332 might be 1.0308x faster switch-string-length-tower 13.7802+-1.1728 13.1676+-0.1901 might be 1.0465x faster switch-string-short 13.4786+-1.0207 13.1995+-0.2405 might be 1.0211x faster switch 11.9593+-0.1626 ! 12.3039+-0.1797 ! definitely 1.0288x slower tear-off-arguments-simple 3.5521+-0.3023 3.4054+-0.0293 might be 1.0431x faster tear-off-arguments 4.6705+-0.1952 4.6121+-0.0720 might be 1.0126x faster temporal-structure 12.2968+-0.2986 ? 12.3464+-0.1411 ? to-int32-boolean 14.3273+-1.0445 14.3192+-0.2811 try-catch-get-by-val-cloned-arguments 14.2920+-0.2109 ! 14.9113+-0.2812 ! definitely 1.0433x slower try-catch-get-by-val-direct-arguments 6.4448+-0.1721 ? 6.8330+-0.9406 ? might be 1.0602x slower try-catch-get-by-val-scoped-arguments 8.6464+-1.3469 7.6858+-0.6264 might be 1.1250x faster typed-array-get-set-by-val-profiling 28.5802+-0.7759 27.8738+-0.6227 might be 1.0253x faster undefined-property-access 348.4008+-14.9946 346.1859+-4.6793 undefined-test 3.1840+-0.1294 3.1286+-0.0957 might be 1.0177x faster unprofiled-licm 22.7118+-0.1355 ? 23.3580+-0.8449 ? might be 1.0285x slower varargs-call 15.2708+-0.8350 ? 15.3372+-0.8999 ? varargs-construct-inline 28.5618+-1.2666 28.1510+-1.4714 might be 1.0146x faster varargs-construct 22.2691+-0.6037 ? 22.4684+-0.3555 ? varargs-inline 9.4354+-0.1684 ? 9.7201+-0.7012 ? might be 1.0302x slower varargs-strict-mode 10.3371+-0.3616 10.1779+-0.1281 might be 1.0156x faster varargs 10.1707+-0.3064 10.0124+-0.0636 might be 1.0158x faster weird-inlining-const-prop 3.2585+-0.1974 3.2266+-0.1422 <geometric> 9.1972+-0.0262 ? 9.1992+-0.0484 ? might be 1.0002x slower TipOfTree KillFragile AsmBench: bigfib.cpp 503.1381+-1.9663 503.0874+-1.8400 cray.c 434.1497+-6.7057 432.7891+-3.5702 dry.c 497.1062+-24.3499 484.9703+-7.7320 might be 1.0250x faster FloatMM.c 722.3258+-1.1890 ? 722.7931+-2.9430 ? gcc-loops.cpp 4100.3635+-10.6698 ? 4107.5069+-19.2818 ? n-body.c 975.2502+-6.9370 975.1615+-4.3094 Quicksort.c 424.3606+-5.9779 ? 425.5798+-8.5908 ? stepanov_container.cpp 3630.8795+-47.4893 ? 3905.0840+-788.0100 ? might be 1.0755x slower Towers.c 258.9187+-5.4771 256.1815+-0.3897 might be 1.0107x faster <geometric> 793.6923+-5.5677 ? 796.2095+-15.3297 ? might be 1.0032x slower TipOfTree KillFragile CompressionBench: huffman 256.2840+-2.5448 254.4128+-4.0414 arithmetic-simple 339.6688+-4.6325 336.7405+-3.1863 arithmetic-precise 280.3256+-8.5690 ? 284.9015+-13.2448 ? might be 1.0163x slower arithmetic-complex-precise 274.5852+-1.6576 ? 277.4342+-3.3463 ? might be 1.0104x slower arithmetic-precise-order-0 347.9025+-4.5894 346.2756+-3.9645 arithmetic-precise-order-1 334.8490+-13.0501 ? 337.6881+-18.4019 ? arithmetic-precise-order-2 368.3077+-6.3634 ? 378.2010+-29.0458 ? might be 1.0269x slower arithmetic-simple-order-1 398.8512+-6.0499 ? 401.0932+-2.3577 ? arithmetic-simple-order-2 452.5039+-23.8773 ? 467.1750+-30.7293 ? might be 1.0324x slower lz-string 349.5501+-27.4781 334.9349+-55.5408 might be 1.0436x faster <geometric> 335.5017+-4.9465 ? 336.4103+-8.6828 ? might be 1.0027x slower TipOfTree KillFragile Geomean of preferred means: <scaled-result> 61.4454+-0.1858 ? 61.8571+-0.6300 ? might be 1.0067x slower And the second report. The "maybe slower" results on SunSpider, Octane, and Kraken scared me so I ran those for more samples. It doesn't seem to be a real slow-down. Benchmark report for SunSpider, Octane, and Kraken on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r186271) "KillFragile" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r186271) Collected 10 samples per benchmark/VM, with 10 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 KillFragile SunSpider: 3d-cube 5.1293+-0.0442 ? 5.2465+-0.1316 ? might be 1.0228x slower 3d-morph 5.7951+-0.1085 5.7557+-0.0958 3d-raytrace 6.4439+-0.0407 ? 6.4597+-0.0772 ? access-binary-trees 2.4223+-0.0786 2.3714+-0.0344 might be 1.0215x faster access-fannkuch 6.1557+-0.0517 ? 6.1691+-0.0474 ? access-nbody 2.9227+-0.0792 ? 2.9714+-0.1578 ? might be 1.0167x slower access-nsieve 3.4820+-0.0585 3.4099+-0.0321 might be 1.0211x faster bitops-3bit-bits-in-byte 1.6385+-0.0484 1.6215+-0.0379 might be 1.0104x faster bitops-bits-in-byte 3.8623+-0.1720 3.7648+-0.1152 might be 1.0259x faster bitops-bitwise-and 2.1984+-0.0722 2.1878+-0.0657 bitops-nsieve-bits 3.3171+-0.1228 3.2506+-0.0244 might be 1.0205x faster controlflow-recursive 2.9163+-0.1943 ? 2.9672+-0.0932 ? might be 1.0174x slower crypto-aes 4.5993+-0.1610 ? 4.6437+-0.1389 ? crypto-md5 2.7903+-0.0624 2.7326+-0.0574 might be 1.0211x faster crypto-sha1 3.8042+-0.1603 ? 3.9509+-0.2498 ? might be 1.0386x slower date-format-tofte 9.3351+-0.1104 ? 9.3712+-0.0750 ? date-format-xparb 5.5909+-0.1190 ? 5.6083+-0.0934 ? math-cordic 3.0812+-0.0445 ? 3.1395+-0.0605 ? might be 1.0189x slower math-partial-sums 5.5950+-0.4002 5.4566+-0.1468 might be 1.0254x faster math-spectral-norm 2.0889+-0.0652 ? 2.1359+-0.0836 ? might be 1.0225x slower regexp-dna 7.7418+-0.4260 ? 7.8222+-0.5664 ? might be 1.0104x slower string-base64 5.2304+-0.4408 ? 5.3036+-0.4575 ? might be 1.0140x slower string-fasta 6.7334+-0.0883 6.6701+-0.0430 string-tagcloud 10.2324+-0.4026 ? 10.4727+-0.4453 ? might be 1.0235x slower string-unpack-code 20.7005+-0.5495 ? 21.0774+-0.9380 ? might be 1.0182x slower string-validate-input 5.8569+-0.0840 ! 6.0503+-0.0925 ! definitely 1.0330x slower <arithmetic> 5.3717+-0.0415 ? 5.4081+-0.0586 ? might be 1.0068x slower TipOfTree KillFragile Octane: encrypt 0.19896+-0.00378 0.19717+-0.00218 decrypt 3.29929+-0.01251 ? 3.31996+-0.03442 ? deltablue x2 0.18825+-0.00115 ? 0.18925+-0.00104 ? earley 0.35339+-0.01600 0.34733+-0.00190 might be 1.0174x faster boyer 5.10765+-0.02175 ? 5.15394+-0.14331 ? navier-stokes x2 5.14554+-0.01582 5.14547+-0.02716 raytrace x2 1.29973+-0.03262 ? 1.30358+-0.02636 ? richards x2 0.12794+-0.00127 ? 0.12863+-0.00123 ? splay x2 0.40407+-0.00270 ^ 0.39805+-0.00174 ^ definitely 1.0151x faster regexp x2 29.01224+-0.18441 ! 29.50007+-0.29002 ! definitely 1.0168x slower pdfjs x2 43.40926+-0.29495 43.12008+-0.33860 mandreel x2 50.55601+-0.22013 ? 50.78135+-0.14937 ? gbemu x2 43.60232+-1.74862 43.07001+-1.49889 might be 1.0124x faster closure 0.63105+-0.00419 ^ 0.62312+-0.00365 ^ definitely 1.0127x faster jquery 8.14471+-0.06003 8.07440+-0.07629 box2d x2 11.92097+-0.03301 11.87842+-0.06024 zlib x2 405.13209+-2.40868 400.24526+-8.69643 might be 1.0122x faster typescript x2 820.05754+-9.74306 ? 830.07786+-8.68243 ? might be 1.0122x slower <geometric> 6.55202+-0.02877 6.54404+-0.02757 might be 1.0012x faster TipOfTree KillFragile Kraken: ai-astar 224.504+-3.281 ? 225.628+-2.848 ? audio-beat-detection 83.596+-0.915 82.752+-0.976 might be 1.0102x faster audio-dft 121.407+-3.316 120.299+-2.357 audio-fft 70.585+-1.219 70.039+-2.274 audio-oscillator 77.222+-1.221 ? 78.095+-1.136 ? might be 1.0113x slower imaging-darkroom 106.485+-1.919 105.591+-1.560 imaging-desaturate 61.390+-0.907 ? 62.295+-1.916 ? might be 1.0147x slower imaging-gaussian-blur 109.364+-1.520 ? 110.620+-2.804 ? might be 1.0115x slower json-parse-financial 48.934+-1.483 ? 49.555+-1.825 ? might be 1.0127x slower json-stringify-tinderbox 29.925+-1.187 29.185+-1.148 might be 1.0254x faster stanford-crypto-aes 59.159+-1.897 58.974+-0.538 stanford-crypto-ccm 49.101+-0.873 ? 50.762+-2.074 ? might be 1.0338x slower stanford-crypto-pbkdf2 105.320+-0.966 ! 108.326+-1.856 ! definitely 1.0285x slower stanford-crypto-sha256-iterative 42.899+-1.254 42.317+-1.269 might be 1.0137x faster <arithmetic> 84.992+-0.691 ? 85.317+-0.613 ? might be 1.0038x slower TipOfTree KillFragile Geomean of preferred means: <scaled-result> 14.4082+-0.0639 ? 14.4531+-0.0731 ? might be 1.0031x slower Comment on attachment 256165 [details] probably done View in context: https://bugs.webkit.org/attachment.cgi?id=256165&action=review r=me with fixes. > Source/JavaScriptCore/ChangeLog:16 > + found at least one case where the compiler did use the value, but never strengthene typo: strengthene ==> strengthened > Source/JavaScriptCore/ChangeLog:47 > + inside the loop, which is both efficient (yay constant folding!) and necesary typo: necesary ==> necessary > Source/JavaScriptCore/dfg/DFGFrozenValue.h:94 > + // The strength of the value itself. The structure is almost always weak. By "The structure is almost always weak”, did you mean "The strength is almost always weak”? > Source/JavaScriptCore/dfg/DFGValidate.cpp:257 > + case JSConstant: > + VALIDATE((node), !node->constant()->pointsToHeap() || node->constant()->strength() >= WeakValue); > + break; Is this still meaningful? All DFGValueStrength values are >= WeakValue. (In reply to comment #10) > Comment on attachment 256165 [details] > probably done > > View in context: > https://bugs.webkit.org/attachment.cgi?id=256165&action=review > > r=me with fixes. > > > Source/JavaScriptCore/ChangeLog:16 > > + found at least one case where the compiler did use the value, but never strengthene > > typo: strengthene ==> strengthened Fixed. > > > Source/JavaScriptCore/ChangeLog:47 > > + inside the loop, which is both efficient (yay constant folding!) and necesary > > typo: necesary ==> necessary Fixed. > > > Source/JavaScriptCore/dfg/DFGFrozenValue.h:94 > > + // The strength of the value itself. The structure is almost always weak. > > By "The structure is almost always weak”, did you mean "The strength is > almost always weak”? No, I meant structure. A frozen value is a tuple that contains the value itself and the value's structure. The strength() method returns the strength of the value itself. The structure, on the other hand, has a strength that is selected by a different mechanism, and it's almost always weak. > > > Source/JavaScriptCore/dfg/DFGValidate.cpp:257 > > + case JSConstant: > > + VALIDATE((node), !node->constant()->pointsToHeap() || node->constant()->strength() >= WeakValue); > > + break; > > Is this still meaningful? All DFGValueStrength values are >= WeakValue. Nope, not meaningful. I removed it. Landed in http://trac.webkit.org/changeset/186691 |