| Summary: | DFG string concatenation shouldn't be playing fast and loose with effects and OSR exit | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 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, msaboff, nrotem, oliver, saam, sam | ||||||
| Priority: | P2 | ||||||||
| Version: | Other | ||||||||
| Hardware: | All | ||||||||
| OS: | All | ||||||||
| Bug Depends on: | |||||||||
| Bug Blocks: | 145204 | ||||||||
| Attachments: |
|
||||||||
|
Description
Filip Pizlo
2015-08-21 15:51:22 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. Created attachment 259692 [details]
it's a start
Created attachment 259694 [details]
the patch
Not marking r? yet because I still have to run benchmarks.
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.
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 Comment on attachment 259694 [details]
the patch
r=me
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! (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. Landed in http://trac.webkit.org/changeset/188825 |