RESOLVED FIXED 148338
DFG string concatenation shouldn't be playing fast and loose with effects and OSR exit
https://bugs.webkit.org/show_bug.cgi?id=148338
Summary DFG string concatenation shouldn't be playing fast and loose with effects and...
Filip Pizlo
Reported 2015-08-21 15:51:22 PDT
DFG string concatenation appears to have various different ways of creating an OSR exit right after a side effect. We should change this code so that it is only speculative when it isn't effectful. It also happens to be the case that if string concat needs to be effectful, then it will already be sufficiently slow that making it speculative won't help anyone. So, this kind of clean-up is likely to not affect performance; it'll just make the compiler easier to hack on.
Attachments
it's a start (16.32 KB, patch)
2015-08-21 17:56 PDT, Filip Pizlo
no flags
the patch (29.83 KB, patch)
2015-08-21 18:50 PDT, Filip Pizlo
saam: review+
Filip Pizlo
Comment 1 2015-08-21 15:53:40 PDT
Proposal: - ByteCodeParser uses a new node called StrCat that takes two or three arguments, and is basically a MakeRope with ToString rolled together. - FixupPhase simplifies ValueAdd to MakeRope only if we can speculate that the inputs are strings. - FixupPhase simplifies StrCat the same way it does for ValueAdd.
Filip Pizlo
Comment 2 2015-08-21 17:56:47 PDT
Created attachment 259692 [details] it's a start
Filip Pizlo
Comment 3 2015-08-21 18:50:56 PDT
Created attachment 259694 [details] the patch Not marking r? yet because I still have to run benchmarks.
WebKit Commit Bot
Comment 4 2015-08-21 18:53:33 PDT
Attachment 259694 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1518: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1534: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 2 in 20 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 5 2015-08-21 19:47:59 PDT
Performance is fine: 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 (r188811) "StrCat" at /Volumes/Data/quartary/OpenSource/WebKitBuild/Release/jsc (r188811) 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 StrCat SunSpider: 3d-cube 4.8229+-0.3247 4.7261+-0.3395 might be 1.0205x faster 3d-morph 5.0405+-0.1254 ? 5.2170+-0.1804 ? might be 1.0350x slower 3d-raytrace 5.0033+-0.0440 ? 5.0537+-0.2218 ? might be 1.0101x slower access-binary-trees 2.0113+-0.0671 1.9677+-0.1082 might be 1.0222x faster access-fannkuch 5.3965+-0.1412 ? 5.4118+-0.2427 ? access-nbody 2.6635+-0.3231 2.4920+-0.2761 might be 1.0688x faster access-nsieve 3.0727+-0.1571 2.9906+-0.0469 might be 1.0275x faster bitops-3bit-bits-in-byte 1.4651+-0.0836 ? 1.4746+-0.0878 ? bitops-bits-in-byte 3.2533+-0.1042 3.2392+-0.0936 bitops-bitwise-and 1.9588+-0.0305 1.9260+-0.0132 might be 1.0170x faster bitops-nsieve-bits 2.9641+-0.0912 ? 3.2153+-0.6424 ? might be 1.0848x slower controlflow-recursive 2.0926+-0.1979 1.9499+-0.0701 might be 1.0732x faster crypto-aes 3.6925+-0.0300 ? 3.8437+-0.1519 ? might be 1.0409x slower crypto-md5 2.3192+-0.1594 ? 2.4199+-0.3883 ? might be 1.0434x slower crypto-sha1 2.4645+-0.2638 2.4046+-0.2646 might be 1.0249x faster date-format-tofte 6.7955+-0.5335 6.5446+-0.2061 might be 1.0383x faster date-format-xparb 4.4253+-0.1625 ? 4.6008+-0.3069 ? might be 1.0397x slower math-cordic 2.8286+-0.1659 2.6998+-0.0526 might be 1.0477x faster math-partial-sums 5.0907+-0.2213 4.9831+-0.0949 might be 1.0216x faster math-spectral-norm 1.7413+-0.0237 ? 1.7444+-0.0651 ? regexp-dna 6.6188+-0.3263 ? 6.6566+-0.4232 ? string-base64 4.8567+-1.1255 4.2737+-0.1087 might be 1.1364x faster string-fasta 6.0499+-0.3264 5.8356+-0.3056 might be 1.0367x faster string-tagcloud 7.8009+-0.4097 ? 7.8285+-0.2646 ? string-unpack-code 18.9248+-0.8256 18.7430+-0.5036 string-validate-input 4.5129+-0.1626 4.5065+-0.1360 <arithmetic> 4.5333+-0.0437 4.4903+-0.0381 might be 1.0096x faster TipOfTree StrCat LongSpider: 3d-cube 801.3519+-6.9271 798.7902+-11.3417 3d-morph 1498.2163+-11.8925 1494.8267+-6.9537 3d-raytrace 605.6156+-18.0632 598.9443+-3.1865 might be 1.0111x faster access-binary-trees 793.9444+-4.5666 ? 794.1231+-8.7404 ? access-fannkuch 280.6371+-7.6342 ? 281.1981+-6.1448 ? access-nbody 514.0720+-3.4278 ? 514.6780+-4.9865 ? access-nsieve 363.0103+-10.7253 ? 367.0928+-11.8301 ? might be 1.0112x slower bitops-3bit-bits-in-byte 39.1975+-1.8050 38.5505+-1.1168 might be 1.0168x faster bitops-bits-in-byte 76.4239+-1.7928 76.0188+-1.6294 bitops-nsieve-bits 406.3780+-2.9944 404.6351+-7.1489 controlflow-recursive 443.2008+-5.2312 437.3526+-5.9566 might be 1.0134x faster crypto-aes 567.8957+-7.1787 ? 568.0831+-7.0665 ? crypto-md5 485.5027+-23.0029 ? 494.7652+-7.6763 ? might be 1.0191x slower crypto-sha1 623.7245+-7.9552 ? 632.9822+-10.8374 ? might be 1.0148x slower date-format-tofte 507.7560+-10.1046 500.2855+-9.0152 might be 1.0149x faster date-format-xparb 618.2691+-5.5785 ! 665.5340+-6.1935 ! definitely 1.0764x slower hash-map 155.1628+-1.4372 153.0116+-0.8541 might be 1.0141x faster math-cordic 484.8735+-1.8192 ? 489.9809+-10.3342 ? might be 1.0105x slower math-partial-sums 462.8330+-1.8755 ? 467.3193+-4.9677 ? math-spectral-norm 548.4941+-3.4072 ? 556.5191+-10.3996 ? might be 1.0146x slower string-base64 350.5227+-5.0660 ? 351.1612+-7.0415 ? string-fasta 366.9147+-5.7366 365.1158+-7.7914 string-tagcloud 175.5753+-2.1044 ? 176.3488+-1.8162 ? <geometric> 389.3394+-1.2888 ? 390.6055+-1.5563 ? might be 1.0033x slower TipOfTree StrCat V8Spider: crypto 47.7636+-1.5085 ? 49.8260+-1.3022 ? might be 1.0432x slower deltablue 84.5017+-4.3584 ? 86.9629+-3.7174 ? might be 1.0291x slower earley-boyer 39.8567+-0.9469 39.1756+-0.9359 might be 1.0174x faster raytrace 31.4919+-2.2552 31.1890+-1.0818 regexp 61.6669+-1.1145 ? 62.8699+-1.9515 ? might be 1.0195x slower richards 65.5516+-1.4109 ? 65.9757+-0.6426 ? splay 36.2523+-2.0906 ? 36.8449+-1.8684 ? might be 1.0163x slower <geometric> 49.6028+-1.1518 ? 50.2279+-0.7055 ? might be 1.0126x slower TipOfTree StrCat Octane: encrypt 0.16856+-0.00600 ? 0.16993+-0.00181 ? decrypt 3.30153+-0.05009 3.27973+-0.02540 deltablue x2 0.15401+-0.00145 ! 0.15818+-0.00131 ! definitely 1.0271x slower earley 0.27642+-0.00200 0.27529+-0.00201 boyer 4.16719+-0.02811 4.14330+-0.04613 navier-stokes x2 4.97781+-0.29689 4.86957+-0.02779 might be 1.0222x faster raytrace x2 1.05439+-0.06365 0.98101+-0.03183 might be 1.0748x faster richards x2 0.10940+-0.00157 0.10865+-0.00079 splay x2 0.32972+-0.00227 ? 0.33051+-0.00235 ? regexp x2 24.66087+-0.37094 24.56550+-0.17747 pdfjs x2 36.70991+-0.50439 ? 36.93184+-0.26231 ? mandreel x2 44.06865+-0.55693 43.73296+-0.37088 gbemu x2 33.81755+-0.34382 ? 34.29419+-1.39406 ? might be 1.0141x slower closure 0.56091+-0.00220 ? 0.56108+-0.00471 ? jquery 7.07405+-0.03798 ? 7.11095+-0.05743 ? box2d x2 9.96104+-0.08433 ? 10.43497+-1.23471 ? might be 1.0476x slower zlib x2 381.88336+-13.14289 380.39107+-15.03474 typescript x2 646.49648+-11.26071 645.09225+-7.89991 <geometric> 5.56861+-0.03467 5.55839+-0.04587 might be 1.0018x faster TipOfTree StrCat Kraken: ai-astar 227.358+-8.187 221.642+-3.848 might be 1.0258x faster audio-beat-detection 50.820+-0.290 50.446+-0.383 audio-dft 96.478+-2.095 ? 96.659+-2.052 ? audio-fft 34.758+-0.306 ? 34.901+-0.409 ? audio-oscillator 59.756+-0.845 ? 60.922+-2.320 ? might be 1.0195x slower imaging-darkroom 60.752+-0.123 ? 61.458+-1.007 ? might be 1.0116x slower imaging-desaturate 50.225+-2.461 ? 50.458+-3.240 ? imaging-gaussian-blur 83.985+-1.637 83.835+-1.060 json-parse-financial 37.484+-0.652 ? 37.654+-0.986 ? json-stringify-tinderbox 22.602+-0.763 ? 22.906+-1.331 ? might be 1.0134x slower stanford-crypto-aes 41.338+-1.480 41.025+-0.952 stanford-crypto-ccm 34.734+-1.357 ? 34.793+-1.719 ? stanford-crypto-pbkdf2 93.886+-1.088 ? 94.258+-1.493 ? stanford-crypto-sha256-iterative 36.000+-0.789 ? 36.209+-0.865 ? <arithmetic> 66.441+-0.522 66.226+-0.400 might be 1.0032x faster TipOfTree StrCat JSRegress: abc-forward-loop-equal 31.1456+-1.4073 30.4296+-0.3846 might be 1.0235x faster abc-postfix-backward-loop 29.9684+-1.1729 ? 30.3571+-0.6869 ? might be 1.0130x slower abc-simple-backward-loop 29.4809+-0.7306 ? 29.8360+-0.9788 ? might be 1.0120x slower abc-simple-forward-loop 30.0459+-1.1628 29.9501+-0.7662 abc-skippy-loop 21.7065+-1.0456 21.2913+-0.3694 might be 1.0195x faster abs-boolean 2.4337+-0.0584 ? 2.5656+-0.2636 ? might be 1.0542x slower adapt-to-double-divide 16.4878+-0.8791 16.1938+-0.3396 might be 1.0182x faster aliased-arguments-getbyval 1.1704+-0.0434 ? 1.1707+-0.0424 ? allocate-big-object 2.4617+-0.1206 ? 2.9181+-1.0364 ? might be 1.1854x slower arguments-named-and-reflective 11.3366+-0.4559 10.9323+-0.2212 might be 1.0370x faster arguments-out-of-bounds 9.1195+-0.2300 9.0666+-0.2590 arguments-strict-mode 10.1922+-0.2730 9.9007+-0.2057 might be 1.0294x faster arguments 8.6848+-0.1860 8.6184+-0.1084 arity-mismatch-inlining 0.7778+-0.0268 ? 0.7896+-0.0334 ? might be 1.0151x slower array-access-polymorphic-structure 5.8145+-0.2538 ? 5.8689+-0.1942 ? array-nonarray-polymorhpic-access 24.5954+-0.2835 24.5492+-0.5157 array-prototype-every 76.5537+-1.6512 ? 77.5238+-1.1578 ? might be 1.0127x slower array-prototype-forEach 77.5141+-3.3151 75.9677+-1.7970 might be 1.0204x faster array-prototype-map 80.8135+-0.7237 ? 86.6966+-8.9413 ? might be 1.0728x slower array-prototype-reduce 73.3315+-1.3747 72.9891+-1.9002 array-prototype-reduceRight 72.4801+-1.3334 ? 73.6562+-3.5670 ? might be 1.0162x slower array-prototype-some 76.0469+-1.0196 ? 76.9526+-1.6458 ? might be 1.0119x slower array-splice-contiguous 21.3071+-0.7037 20.2920+-1.0941 might be 1.0500x faster array-with-double-add 3.9956+-0.0962 ? 4.0420+-0.1368 ? might be 1.0116x slower array-with-double-increment 3.0188+-0.0305 ? 3.0873+-0.1024 ? might be 1.0227x slower array-with-double-mul-add 5.0347+-0.1066 ? 5.1806+-0.2030 ? might be 1.0290x slower array-with-double-sum 3.2137+-0.0976 3.1686+-0.1208 might be 1.0142x faster array-with-int32-add-sub 7.6219+-0.2412 ? 7.7368+-0.3901 ? might be 1.0151x slower array-with-int32-or-double-sum 3.3596+-0.0596 ? 3.4121+-0.0855 ? might be 1.0156x slower ArrayBuffer-DataView-alloc-large-long-lived 25.3177+-0.5026 ? 26.1742+-0.9101 ? might be 1.0338x slower ArrayBuffer-DataView-alloc-long-lived 11.7720+-0.5511 ? 11.7806+-0.6288 ? ArrayBuffer-Int32Array-byteOffset 3.6647+-0.1069 3.5748+-0.0826 might be 1.0252x faster ArrayBuffer-Int8Array-alloc-large-long-lived 30.0504+-0.5769 ? 30.6883+-1.3370 ? might be 1.0212x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 20.1507+-0.4191 ? 20.7614+-0.9561 ? might be 1.0303x slower ArrayBuffer-Int8Array-alloc-long-lived 12.8059+-0.7278 12.5412+-0.7450 might be 1.0211x faster ArrayBuffer-Int8Array-alloc 9.3755+-0.3654 ? 9.7997+-0.4810 ? might be 1.0452x slower arrowfunction-call 10.7135+-0.2454 10.5185+-0.1472 might be 1.0185x faster asmjs_bool_bug 6.9057+-0.1906 6.8679+-0.1709 assign-custom-setter-polymorphic 2.6230+-0.7529 2.3449+-0.0510 might be 1.1186x faster assign-custom-setter 3.2358+-0.1125 3.1331+-0.0642 might be 1.0328x faster basic-set 8.4282+-0.6542 ? 8.5470+-0.4325 ? might be 1.0141x slower big-int-mul 3.6063+-0.3060 3.4231+-0.0727 might be 1.0535x faster boolean-test 2.9189+-0.0476 ? 2.9856+-0.1509 ? might be 1.0228x slower branch-fold 3.5399+-0.0553 ? 3.8179+-0.5844 ? might be 1.0785x slower branch-on-string-as-boolean 16.8358+-0.4432 ? 16.9982+-0.7382 ? by-val-generic 2.3459+-0.0975 ? 2.3655+-0.1769 ? call-spread-apply 27.2581+-2.4959 26.0660+-0.8431 might be 1.0457x faster call-spread-call 21.3594+-0.6888 ? 21.3614+-1.0236 ? captured-assignments 0.4657+-0.0313 ^ 0.4204+-0.0081 ^ definitely 1.1076x faster cast-int-to-double 5.0370+-0.0941 ? 5.5158+-1.4485 ? might be 1.0951x slower cell-argument 6.5626+-0.3597 6.4824+-0.3332 might be 1.0124x faster cfg-simplify 2.6609+-0.0905 ? 2.7738+-0.2334 ? might be 1.0424x slower chain-getter-access 8.2312+-0.1675 ? 8.3123+-0.1646 ? cmpeq-obj-to-obj-other 11.6687+-1.0878 ? 12.0208+-0.6587 ? might be 1.0302x slower constant-test 4.7275+-0.0325 4.7274+-0.0886 create-lots-of-functions 9.5317+-0.4458 ? 9.7405+-0.6411 ? might be 1.0219x slower cse-new-array-buffer 2.2375+-0.1122 ? 2.2691+-0.1682 ? might be 1.0141x slower cse-new-array 2.2445+-0.1002 2.1922+-0.1102 might be 1.0239x faster DataView-custom-properties 33.3879+-5.9830 30.6297+-0.4778 might be 1.0900x faster delay-tear-off-arguments-strictmode 12.4377+-0.3288 12.2544+-0.2778 might be 1.0150x faster deltablue-varargs 158.5559+-0.7326 ? 158.7660+-2.1798 ? destructuring-arguments 161.8938+-1.2668 161.0386+-1.9538 destructuring-parameters-overridden-by-function 0.4646+-0.0524 0.4523+-0.0273 might be 1.0274x faster destructuring-swap 4.7325+-0.2366 4.6063+-0.0622 might be 1.0274x faster direct-arguments-getbyval 1.1734+-0.0575 ? 1.2341+-0.1086 ? might be 1.0517x slower div-boolean-double 5.2619+-0.1643 ? 5.2633+-0.0389 ? div-boolean 8.1071+-0.0692 ? 8.1529+-0.1457 ? double-get-by-val-out-of-bounds 3.9550+-0.1739 ? 3.9558+-0.0953 ? double-pollution-getbyval 8.6139+-0.0455 8.5876+-0.0306 double-pollution-putbyoffset 3.8017+-0.2199 3.7036+-0.0850 might be 1.0265x faster double-real-use 26.9679+-1.8766 ? 27.4053+-2.7069 ? might be 1.0162x slower double-to-int32-typed-array-no-inline 1.9427+-0.0541 ? 2.0637+-0.3079 ? might be 1.0622x slower double-to-int32-typed-array 1.8152+-0.0815 ? 1.8460+-0.2939 ? might be 1.0170x slower double-to-uint32-typed-array-no-inline 2.0096+-0.0340 ? 2.0243+-0.1375 ? double-to-uint32-typed-array 1.8860+-0.0817 1.8166+-0.0716 might be 1.0382x faster elidable-new-object-dag 34.2381+-0.9081 33.8854+-0.5693 might be 1.0104x faster elidable-new-object-roflcopter 33.3892+-0.8551 33.0703+-0.5301 elidable-new-object-then-call 31.0470+-0.3284 ? 31.5540+-0.5959 ? might be 1.0163x slower elidable-new-object-tree 37.5618+-0.9812 37.1336+-1.0619 might be 1.0115x faster empty-string-plus-int 4.5654+-0.1095 ? 4.7860+-0.1689 ? might be 1.0483x slower emscripten-cube2hash 26.0617+-1.2798 ? 26.7690+-1.6684 ? might be 1.0271x slower exit-length-on-plain-object 12.2029+-0.3331 ? 12.3964+-0.6679 ? might be 1.0159x slower external-arguments-getbyval 1.2448+-0.3545 ? 1.2597+-0.1047 ? might be 1.0119x slower external-arguments-putbyval 2.2593+-0.3710 ? 2.2665+-0.2370 ? fixed-typed-array-storage-var-index 1.1405+-0.0641 1.1303+-0.0418 fixed-typed-array-storage 0.8996+-0.1570 0.8304+-0.0376 might be 1.0833x faster Float32Array-matrix-mult 3.8641+-0.1069 3.8243+-0.1172 might be 1.0104x faster Float32Array-to-Float64Array-set 46.3413+-0.8890 ? 48.0356+-0.9460 ? might be 1.0366x slower Float64Array-alloc-long-lived 68.3447+-0.8755 ? 70.0030+-1.7225 ? might be 1.0243x slower Float64Array-to-Int16Array-set 57.3182+-2.7270 56.2293+-1.0038 might be 1.0194x faster fold-double-to-int 12.2681+-0.4423 12.1509+-0.3977 fold-get-by-id-to-multi-get-by-offset-rare-int 11.5835+-1.3629 11.3527+-0.8725 might be 1.0203x faster fold-get-by-id-to-multi-get-by-offset 9.6951+-0.4112 ? 10.5021+-1.1908 ? might be 1.0832x slower fold-multi-get-by-offset-to-get-by-offset 9.4390+-0.4917 8.9371+-1.9079 might be 1.0562x faster fold-multi-get-by-offset-to-poly-get-by-offset 8.6073+-0.8821 8.0096+-0.9251 might be 1.0746x faster fold-multi-put-by-offset-to-poly-put-by-offset 9.5311+-1.1464 8.2115+-0.7486 might be 1.1607x faster fold-multi-put-by-offset-to-put-by-offset 3.8417+-0.2350 ? 4.6043+-0.7592 ? might be 1.1985x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 8.1443+-0.2370 ? 8.2129+-0.2706 ? fold-put-by-id-to-multi-put-by-offset 10.5276+-1.1868 10.0132+-0.6344 might be 1.0514x faster fold-put-by-val-with-string-to-multi-put-by-offset 10.3340+-1.7707 10.0412+-1.2083 might be 1.0292x faster fold-put-by-val-with-symbol-to-multi-put-by-offset 11.8404+-1.2672 10.3970+-0.7190 might be 1.1388x faster fold-put-structure 4.0908+-0.3562 4.0351+-0.2550 might be 1.0138x faster for-of-iterate-array-entries 11.2199+-0.2825 10.9754+-0.2070 might be 1.0223x faster for-of-iterate-array-keys 3.2887+-0.1086 ? 3.3138+-0.1933 ? for-of-iterate-array-values 3.5796+-0.2340 3.3546+-0.1672 might be 1.0671x faster fround 19.8170+-1.0044 18.4767+-1.4056 might be 1.0725x faster ftl-library-inlining-dataview 56.1531+-0.8738 ? 56.6655+-1.7936 ? ftl-library-inlining 105.9074+-2.8813 ? 106.9240+-1.1386 ? function-call 10.4703+-0.2053 ? 10.4904+-0.2700 ? function-dot-apply 1.7519+-0.0492 1.7377+-0.0647 function-test 2.6067+-0.0333 ? 2.6787+-0.0518 ? might be 1.0276x slower function-with-eval 98.6235+-1.8720 98.3354+-1.6727 gcse-poly-get-less-obvious 13.9881+-0.1321 ? 14.4059+-0.4888 ? might be 1.0299x slower gcse-poly-get 16.2136+-0.6146 ? 16.2936+-0.9627 ? gcse 3.9205+-0.2015 ? 3.9684+-0.2727 ? might be 1.0122x slower get-by-id-bimorphic-check-structure-elimination-simple 2.5747+-0.0867 ? 2.6185+-0.0541 ? might be 1.0170x slower get-by-id-bimorphic-check-structure-elimination 5.7929+-0.2862 5.6527+-0.0570 might be 1.0248x faster get-by-id-chain-from-try-block 5.4149+-0.1738 ? 5.5115+-0.2450 ? might be 1.0178x slower get-by-id-check-structure-elimination 4.3621+-0.0731 ? 4.5710+-0.2913 ? might be 1.0479x slower get-by-id-proto-or-self 16.1435+-0.3159 15.7855+-0.3270 might be 1.0227x faster get-by-id-quadmorphic-check-structure-elimination-simple 2.8843+-0.0859 2.8672+-0.0781 get-by-id-self-or-proto 16.7096+-1.3658 15.8880+-0.3775 might be 1.0517x faster get-by-val-out-of-bounds 3.9046+-0.5398 3.6850+-0.1338 might be 1.0596x faster get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.8780+-0.3093 2.8044+-0.1022 might be 1.0262x faster get-by-val-with-string-bimorphic-check-structure-elimination 5.9207+-0.0823 ? 6.6700+-1.3409 ? might be 1.1266x slower get-by-val-with-string-chain-from-try-block 5.7615+-0.5953 5.6545+-0.2849 might be 1.0189x faster get-by-val-with-string-check-structure-elimination 5.1048+-0.1187 ? 5.3803+-0.7413 ? might be 1.0540x slower get-by-val-with-string-proto-or-self 16.4740+-1.4911 16.2640+-1.2117 might be 1.0129x faster get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.1866+-0.0952 3.1356+-0.0621 might be 1.0163x faster get-by-val-with-string-self-or-proto 16.5654+-1.2355 ? 18.2298+-2.2927 ? might be 1.1005x slower get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 3.0135+-0.0598 2.9989+-0.0765 get-by-val-with-symbol-bimorphic-check-structure-elimination 12.2834+-0.0991 12.2825+-0.1538 get-by-val-with-symbol-chain-from-try-block 5.4909+-0.1269 ? 5.7126+-0.3032 ? might be 1.0404x slower get-by-val-with-symbol-check-structure-elimination 10.9255+-0.0735 ? 10.9531+-0.0489 ? get-by-val-with-symbol-proto-or-self 17.6960+-1.7465 ? 17.7269+-1.5277 ? get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 4.3091+-0.8793 3.8462+-0.0425 might be 1.1204x faster get-by-val-with-symbol-self-or-proto 16.5420+-1.2979 ? 18.0642+-1.6752 ? might be 1.0920x slower get_callee_monomorphic 2.1951+-0.1172 ? 2.2366+-0.1831 ? might be 1.0189x slower get_callee_polymorphic 3.1910+-0.0887 ? 3.2404+-0.0945 ? might be 1.0155x slower getter-no-activation 4.6924+-0.1448 ? 4.7293+-0.1329 ? getter-prototype 9.0873+-0.3969 8.9836+-0.2186 might be 1.0115x faster getter-richards 122.8137+-3.9077 117.4564+-5.6593 might be 1.0456x faster getter 5.7251+-0.6897 5.3005+-0.5729 might be 1.0801x faster global-object-access-with-mutating-structure 5.6862+-0.1670 ? 5.7731+-0.2288 ? might be 1.0153x slower global-var-const-infer-fire-from-opt 0.8095+-0.0586 0.7380+-0.0666 might be 1.0969x faster global-var-const-infer 0.5862+-0.0191 ? 0.6703+-0.1048 ? might be 1.1434x slower hard-overflow-check-equal 33.0695+-0.7954 32.7384+-0.4644 might be 1.0101x faster hard-overflow-check 33.9262+-1.2635 32.8813+-0.3965 might be 1.0318x faster HashMap-put-get-iterate-keys 26.1099+-2.3512 25.4144+-1.6804 might be 1.0274x faster HashMap-put-get-iterate 28.1582+-1.0382 27.9748+-1.4628 HashMap-string-put-get-iterate 23.0403+-0.7028 ? 25.3869+-1.6966 ? might be 1.1018x slower hoist-make-rope 9.4122+-1.0186 8.6981+-0.6850 might be 1.0821x faster hoist-poly-check-structure-effectful-loop 4.0350+-0.0827 ? 4.1851+-0.3913 ? might be 1.0372x slower hoist-poly-check-structure 3.2539+-0.0593 ? 3.2928+-0.0723 ? might be 1.0120x slower imul-double-only 7.4231+-0.0525 7.3420+-0.2689 might be 1.0110x faster imul-int-only 8.4854+-0.5863 8.1219+-0.7523 might be 1.0448x faster imul-mixed 6.8331+-0.3803 ? 6.8585+-0.3299 ? in-four-cases 17.1404+-0.3110 ? 17.8450+-2.3242 ? might be 1.0411x slower in-one-case-false 9.4449+-0.4228 ? 9.5211+-0.5951 ? in-one-case-true 9.2405+-0.2482 9.2167+-0.2526 in-two-cases 9.8873+-0.7828 9.6766+-0.2216 might be 1.0218x faster indexed-properties-in-objects 2.6666+-0.0584 ? 2.8036+-0.3184 ? might be 1.0514x slower infer-closure-const-then-mov-no-inline 3.0070+-0.0395 ? 3.0214+-0.0535 ? infer-closure-const-then-mov 19.0286+-0.5132 18.6708+-0.7898 might be 1.0192x faster infer-closure-const-then-put-to-scope-no-inline 10.5158+-0.3669 10.3597+-0.0713 might be 1.0151x faster infer-closure-const-then-put-to-scope 22.0530+-0.5881 21.1777+-0.7510 might be 1.0413x faster infer-closure-const-then-reenter-no-inline 50.6959+-1.3560 50.3739+-1.5974 infer-closure-const-then-reenter 21.5408+-0.5510 ? 22.0286+-0.2955 ? might be 1.0226x slower infer-constant-global-property 3.5016+-0.1434 ? 3.5441+-0.2581 ? might be 1.0121x slower infer-constant-property 2.5655+-0.0331 ? 2.5757+-0.0361 ? infer-one-time-closure-ten-vars 7.6331+-0.2489 ? 7.6732+-0.3664 ? infer-one-time-closure-two-vars 7.4261+-0.3729 7.2691+-0.3027 might be 1.0216x faster infer-one-time-closure 7.1008+-0.2838 ? 7.2716+-0.6153 ? might be 1.0240x slower infer-one-time-deep-closure 10.8396+-0.1970 ? 10.9955+-0.5436 ? might be 1.0144x slower inline-arguments-access 3.6590+-0.3138 3.5412+-0.1702 might be 1.0333x faster inline-arguments-aliased-access 3.8611+-0.7523 3.4771+-0.0342 might be 1.1104x faster inline-arguments-local-escape 3.6135+-0.2379 ? 3.7779+-0.5080 ? might be 1.0455x slower inline-get-scoped-var 4.5823+-0.2074 4.5178+-0.1743 might be 1.0143x faster inlined-put-by-id-transition 10.3908+-0.7313 10.0489+-0.9520 might be 1.0340x faster inlined-put-by-val-with-string-transition 71.9445+-0.4746 71.4734+-1.8479 inlined-put-by-val-with-symbol-transition 70.0681+-0.8703 ? 70.6903+-1.5673 ? int-or-other-abs-then-get-by-val 4.6914+-0.0843 4.6873+-0.0973 int-or-other-abs-zero-then-get-by-val 17.3349+-3.5691 15.4835+-0.1737 might be 1.1196x faster int-or-other-add-then-get-by-val 3.9274+-0.0765 3.9255+-0.0277 int-or-other-add 4.8364+-0.1537 4.7739+-0.0849 might be 1.0131x faster int-or-other-div-then-get-by-val 3.7933+-0.0988 3.7682+-0.0587 int-or-other-max-then-get-by-val 3.7371+-0.0203 ? 3.7735+-0.0706 ? int-or-other-min-then-get-by-val 3.9045+-0.0817 ? 3.9398+-0.1240 ? int-or-other-mod-then-get-by-val 3.5329+-0.0938 ? 3.5475+-0.0991 ? int-or-other-mul-then-get-by-val 3.4988+-0.0610 ? 3.6295+-0.2778 ? might be 1.0374x slower int-or-other-neg-then-get-by-val 4.3817+-0.0902 4.3801+-0.2104 int-or-other-neg-zero-then-get-by-val 16.1496+-1.1679 15.6258+-0.3840 might be 1.0335x faster int-or-other-sub-then-get-by-val 3.9758+-0.0726 3.9347+-0.0578 might be 1.0105x faster int-or-other-sub 3.3992+-0.1944 ? 3.4142+-0.1347 ? int-overflow-local 4.1255+-0.2099 ? 4.2104+-0.3422 ? might be 1.0206x slower Int16Array-alloc-long-lived 47.0587+-0.9067 46.9449+-0.9351 Int16Array-bubble-sort-with-byteLength 17.5691+-0.5270 ? 17.7390+-0.9971 ? Int16Array-bubble-sort 17.6189+-0.8051 17.4716+-0.7130 Int16Array-load-int-mul 1.3929+-0.0170 1.3911+-0.0498 Int16Array-to-Int32Array-set 53.4947+-16.5133 46.9457+-1.4543 might be 1.1395x faster Int32Array-alloc-large 12.3675+-0.8325 ? 12.5094+-0.6702 ? might be 1.0115x slower Int32Array-alloc-long-lived 54.9740+-1.1645 ? 55.2544+-0.5761 ? Int32Array-alloc 2.7862+-0.2352 ? 2.9979+-0.5004 ? might be 1.0760x slower Int32Array-Int8Array-view-alloc 5.9407+-0.0928 5.8846+-0.1137 int52-spill 4.4282+-0.0766 ? 4.4979+-0.1031 ? might be 1.0157x slower Int8Array-alloc-long-lived 41.1368+-1.7902 41.1357+-1.2157 Int8Array-load-with-byteLength 3.4189+-0.1704 3.3262+-0.0219 might be 1.0279x faster Int8Array-load 3.3903+-0.1097 ? 3.4682+-0.1543 ? might be 1.0230x slower integer-divide 10.0651+-0.1625 ? 10.1459+-0.2646 ? integer-modulo 1.5144+-0.0202 ? 1.5271+-0.0440 ? is-boolean-fold-tricky 3.7480+-0.0682 ? 3.8831+-0.2923 ? might be 1.0360x slower is-boolean-fold 2.7155+-0.1680 2.6057+-0.0449 might be 1.0421x faster is-function-fold-tricky-internal-function 10.1678+-0.0734 ? 10.2925+-0.2530 ? might be 1.0123x slower is-function-fold-tricky 4.0705+-0.0355 ? 4.0884+-0.0963 ? is-function-fold 2.6304+-0.0324 ? 2.6597+-0.1214 ? might be 1.0111x slower is-number-fold-tricky 4.0524+-0.0731 4.0246+-0.0908 is-number-fold 2.6237+-0.1380 ? 2.7929+-0.3881 ? might be 1.0645x slower is-object-or-null-fold-functions 2.6381+-0.0546 2.6365+-0.0511 is-object-or-null-fold-less-tricky 4.0663+-0.0564 4.0202+-0.0244 might be 1.0115x faster is-object-or-null-fold-tricky 5.2059+-0.1313 5.0461+-0.1316 might be 1.0317x faster is-object-or-null-fold 2.6445+-0.0796 ? 2.7330+-0.2929 ? might be 1.0335x slower is-object-or-null-trickier-function 4.0882+-0.0430 ? 4.1387+-0.0942 ? might be 1.0124x slower is-object-or-null-trickier-internal-function 10.5889+-0.2027 ? 10.7656+-0.0741 ? might be 1.0167x slower is-object-or-null-tricky-function 4.0838+-0.0955 4.0549+-0.0388 is-object-or-null-tricky-internal-function 7.8208+-0.0575 7.8044+-0.0943 is-string-fold-tricky 3.9924+-0.0548 ? 3.9991+-0.0664 ? is-string-fold 2.6303+-0.0916 ? 2.6654+-0.1679 ? might be 1.0134x slower is-undefined-fold-tricky 3.5508+-0.4753 3.3561+-0.2491 might be 1.0580x faster is-undefined-fold 2.6070+-0.1004 ? 2.6397+-0.1001 ? might be 1.0125x slower JSONP-negative-0 0.2486+-0.0039 ? 0.2540+-0.0314 ? might be 1.0217x slower large-int-captured 3.9732+-0.2508 ? 4.0787+-0.4290 ? might be 1.0265x slower large-int-neg 13.9153+-0.4101 13.7747+-0.2821 might be 1.0102x faster large-int 12.6826+-0.2588 ? 13.1542+-0.6735 ? might be 1.0372x slower load-varargs-elimination 20.9234+-0.6051 ? 21.3090+-0.6305 ? might be 1.0184x slower logical-not-weird-types 2.8406+-0.1144 2.7562+-0.0628 might be 1.0306x faster logical-not 4.1691+-0.0982 ? 4.2117+-0.2138 ? might be 1.0102x slower lots-of-fields 9.5229+-0.1386 9.2073+-0.3929 might be 1.0343x faster make-indexed-storage 2.7055+-0.0951 ? 2.7297+-0.2262 ? make-rope-cse 3.6464+-0.1132 ? 3.6747+-0.1744 ? marsaglia-larger-ints 32.2311+-2.2429 31.8976+-0.4541 might be 1.0105x faster marsaglia-osr-entry 21.8169+-0.4521 21.3050+-0.4166 might be 1.0240x faster math-with-out-of-bounds-array-values 22.4487+-0.5164 ? 23.1385+-1.0879 ? might be 1.0307x slower max-boolean 2.6936+-0.2937 2.6220+-0.0599 might be 1.0273x faster method-on-number 16.2266+-0.6764 15.7417+-0.2831 might be 1.0308x faster min-boolean 2.6524+-0.2885 2.5685+-0.0847 might be 1.0327x faster minus-boolean-double 3.0661+-0.0690 3.0584+-0.0671 minus-boolean 2.3601+-0.2139 2.3547+-0.1270 misc-strict-eq 32.5762+-1.0582 ^ 29.4148+-0.6865 ^ definitely 1.1075x faster mod-boolean-double 11.1977+-0.3266 10.9937+-0.2184 might be 1.0186x faster mod-boolean 8.4449+-0.2433 8.2363+-0.0933 might be 1.0253x faster mul-boolean-double 3.5678+-0.0394 ? 3.6668+-0.2671 ? might be 1.0277x slower mul-boolean 2.7819+-0.0855 2.7773+-0.0341 neg-boolean 3.1006+-0.0141 3.0825+-0.0919 negative-zero-divide 0.3493+-0.0198 ? 0.3578+-0.0316 ? might be 1.0244x slower negative-zero-modulo 0.3367+-0.0074 ? 0.3401+-0.0140 ? might be 1.0100x slower negative-zero-negate 0.3277+-0.0163 0.3229+-0.0164 might be 1.0150x faster nested-function-parsing 44.0606+-1.3436 ? 44.3895+-0.7551 ? new-array-buffer-dead 87.7879+-1.1897 ? 88.3784+-1.1193 ? new-array-buffer-push 5.9845+-0.3235 ? 6.2733+-0.5818 ? might be 1.0483x slower new-array-dead 14.7372+-0.4094 ? 14.9960+-0.5969 ? might be 1.0176x slower new-array-push 3.6849+-0.4874 3.3529+-0.1225 might be 1.0990x faster no-inline-constructor 31.6900+-0.8482 31.2977+-0.9552 might be 1.0125x faster number-test 3.0308+-0.2186 2.9203+-0.0265 might be 1.0379x faster object-closure-call 4.6466+-0.0680 ? 4.6765+-0.0307 ? object-get-own-property-symbols-on-large-array 4.2335+-0.2532 ? 4.9312+-0.7876 ? might be 1.1648x slower object-test 2.6406+-0.0924 ? 2.8420+-0.3678 ? might be 1.0763x slower obvious-sink-pathology-taken 100.7753+-1.3656 98.6911+-0.9040 might be 1.0211x faster obvious-sink-pathology 96.4686+-2.5620 93.9887+-0.8356 might be 1.0264x faster obviously-elidable-new-object 28.7442+-0.9348 28.2874+-0.3639 might be 1.0161x faster plus-boolean-arith 2.3492+-0.0732 ? 2.3789+-0.0659 ? might be 1.0126x slower plus-boolean-double 3.1017+-0.0560 ? 3.1640+-0.1677 ? might be 1.0201x slower plus-boolean 2.6227+-0.1280 2.6159+-0.3930 poly-chain-access-different-prototypes-simple 3.1948+-0.0493 ? 3.2247+-0.0807 ? poly-chain-access-different-prototypes 2.9137+-0.0773 2.8583+-0.1210 might be 1.0194x faster poly-chain-access-simpler 3.1899+-0.0526 ? 3.3626+-0.4021 ? might be 1.0542x slower poly-chain-access 3.2526+-0.1145 ? 3.2565+-0.0707 ? poly-stricteq 50.4970+-0.4574 ^ 48.4766+-0.8568 ^ definitely 1.0417x faster polymorphic-array-call 1.2638+-0.0607 1.1783+-0.0640 might be 1.0725x faster polymorphic-get-by-id 2.8236+-0.1198 2.7826+-0.0561 might be 1.0147x faster polymorphic-put-by-id 25.1849+-1.4878 24.8862+-1.3509 might be 1.0120x faster polymorphic-put-by-val-with-string 25.6421+-0.8351 25.3653+-0.5556 might be 1.0109x faster polymorphic-put-by-val-with-symbol 24.9496+-0.5299 24.8567+-0.5412 polymorphic-structure 13.7651+-0.8716 13.1191+-0.2252 might be 1.0492x faster polyvariant-monomorphic-get-by-id 6.6336+-0.9316 ? 6.6380+-0.8811 ? proto-getter-access 8.5117+-0.3709 8.3768+-0.3214 might be 1.0161x faster prototype-access-with-mutating-prototype 5.4771+-0.2494 ? 5.6443+-0.4012 ? might be 1.0305x slower put-by-id-replace-and-transition 7.9639+-0.5039 7.9281+-0.3799 put-by-id-slightly-polymorphic 2.6113+-0.0937 2.5770+-0.0380 might be 1.0133x faster put-by-id 9.7076+-0.4687 ? 9.7594+-0.5257 ? put-by-val-direct 0.3238+-0.0059 ? 0.3682+-0.0825 ? might be 1.1370x slower put-by-val-large-index-blank-indexing-type 5.6218+-0.6511 5.5741+-0.5735 put-by-val-machine-int 2.3438+-0.0898 ? 2.4495+-0.2376 ? might be 1.0451x slower put-by-val-with-string-replace-and-transition 10.3405+-0.6322 10.1094+-0.5299 might be 1.0229x faster put-by-val-with-string-slightly-polymorphic 2.8797+-0.0983 2.7979+-0.0212 might be 1.0293x faster put-by-val-with-string 10.5278+-0.3571 10.1387+-0.4633 might be 1.0384x faster put-by-val-with-symbol-replace-and-transition 11.6553+-0.6060 11.3151+-0.2570 might be 1.0301x faster put-by-val-with-symbol-slightly-polymorphic 3.3136+-0.3272 3.0999+-0.0614 might be 1.0689x faster put-by-val-with-symbol 10.4623+-0.5638 10.1827+-0.3735 might be 1.0275x faster rare-osr-exit-on-local 14.1499+-0.2728 ? 14.5824+-0.5626 ? might be 1.0306x slower register-pressure-from-osr 16.6289+-0.5319 ? 16.6723+-0.4702 ? repeat-multi-get-by-offset 21.4990+-0.2896 ? 22.2393+-1.0880 ? might be 1.0344x slower setter-prototype 7.7757+-0.2726 7.6022+-0.1878 might be 1.0228x faster setter 5.2869+-0.4751 ? 5.6403+-0.7535 ? might be 1.0669x slower simple-activation-demo 24.6667+-1.3609 24.6474+-0.9674 simple-getter-access 10.8195+-0.5222 ? 11.0280+-0.4992 ? might be 1.0193x slower simple-poly-call-nested 8.8865+-0.9067 8.8777+-0.7708 simple-poly-call 1.1463+-0.0167 ? 1.1907+-0.0435 ? might be 1.0387x slower sin-boolean 20.7469+-1.5038 20.5577+-1.3363 singleton-scope 56.0539+-1.4795 55.6335+-0.6538 sink-function 10.3840+-0.8357 9.6764+-0.4415 might be 1.0731x faster sink-huge-activation 16.2677+-0.4368 ? 16.5253+-0.5513 ? might be 1.0158x slower sinkable-new-object-dag 54.3792+-0.5899 ? 54.8855+-1.7615 ? sinkable-new-object-taken 42.9556+-2.0262 ? 43.6815+-1.8042 ? might be 1.0169x slower sinkable-new-object 30.4937+-0.8378 30.1870+-0.9364 might be 1.0102x faster slow-array-profile-convergence 2.7342+-0.4909 2.5652+-0.2583 might be 1.0659x faster slow-convergence 2.2895+-0.0781 ? 2.3290+-0.1445 ? might be 1.0172x slower slow-ternaries 17.4546+-0.6152 ? 18.5285+-1.6750 ? might be 1.0615x slower sorting-benchmark 16.7123+-0.4597 16.4958+-0.4930 might be 1.0131x faster sparse-conditional 1.0959+-0.0383 1.0824+-0.0242 might be 1.0125x faster splice-to-remove 12.1830+-0.4896 ? 13.0335+-1.2099 ? might be 1.0698x slower string-char-code-at 14.0684+-0.4336 ? 14.3286+-0.6381 ? might be 1.0185x slower string-concat-object 2.1888+-0.0815 2.1527+-0.1699 might be 1.0168x faster string-concat-pair-object 2.0466+-0.0869 2.0295+-0.1172 string-concat-pair-simple 9.3575+-0.8451 ? 9.5057+-0.4900 ? might be 1.0158x slower string-concat-simple 9.0983+-0.2570 ? 9.3932+-0.3635 ? might be 1.0324x slower string-cons-repeat 6.4657+-0.5533 6.3317+-0.2490 might be 1.0212x faster string-cons-tower 6.9810+-0.5092 6.9780+-0.8797 string-equality 15.1554+-0.5691 ? 15.2491+-0.5658 ? string-get-by-val-big-char 6.6301+-0.0995 ? 6.9014+-0.3114 ? might be 1.0409x slower string-get-by-val-out-of-bounds-insane 3.0567+-0.0694 ? 3.1164+-0.0952 ? might be 1.0195x slower string-get-by-val-out-of-bounds 4.1134+-0.1867 3.9774+-0.1017 might be 1.0342x faster string-get-by-val 2.7883+-0.0565 2.7820+-0.0379 string-hash 1.7822+-0.0310 1.7679+-0.0170 string-long-ident-equality 12.4208+-0.1984 ? 12.9007+-1.0481 ? might be 1.0386x slower string-out-of-bounds 10.0984+-0.3248 ? 10.3635+-0.6056 ? might be 1.0263x slower string-repeat-arith 25.9027+-0.4338 ? 29.2328+-7.1232 ? might be 1.1286x slower string-sub 51.5594+-0.3931 51.5006+-0.6356 string-test 2.9570+-0.2971 2.8196+-0.0690 might be 1.0487x faster string-var-equality 24.7246+-0.3301 ? 24.9020+-0.5108 ? structure-hoist-over-transitions 2.4392+-0.1579 2.4151+-0.0671 substring-concat-weird 36.2008+-1.5922 35.6064+-0.8610 might be 1.0167x faster substring-concat 38.8599+-0.8447 ? 39.4013+-0.7220 ? might be 1.0139x slower substring 44.9148+-0.7839 ? 45.6822+-2.7099 ? might be 1.0171x slower switch-char-constant 2.5945+-0.0411 ? 2.6532+-0.1349 ? might be 1.0226x slower switch-char 8.0024+-0.2832 ^ 6.9740+-0.6189 ^ definitely 1.1475x faster switch-constant 8.2765+-1.0611 8.2729+-0.4389 switch-string-basic-big-var 13.7849+-0.1566 ? 13.9359+-0.3378 ? might be 1.0110x slower switch-string-basic-big 14.1514+-0.2010 ? 14.3380+-0.1366 ? might be 1.0132x slower switch-string-basic-var 13.0743+-0.3132 ? 13.2869+-0.4514 ? might be 1.0163x slower switch-string-basic 12.7244+-0.4532 12.4874+-0.1877 might be 1.0190x faster switch-string-big-length-tower-var 17.9992+-0.5468 17.8340+-0.3907 switch-string-length-tower-var 14.0604+-0.9481 13.7309+-0.4745 might be 1.0240x faster switch-string-length-tower 12.0111+-0.3903 11.7652+-0.1365 might be 1.0209x faster switch-string-short 12.0165+-0.1216 ? 12.1827+-0.4034 ? might be 1.0138x slower switch 11.0308+-0.4788 ? 12.0783+-1.0862 ? might be 1.0950x slower tear-off-arguments-simple 3.0123+-0.1402 2.9841+-0.1348 tear-off-arguments 3.8576+-0.0970 ? 3.8894+-0.1095 ? temporal-structure 12.0939+-0.4399 ? 12.1672+-0.2985 ? to-int32-boolean 12.5873+-0.1510 12.5255+-0.1652 try-catch-get-by-val-cloned-arguments 14.8324+-1.1734 14.2358+-0.5494 might be 1.0419x faster try-catch-get-by-val-direct-arguments 6.1888+-0.1099 ? 6.4509+-0.4315 ? might be 1.0423x slower try-catch-get-by-val-scoped-arguments 7.7319+-0.2994 7.5411+-0.2008 might be 1.0253x faster typed-array-get-set-by-val-profiling 27.2373+-0.6321 27.0678+-0.9738 undefined-property-access 225.0114+-2.9720 223.7468+-1.3135 undefined-test 2.9424+-0.1006 2.9231+-0.0910 unprofiled-licm 14.1277+-0.5036 13.7112+-0.2547 might be 1.0304x faster varargs-call 13.2443+-0.2085 ? 13.2668+-0.3749 ? varargs-construct-inline 22.6368+-1.8568 21.9539+-0.7398 might be 1.0311x faster varargs-construct 21.1347+-1.2246 19.8487+-0.6085 might be 1.0648x faster varargs-inline 8.9231+-0.9917 8.5147+-0.2360 might be 1.0480x faster varargs-strict-mode 9.3143+-0.6835 8.9110+-0.1678 might be 1.0453x faster varargs 8.7695+-0.0546 ? 8.8153+-0.1160 ? weird-inlining-const-prop 2.5034+-0.2887 2.4186+-0.1737 might be 1.0351x faster <geometric> 7.8485+-0.0156 7.8385+-0.0353 might be 1.0013x faster TipOfTree StrCat AsmBench: bigfib.cpp 455.1717+-5.1549 450.1677+-7.7476 might be 1.0111x faster cray.c 399.2916+-2.7610 ? 405.2760+-5.5102 ? might be 1.0150x slower dry.c 427.3124+-12.4429 ? 431.7579+-5.8084 ? might be 1.0104x slower FloatMM.c 700.4568+-35.4117 687.6922+-4.9069 might be 1.0186x faster gcc-loops.cpp 3447.8074+-45.0770 3440.1287+-17.6443 n-body.c 826.6895+-4.1895 ? 830.4058+-6.2975 ? Quicksort.c 412.2963+-16.3599 408.4893+-6.6752 stepanov_container.cpp 3602.2525+-53.7644 3587.3544+-36.7372 Towers.c 234.0241+-1.7707 ? 234.9332+-2.9402 ? <geometric> 722.6572+-3.4368 721.8925+-2.0286 might be 1.0011x faster TipOfTree StrCat CompressionBench: huffman 59.6905+-0.8487 ? 60.4018+-1.7954 ? might be 1.0119x slower arithmetic-simple 274.2560+-3.0890 272.9439+-2.7159 arithmetic-precise 243.4763+-1.5488 ? 243.8998+-2.2648 ? arithmetic-complex-precise 244.7453+-1.8204 ? 245.0768+-3.6190 ? arithmetic-precise-order-0 282.5098+-2.5430 ? 282.9064+-2.0032 ? arithmetic-precise-order-1 304.4931+-2.0394 ? 305.3485+-3.4775 ? arithmetic-precise-order-2 354.6418+-6.2511 ? 358.4465+-13.9828 ? might be 1.0107x slower arithmetic-simple-order-1 327.8805+-2.9962 ? 331.8115+-6.3701 ? might be 1.0120x slower arithmetic-simple-order-2 378.5660+-5.1875 ? 381.3957+-4.3562 ? lz-string 315.2341+-6.3704 311.4762+-5.7974 might be 1.0121x faster <geometric> 255.0249+-1.0439 ? 255.8277+-1.7300 ? might be 1.0031x slower TipOfTree StrCat Geomean of preferred means: <scaled-result> 51.1475+-0.2239 ? 51.1608+-0.1229 ? might be 1.0003x slower
Michael Saboff
Comment 6 2015-08-22 09:44:04 PDT
Comment on attachment 259694 [details] the patch r=me
Saam Barati
Comment 7 2015-08-22 10:06:23 PDT
Comment on attachment 259694 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=259694&action=review r=me too, with comments Maybe you can also add a test that ensures that you don't execute side effects twice for an out of memory error. > Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1515 > + bool goodToGo = true; Nit: maybe call this variable "canConvertToMakeRope". > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2086 > + You need an exception check here! > Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2212 > + You need an exception check here!
Filip Pizlo
Comment 8 2015-08-22 11:11:36 PDT
(In reply to comment #7) > Comment on attachment 259694 [details] > the patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=259694&action=review > > r=me too, with comments > Maybe you can also add a test that ensures that you don't execute side > effects twice for an out of memory error. Done. > > > Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1515 > > + bool goodToGo = true; > > Nit: maybe call this variable "canConvertToMakeRope". OK. > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2086 > > + > > You need an exception check here! > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:2212 > > + > > You need an exception check here! Damn, I forgot about those! I'll add the checks and some tests.
Filip Pizlo
Comment 9 2015-08-22 11:36:23 PDT
Note You need to log in before you can comment on or make changes to this bug.