Bug 149601

Summary: We should be able to inline getter/setter calls inside an inline cache even when the SpillRegistersMode is NeedsToSpill
Product: WebKit Reporter: Saam Barati <saam>
Component: JavaScriptCoreAssignee: Saam Barati <saam>
Status: RESOLVED FIXED    
Severity: Normal CC: benjamin, bfulgham, commit-queue, fpizlo, ggaren, gskachkov, joepeck, keith_miller, mark.lam, msaboff, oliver, ossy, sukolsak, ysuzuki
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 151617    
Bug Blocks: 149409, 150040    
Attachments:
Description Flags
WIP
none
WIP
none
WIP
none
patch
none
patch
none
patch
none
patch
none
patch
none
patch none

Saam Barati
Reported 2015-09-28 11:53:38 PDT
We should have the inline cache spill and then restore the necessary registers.
Attachments
WIP (19.06 KB, patch)
2015-09-29 18:03 PDT, Saam Barati
no flags
WIP (19.26 KB, patch)
2015-09-29 19:14 PDT, Saam Barati
no flags
WIP (75.08 KB, patch)
2015-10-04 13:57 PDT, Saam Barati
no flags
patch (87.89 KB, patch)
2015-10-04 17:02 PDT, Saam Barati
no flags
patch (86.76 KB, patch)
2015-10-04 17:36 PDT, Saam Barati
no flags
patch (102.70 KB, patch)
2015-10-06 16:08 PDT, Saam Barati
no flags
patch (103.54 KB, patch)
2015-10-07 16:54 PDT, Saam Barati
no flags
patch (103.46 KB, patch)
2015-10-07 17:06 PDT, Saam Barati
no flags
patch (103.49 KB, patch)
2015-10-07 18:31 PDT, Saam Barati
no flags
Saam Barati
Comment 1 2015-09-29 18:03:14 PDT
Created attachment 262127 [details] WIP I still need to write code that reclaims call site indices.
Saam Barati
Comment 2 2015-09-29 19:14:22 PDT
Created attachment 262132 [details] WIP some clean up work. Still need to implement reuse of call site indices
WebKit Commit Bot
Comment 3 2015-09-29 19:17:16 PDT
Attachment 262132 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:396: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:751: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:762: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:767: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:772: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1045: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1243: Should have a space between // and comment [whitespace/comments] [4] Total errors found: 7 in 11 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 4 2015-10-04 13:57:20 PDT
Created attachment 262407 [details] WIP Almost done. I just want to write a couple more tests and make sure 32-bit is working.
Saam Barati
Comment 5 2015-10-04 17:02:54 PDT
WebKit Commit Bot
Comment 6 2015-10-04 17:05:26 PDT
Attachment 262410 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:150: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:691: Declaration has space between type name and * in numberOfRegsForCall * sizeof [whitespace/declaration] [3] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:767: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:819: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1300: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:100: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:269: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:102: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:103: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:104: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] Total errors found: 11 in 42 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 7 2015-10-04 17:36:25 PDT
WebKit Commit Bot
Comment 8 2015-10-04 17:38:50 PDT
Attachment 262411 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:150: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:691: Declaration has space between type name and * in numberOfRegsForCall * sizeof [whitespace/declaration] [3] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:767: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:819: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1300: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:100: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:269: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:103: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:104: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:105: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] Total errors found: 11 in 41 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 9 2015-10-06 08:42:44 PDT
Looks neutral: VMs tested: "og" at /Users/saambarati/WK/ternary/WebKitBuild/Release/jsc (r190555) "ICChanges" at /Users/saambarati/WK/Clean/WebKitBuild/Release/jsc (r190555) 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. og ICChanges SunSpider: 3d-cube 5.9712+-1.1714 ? 6.0020+-1.4125 ? 3d-morph 6.4361+-0.6031 ? 6.6345+-1.2050 ? might be 1.0308x slower 3d-raytrace 9.0323+-1.1682 8.8069+-1.3142 might be 1.0256x faster access-binary-trees 2.9609+-0.2756 ? 3.5481+-0.9453 ? might be 1.1983x slower access-fannkuch 7.0519+-0.8212 ? 7.5455+-1.3392 ? might be 1.0700x slower access-nbody 3.3843+-0.8004 ? 3.7256+-1.1359 ? might be 1.1008x slower access-nsieve 3.8198+-0.7339 3.6211+-0.0745 might be 1.0549x faster bitops-3bit-bits-in-byte 2.7821+-1.2280 1.7266+-0.2800 might be 1.6113x faster bitops-bits-in-byte 5.7083+-2.8978 4.0467+-0.6341 might be 1.4106x faster bitops-bitwise-and 2.4438+-0.1647 ? 2.6517+-0.4191 ? might be 1.0851x slower bitops-nsieve-bits 3.6664+-0.6538 ? 4.9967+-1.7503 ? might be 1.3628x slower controlflow-recursive 4.0620+-1.0120 3.8095+-1.0245 might be 1.0663x faster crypto-aes 7.3050+-6.0456 5.5205+-1.9257 might be 1.3233x faster crypto-md5 4.0653+-1.7454 3.8329+-0.6161 might be 1.0606x faster crypto-sha1 4.2910+-1.8466 3.4115+-0.1821 might be 1.2578x faster date-format-tofte 9.6624+-0.8264 ? 10.5456+-2.8664 ? might be 1.0914x slower date-format-xparb 5.7173+-0.6569 5.7067+-0.4817 math-cordic 3.9300+-0.3550 ? 5.1025+-2.0058 ? might be 1.2984x slower math-partial-sums 7.4258+-3.6456 5.8854+-0.5494 might be 1.2617x faster math-spectral-norm 2.5772+-0.1173 ? 3.1830+-1.2189 ? might be 1.2351x slower regexp-dna 7.4396+-0.6105 7.3964+-0.5355 string-base64 5.0511+-0.1407 ? 5.1817+-0.2707 ? might be 1.0259x slower string-fasta 8.0880+-1.0139 ? 9.5605+-1.6280 ? might be 1.1821x slower string-tagcloud 10.3347+-1.1207 ? 10.9085+-1.5452 ? might be 1.0555x slower string-unpack-code 25.5645+-2.7034 22.3475+-1.5930 might be 1.1440x faster string-validate-input 6.2897+-1.3052 6.0450+-1.0613 might be 1.0405x faster <arithmetic> 6.3485+-0.4133 6.2209+-0.3282 might be 1.0205x faster og ICChanges LongSpider: 3d-cube 972.6522+-12.1938 ? 974.6314+-15.4385 ? 3d-morph 1878.3481+-14.0515 1872.1945+-9.2600 3d-raytrace 731.6548+-14.8420 ? 748.3438+-25.9692 ? might be 1.0228x slower access-binary-trees 1055.5800+-10.2644 ? 1061.4035+-16.7354 ? access-fannkuch 334.0493+-3.7578 ? 345.1624+-28.7848 ? might be 1.0333x slower access-nbody 639.3097+-8.7800 637.0160+-9.8632 access-nsieve 563.4510+-6.0077 561.1833+-2.2432 bitops-3bit-bits-in-byte 42.8488+-4.6011 ? 43.7822+-4.2991 ? might be 1.0218x slower bitops-bits-in-byte 93.5752+-3.3014 93.2910+-4.1138 bitops-nsieve-bits 589.6168+-8.2610 582.3938+-7.6724 might be 1.0124x faster controlflow-recursive 532.3648+-19.2336 ? 541.8143+-4.4085 ? might be 1.0178x slower crypto-aes 682.3782+-12.8218 676.3643+-15.2510 crypto-md5 558.9372+-22.8579 ? 559.2322+-27.6058 ? crypto-sha1 759.2666+-39.6068 756.8966+-19.3876 date-format-tofte 626.8222+-27.5349 603.3210+-12.2151 might be 1.0390x faster date-format-xparb 789.9055+-6.5521 ? 791.5809+-5.3206 ? hash-map 186.6709+-15.5535 183.7682+-2.7437 might be 1.0158x faster math-cordic 606.1450+-8.9351 597.0732+-9.1239 might be 1.0152x faster math-partial-sums 573.5443+-10.0326 572.6233+-11.0645 math-spectral-norm 693.3304+-10.2000 ? 712.6786+-74.1369 ? might be 1.0279x slower string-base64 420.2315+-6.0442 415.6218+-6.5190 might be 1.0111x faster string-fasta 444.1515+-8.0168 ? 451.6709+-19.2852 ? might be 1.0169x slower string-tagcloud 209.5832+-4.4622 209.2195+-3.1140 <geometric> 482.8243+-3.9062 ? 483.3452+-4.2196 ? might be 1.0011x slower og ICChanges V8Spider: crypto 89.5950+-4.7105 ? 89.7323+-7.1368 ? deltablue 128.2217+-13.3038 ? 129.7655+-8.8590 ? might be 1.0120x slower earley-boyer 82.8813+-22.5243 77.0791+-5.3433 might be 1.0753x faster raytrace 61.1033+-8.4203 60.6629+-8.5505 regexp 79.7726+-1.7815 ? 84.3777+-13.1232 ? might be 1.0577x slower richards 98.7692+-7.3082 ? 101.1993+-7.6389 ? might be 1.0246x slower splay 60.5736+-4.1673 ? 63.1320+-6.2294 ? might be 1.0422x slower <geometric> 82.8679+-3.5397 ? 83.6206+-1.6686 ? might be 1.0091x slower og ICChanges Octane: encrypt 0.20209+-0.00413 0.19965+-0.00193 might be 1.0122x faster decrypt 3.54211+-0.02783 ? 3.79184+-0.62065 ? might be 1.0705x slower deltablue x2 0.17138+-0.01023 0.16839+-0.00851 might be 1.0177x faster earley 0.46481+-0.13142 0.45495+-0.11325 might be 1.0217x faster boyer 5.78176+-0.13465 ? 5.87598+-0.44249 ? might be 1.0163x slower navier-stokes x2 6.02362+-0.09498 5.99432+-0.07124 raytrace x2 1.07318+-0.01923 1.07022+-0.00548 richards x2 0.11106+-0.00133 0.11031+-0.00138 splay x2 0.53001+-0.01196 ? 0.54530+-0.01802 ? might be 1.0289x slower regexp x2 30.65142+-0.54406 ? 30.88505+-0.93154 ? pdfjs x2 46.59626+-0.96214 ? 46.66345+-0.58957 ? mandreel x2 66.27960+-1.60646 ? 68.17164+-1.95855 ? might be 1.0285x slower gbemu x2 54.13570+-1.09352 ? 55.16681+-3.48232 ? might be 1.0190x slower closure 0.71002+-0.02128 0.69395+-0.02123 might be 1.0232x faster jquery 9.09799+-0.09948 9.08922+-0.07120 box2d x2 15.01402+-2.48089 13.86701+-0.28672 might be 1.0827x faster zlib x2 467.49862+-21.37039 ? 473.13961+-13.48115 ? might be 1.0121x slower typescript x2 1013.63228+-58.57857 ? 1227.75854+-532.72412 ? might be 1.2112x slower <geometric> 7.25846+-0.11439 ? 7.33024+-0.24821 ? might be 1.0099x slower og ICChanges Kraken: ai-astar 146.662+-2.544 ? 147.280+-1.761 ? audio-beat-detection 56.729+-0.983 ? 56.997+-1.071 ? audio-dft 135.932+-2.784 133.851+-1.582 might be 1.0155x faster audio-fft 41.269+-0.549 ? 41.362+-1.170 ? audio-oscillator 68.322+-4.958 ? 68.463+-2.494 ? imaging-darkroom 74.347+-2.134 ? 76.148+-8.290 ? might be 1.0242x slower imaging-desaturate 72.921+-8.526 70.791+-5.616 might be 1.0301x faster imaging-gaussian-blur 100.141+-2.614 ? 114.617+-19.051 ? might be 1.1446x slower json-parse-financial 45.721+-1.966 ? 48.760+-3.136 ? might be 1.0665x slower json-stringify-tinderbox 31.290+-12.472 26.898+-2.082 might be 1.1633x faster stanford-crypto-aes 53.612+-4.137 49.120+-2.194 might be 1.0915x faster stanford-crypto-ccm 45.155+-4.325 ? 51.139+-8.774 ? might be 1.1325x slower stanford-crypto-pbkdf2 116.270+-6.511 114.214+-2.504 might be 1.0180x faster stanford-crypto-sha256-iterative 44.897+-1.992 44.717+-2.514 <arithmetic> 73.805+-1.311 ? 74.597+-1.248 ? might be 1.0107x slower og ICChanges JSRegress: abc-forward-loop-equal 40.5785+-7.6773 35.1667+-1.5602 might be 1.1539x faster abc-postfix-backward-loop 36.4103+-2.6565 ? 36.5305+-2.5726 ? abc-simple-backward-loop 34.8820+-1.1089 ? 35.0390+-3.4346 ? abc-simple-forward-loop 36.6855+-3.2314 34.5846+-2.1545 might be 1.0607x faster abc-skippy-loop 25.9508+-2.0855 25.4735+-2.6606 might be 1.0187x faster abs-boolean 3.3973+-0.7912 3.0660+-0.1314 might be 1.1081x faster adapt-to-double-divide 19.0023+-1.2670 ? 19.1314+-0.8811 ? aliased-arguments-getbyval 1.3799+-0.0416 ? 1.4920+-0.2583 ? might be 1.0813x slower allocate-big-object 3.6851+-1.8541 2.8453+-0.2185 might be 1.2951x faster arguments-named-and-reflective 13.1334+-1.2802 13.1213+-0.8564 arguments-out-of-bounds 10.5213+-0.7523 ? 12.0098+-1.4810 ? might be 1.1415x slower arguments-strict-mode 12.1970+-0.7925 11.8354+-1.4478 might be 1.0305x faster arguments 10.2323+-1.2394 ? 10.2614+-0.7322 ? arity-mismatch-inlining 1.6891+-0.6632 1.3756+-0.3748 might be 1.2279x faster array-access-polymorphic-structure 8.6277+-0.7564 8.3217+-0.6075 might be 1.0368x faster array-nonarray-polymorhpic-access 30.2921+-3.3167 ? 30.7442+-2.2179 ? might be 1.0149x slower array-prototype-every 95.0406+-5.4376 92.4058+-3.9627 might be 1.0285x faster array-prototype-forEach 88.2726+-6.4007 ? 96.1898+-9.9557 ? might be 1.0897x slower array-prototype-map 100.6276+-3.2123 98.9584+-5.1318 might be 1.0169x faster array-prototype-reduce 91.3812+-4.6324 90.5845+-3.6118 array-prototype-reduceRight 92.8190+-6.4439 92.2511+-6.9165 array-prototype-some 91.3654+-5.1822 ? 92.7832+-3.6623 ? might be 1.0155x slower array-splice-contiguous 24.2375+-1.6907 24.1525+-1.7701 array-with-double-add 4.3652+-0.6689 4.3125+-0.6560 might be 1.0122x faster array-with-double-increment 4.0794+-0.7722 3.6741+-0.0819 might be 1.1103x faster array-with-double-mul-add 6.3271+-1.8339 5.3569+-1.1167 might be 1.1811x faster array-with-double-sum 3.9001+-0.2406 ? 4.6772+-1.0864 ? might be 1.1993x slower array-with-int32-add-sub 10.2752+-6.8176 8.6595+-1.6226 might be 1.1866x faster array-with-int32-or-double-sum 4.1864+-0.9001 ? 4.3334+-0.6231 ? might be 1.0351x slower ArrayBuffer-DataView-alloc-large-long-lived 39.6542+-3.1773 37.5927+-2.8754 might be 1.0548x faster ArrayBuffer-DataView-alloc-long-lived 16.1089+-2.5864 15.7330+-0.8014 might be 1.0239x faster ArrayBuffer-Int32Array-byteOffset 4.2131+-0.1740 4.0904+-0.1064 might be 1.0300x faster ArrayBuffer-Int8Array-alloc-large-long-lived 38.7609+-2.4383 ? 44.5329+-17.2643 ? might be 1.1489x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 24.1107+-1.1772 ? 25.8824+-1.8649 ? might be 1.0735x slower ArrayBuffer-Int8Array-alloc-long-lived 13.9533+-0.5783 ? 15.0289+-1.7568 ? might be 1.0771x slower ArrayBuffer-Int8Array-alloc 12.8304+-1.5961 11.9333+-0.8249 might be 1.0752x faster arrowfunction-call 14.5321+-0.6723 ? 14.8393+-1.8631 ? might be 1.0211x slower asmjs_bool_bug 11.1696+-3.1222 9.4725+-1.5884 might be 1.1792x faster assign-custom-setter-polymorphic 2.9991+-0.1494 ? 3.2196+-0.4345 ? might be 1.0735x slower assign-custom-setter 4.6274+-0.8786 4.0623+-0.2564 might be 1.1391x faster basic-set 12.5813+-1.8456 ? 14.5140+-3.5602 ? might be 1.1536x slower big-int-mul 4.3563+-0.8708 4.1081+-0.2095 might be 1.0604x faster boolean-test 3.6860+-0.6242 3.4259+-0.2290 might be 1.0759x faster branch-fold 6.8238+-3.0052 4.4988+-0.6125 might be 1.5168x faster branch-on-string-as-boolean 19.9884+-1.9983 ? 20.0369+-1.9213 ? by-val-generic 3.9320+-0.6752 3.8998+-0.3166 call-spread-apply 41.7561+-5.5418 40.0848+-4.3612 might be 1.0417x faster call-spread-call 31.9310+-3.2624 31.0365+-4.0177 might be 1.0288x faster captured-assignments 0.5988+-0.0779 0.5510+-0.0494 might be 1.0866x faster cast-int-to-double 6.8103+-0.7698 6.5974+-0.6656 might be 1.0323x faster cell-argument 6.6796+-0.4661 ? 6.9646+-0.8271 ? might be 1.0427x slower cfg-simplify 3.2757+-0.3511 3.2443+-0.0942 chain-getter-access 12.3108+-3.0165 10.9441+-1.3311 might be 1.1249x faster cmpeq-obj-to-obj-other 16.7913+-3.9005 16.7346+-1.5019 constant-test 5.8944+-0.3993 ? 6.1380+-0.6952 ? might be 1.0413x slower create-lots-of-functions 14.1426+-3.5787 12.4633+-1.3652 might be 1.1347x faster cse-new-array-buffer 2.9397+-0.6219 2.7506+-0.1584 might be 1.0687x faster cse-new-array 3.1695+-1.0234 ? 3.2399+-1.0480 ? might be 1.0222x slower DataView-custom-properties 42.8549+-1.3516 ? 43.6618+-3.1757 ? might be 1.0188x slower delay-tear-off-arguments-strictmode 15.3208+-0.9352 ? 15.7365+-1.6700 ? might be 1.0271x slower deltablue-varargs 267.8625+-17.3245 267.0390+-24.3979 destructuring-arguments 191.8212+-6.9507 190.5754+-3.7753 destructuring-parameters-overridden-by-function 0.6066+-0.0449 0.5900+-0.0297 might be 1.0281x faster destructuring-swap 6.0892+-0.9927 ? 6.6649+-1.4052 ? might be 1.0946x slower direct-arguments-getbyval 1.6615+-0.3668 1.5660+-0.2045 might be 1.0610x faster div-boolean-double 5.8965+-0.1081 ? 6.1749+-0.4413 ? might be 1.0472x slower div-boolean 10.1680+-1.2009 9.6143+-1.0206 might be 1.0576x faster double-get-by-val-out-of-bounds 7.1948+-1.0097 6.4126+-0.9952 might be 1.1220x faster double-pollution-getbyval 10.6680+-1.4683 ? 10.8691+-1.5967 ? might be 1.0188x slower double-pollution-putbyoffset 4.3063+-0.4449 ? 4.6799+-1.2004 ? might be 1.0867x slower double-real-use 32.7018+-4.6242 30.2910+-0.8840 might be 1.0796x faster double-to-int32-typed-array-no-inline 3.4559+-0.6277 ? 3.7660+-0.7649 ? might be 1.0897x slower double-to-int32-typed-array 3.0927+-0.6231 ? 3.2955+-0.5732 ? might be 1.0656x slower double-to-uint32-typed-array-no-inline 3.6813+-0.7266 3.3271+-0.2762 might be 1.1064x faster double-to-uint32-typed-array 3.6027+-1.8014 ? 4.4690+-3.1145 ? might be 1.2405x slower elidable-new-object-dag 46.0616+-2.4060 44.8884+-2.8840 might be 1.0261x faster elidable-new-object-roflcopter 49.6471+-9.5309 45.0931+-3.1605 might be 1.1010x faster elidable-new-object-then-call 40.3270+-2.7890 ? 41.9363+-4.3383 ? might be 1.0399x slower elidable-new-object-tree 49.4295+-1.6116 ? 51.8620+-4.5982 ? might be 1.0492x slower empty-string-plus-int 6.1376+-0.3983 ? 6.5701+-2.2346 ? might be 1.0705x slower emscripten-cube2hash 36.3400+-3.0678 ? 37.2830+-2.2345 ? might be 1.0259x slower exit-length-on-plain-object 18.4832+-1.3235 18.0537+-0.7700 might be 1.0238x faster external-arguments-getbyval 1.6087+-0.3443 ? 2.1587+-0.5383 ? might be 1.3419x slower external-arguments-putbyval 2.7083+-0.4732 2.6849+-0.2661 fixed-typed-array-storage-var-index 1.9591+-0.3454 1.7747+-0.2945 might be 1.1039x faster fixed-typed-array-storage 1.3378+-0.0924 1.2679+-0.0401 might be 1.0551x faster Float32Array-matrix-mult 5.0522+-0.8422 ? 5.0603+-0.7182 ? Float32Array-to-Float64Array-set 68.7450+-22.8895 59.6580+-6.9523 might be 1.1523x faster Float64Array-alloc-long-lived 83.5693+-6.5337 ? 83.9733+-1.2478 ? Float64Array-to-Int16Array-set 70.6727+-2.3582 ? 72.0339+-2.4060 ? might be 1.0193x slower fold-double-to-int 15.0973+-0.9419 14.3066+-0.3175 might be 1.0553x faster fold-get-by-id-to-multi-get-by-offset-rare-int 19.9352+-5.8248 15.8105+-1.5682 might be 1.2609x faster fold-get-by-id-to-multi-get-by-offset 14.7218+-2.8252 ? 15.2888+-3.2723 ? might be 1.0385x slower fold-multi-get-by-offset-to-get-by-offset 13.9758+-2.1106 13.8248+-1.0100 might be 1.0109x faster fold-multi-get-by-offset-to-poly-get-by-offset 14.2512+-2.0221 12.3198+-2.8300 might be 1.1568x faster fold-multi-put-by-offset-to-poly-put-by-offset 15.6659+-1.3433 13.5415+-2.2308 might be 1.1569x faster fold-multi-put-by-offset-to-put-by-offset 14.3495+-1.8025 ? 14.6245+-3.0537 ? might be 1.0192x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 16.5597+-3.0053 14.9126+-3.0420 might be 1.1104x faster fold-put-by-id-to-multi-put-by-offset 16.5107+-1.5485 15.8066+-1.7183 might be 1.0445x faster fold-put-by-val-with-string-to-multi-put-by-offset 16.4640+-1.6963 ? 18.1163+-2.6997 ? might be 1.1004x slower fold-put-by-val-with-symbol-to-multi-put-by-offset 16.2173+-1.9894 15.9198+-1.6543 might be 1.0187x faster fold-put-structure 13.6281+-3.6213 ? 16.5767+-4.0251 ? might be 1.2164x slower for-of-iterate-array-entries 15.6742+-2.6500 14.3891+-2.0505 might be 1.0893x faster for-of-iterate-array-keys 4.9959+-1.4511 4.6210+-0.6656 might be 1.0811x faster for-of-iterate-array-values 4.5169+-0.9433 4.2149+-0.3194 might be 1.0716x faster fround 22.2182+-2.1012 21.0994+-1.8106 might be 1.0530x faster ftl-library-inlining-dataview 69.8794+-3.5967 69.0512+-2.7342 might be 1.0120x faster ftl-library-inlining 119.0533+-3.4817 ! 126.8560+-3.6843 ! definitely 1.0655x slower function-call 14.2128+-1.5247 13.8758+-0.6586 might be 1.0243x faster function-dot-apply 3.6101+-1.8625 3.0504+-0.7365 might be 1.1835x faster function-test 3.6302+-0.7144 3.3118+-0.5919 might be 1.0961x faster function-with-eval 116.7544+-3.0031 116.3269+-5.2462 gcse-poly-get-less-obvious 23.5065+-0.6942 ? 24.3835+-1.6916 ? might be 1.0373x slower gcse-poly-get 26.3253+-2.1134 26.1524+-2.2100 gcse 4.9091+-0.8636 4.4688+-0.9980 might be 1.0985x faster get-by-id-bimorphic-check-structure-elimination-simple 3.1688+-0.4104 ? 3.3341+-0.5224 ? might be 1.0521x slower get-by-id-bimorphic-check-structure-elimination 6.8662+-2.9657 6.1813+-1.2918 might be 1.1108x faster get-by-id-chain-from-try-block 2.9219+-0.2407 ? 3.0003+-0.4904 ? might be 1.0268x slower get-by-id-check-structure-elimination 4.9960+-1.2826 ? 5.9578+-1.6069 ? might be 1.1925x slower get-by-id-proto-or-self 20.8012+-2.2818 ? 21.5683+-4.6204 ? might be 1.0369x slower get-by-id-quadmorphic-check-structure-elimination-simple 4.1259+-1.1057 3.5687+-0.5297 might be 1.1561x faster get-by-id-self-or-proto 23.5081+-5.7826 21.4516+-4.4917 might be 1.0959x faster get-by-val-out-of-bounds 6.3518+-0.9859 6.0130+-1.0505 might be 1.0563x faster get-by-val-with-string-bimorphic-check-structure-elimination-simple 3.8008+-1.0392 3.3243+-0.1684 might be 1.1433x faster get-by-val-with-string-bimorphic-check-structure-elimination 7.6279+-1.4515 ? 8.1597+-2.3339 ? might be 1.0697x slower get-by-val-with-string-chain-from-try-block 2.9922+-0.3162 ? 3.0236+-0.3998 ? might be 1.0105x slower get-by-val-with-string-check-structure-elimination 7.6725+-1.9258 ? 7.7807+-2.5061 ? might be 1.0141x slower get-by-val-with-string-proto-or-self 19.5865+-0.7640 ? 20.7912+-1.5625 ? might be 1.0615x slower get-by-val-with-string-quadmorphic-check-structure-elimination-simple 4.0721+-0.9905 4.0089+-0.9358 might be 1.0158x faster get-by-val-with-string-self-or-proto 19.1131+-1.1400 ? 20.7879+-2.5603 ? might be 1.0876x slower get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 4.3548+-1.2610 4.2513+-1.0501 might be 1.0243x faster get-by-val-with-symbol-bimorphic-check-structure-elimination 21.9029+-5.4355 19.0806+-2.9732 might be 1.1479x faster get-by-val-with-symbol-chain-from-try-block 3.1186+-0.5900 ? 3.2150+-0.7159 ? might be 1.0309x slower get-by-val-with-symbol-check-structure-elimination 16.6256+-2.7147 ? 18.9933+-2.4274 ? might be 1.1424x slower get-by-val-with-symbol-proto-or-self 20.4773+-2.3316 ? 21.0165+-1.8969 ? might be 1.0263x slower get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 5.0382+-0.9169 4.5057+-0.0728 might be 1.1182x faster get-by-val-with-symbol-self-or-proto 20.1832+-1.5601 ? 20.2076+-1.4801 ? get_callee_monomorphic 6.2636+-2.0342 4.7800+-2.0073 might be 1.3104x faster get_callee_polymorphic 3.8936+-0.3896 ? 4.2722+-0.4782 ? might be 1.0972x slower getter-no-activation 7.1222+-1.9145 ? 7.5078+-2.3194 ? might be 1.0541x slower getter-prototype 10.2951+-0.6409 ? 12.0889+-2.9739 ? might be 1.1742x slower getter-richards-try-catch 1242.8812+-35.7496 1242.6178+-35.4499 getter-richards 200.8308+-8.9591 194.1327+-11.6482 might be 1.0345x faster getter 9.3242+-1.8161 9.1617+-1.3904 might be 1.0177x faster global-object-access-with-mutating-structure 8.2823+-2.2994 7.5642+-1.2400 might be 1.0949x faster global-var-const-infer-fire-from-opt 1.0686+-0.1900 1.0070+-0.1742 might be 1.0612x faster global-var-const-infer 0.7848+-0.0156 ? 1.0837+-0.3951 ? might be 1.3809x slower hard-overflow-check-equal 35.7443+-6.7435 34.1563+-2.6116 might be 1.0465x faster hard-overflow-check 31.4619+-1.7230 ? 31.8312+-1.7808 ? might be 1.0117x slower HashMap-put-get-iterate-keys 47.6984+-9.0011 ? 47.7622+-5.5899 ? HashMap-put-get-iterate 57.6709+-13.2484 45.0625+-4.4347 might be 1.2798x faster HashMap-string-put-get-iterate 41.4940+-5.3761 39.3713+-2.9591 might be 1.0539x faster hoist-make-rope 11.8787+-2.7427 11.7645+-0.4976 hoist-poly-check-structure-effectful-loop 7.0862+-1.6785 5.0508+-0.7669 might be 1.4030x faster hoist-poly-check-structure 3.8824+-0.7567 ? 5.3078+-3.5101 ? might be 1.3672x slower imul-double-only 8.4606+-0.9320 ? 9.2445+-1.5363 ? might be 1.0927x slower imul-int-only 9.5415+-0.9796 ? 9.6520+-0.7287 ? might be 1.0116x slower imul-mixed 8.6020+-1.0672 8.2277+-0.9299 might be 1.0455x faster in-four-cases 23.7056+-3.8558 23.4890+-2.7253 in-one-case-false 15.7461+-2.8188 ? 15.7735+-2.7830 ? in-one-case-true 13.9148+-2.5707 ? 14.3130+-1.9613 ? might be 1.0286x slower in-two-cases 15.6825+-3.3227 ? 16.5938+-4.2254 ? might be 1.0581x slower indexed-properties-in-objects 3.6268+-0.4054 ? 3.6445+-0.7032 ? infer-closure-const-then-mov-no-inline 6.1419+-1.1994 ? 7.7558+-2.6835 ? might be 1.2628x slower infer-closure-const-then-mov 22.8818+-0.8594 22.6408+-1.1994 might be 1.0106x faster infer-closure-const-then-put-to-scope-no-inline 13.9560+-1.7796 12.9225+-0.1682 might be 1.0800x faster infer-closure-const-then-put-to-scope 27.0680+-0.8590 26.9426+-1.8298 infer-closure-const-then-reenter-no-inline 64.7584+-12.4782 58.9113+-3.4553 might be 1.0993x faster infer-closure-const-then-reenter 27.7145+-1.4907 ? 28.0730+-1.6922 ? might be 1.0129x slower infer-constant-global-property 4.6847+-1.5657 4.1159+-0.4145 might be 1.1382x faster infer-constant-property 3.2574+-0.2329 ? 3.7216+-0.9206 ? might be 1.1425x slower infer-one-time-closure-ten-vars 10.4268+-3.0897 9.4148+-1.1455 might be 1.1075x faster infer-one-time-closure-two-vars 8.6058+-0.5374 ? 9.2443+-1.1028 ? might be 1.0742x slower infer-one-time-closure 10.6359+-4.0511 8.1765+-0.2381 might be 1.3008x faster infer-one-time-deep-closure 12.7801+-0.9758 12.7554+-0.6654 inline-arguments-access 5.3028+-1.1118 ? 6.0662+-1.5737 ? might be 1.1440x slower inline-arguments-aliased-access 4.8176+-0.3715 ? 5.7518+-2.1220 ? might be 1.1939x slower inline-arguments-local-escape 4.7526+-0.0911 ? 4.9174+-0.3962 ? might be 1.0347x slower inline-get-scoped-var 7.2576+-2.4736 7.2050+-1.5798 inlined-put-by-id-transition 14.9880+-6.3224 11.9542+-0.4632 might be 1.2538x faster inlined-put-by-val-with-string-transition 51.8278+-3.2374 ? 53.6451+-5.8838 ? might be 1.0351x slower inlined-put-by-val-with-symbol-transition 50.4982+-2.2549 ? 53.0722+-5.6634 ? might be 1.0510x slower int-or-other-abs-then-get-by-val 6.0291+-1.1204 ? 6.1993+-0.6023 ? might be 1.0282x slower int-or-other-abs-zero-then-get-by-val 19.7368+-5.7901 18.2181+-1.2142 might be 1.0834x faster int-or-other-add-then-get-by-val 6.3996+-1.4823 ? 7.1849+-1.2560 ? might be 1.1227x slower int-or-other-add 6.3557+-0.8420 ? 6.7353+-0.5775 ? might be 1.0597x slower int-or-other-div-then-get-by-val 5.5009+-1.0693 5.3097+-1.0824 might be 1.0360x faster int-or-other-max-then-get-by-val 5.8569+-0.9469 ? 6.2317+-1.6067 ? might be 1.0640x slower int-or-other-min-then-get-by-val 5.2492+-1.1604 ? 6.1284+-1.1317 ? might be 1.1675x slower int-or-other-mod-then-get-by-val 4.3077+-0.6987 ? 5.4359+-1.4558 ? might be 1.2619x slower int-or-other-mul-then-get-by-val 4.8287+-1.0706 ? 7.5611+-3.0931 ? might be 1.5659x slower int-or-other-neg-then-get-by-val 6.1499+-1.5517 ? 6.2177+-0.8126 ? might be 1.0110x slower int-or-other-neg-zero-then-get-by-val 18.0262+-0.6763 ? 19.7896+-1.8511 ? might be 1.0978x slower int-or-other-sub-then-get-by-val 7.4366+-1.4071 ? 7.7732+-1.1376 ? might be 1.0453x slower int-or-other-sub 6.1977+-0.6861 6.0438+-2.0940 might be 1.0255x faster int-overflow-local 6.4847+-1.3498 5.5479+-1.2244 might be 1.1689x faster Int16Array-alloc-long-lived 58.5799+-4.2971 ? 58.9682+-2.6251 ? Int16Array-bubble-sort-with-byteLength 21.1222+-2.4401 ? 24.5389+-8.2542 ? might be 1.1618x slower Int16Array-bubble-sort 20.4086+-1.2435 19.6825+-0.8089 might be 1.0369x faster Int16Array-load-int-mul 1.7616+-0.0786 ? 1.8093+-0.2138 ? might be 1.0271x slower Int16Array-to-Int32Array-set 62.0201+-22.3611 53.8016+-1.5042 might be 1.1528x faster Int32Array-alloc-large 13.6356+-1.6090 ? 16.3467+-5.5806 ? might be 1.1988x slower Int32Array-alloc-long-lived 66.5599+-2.8152 ? 67.5088+-2.8788 ? might be 1.0143x slower Int32Array-alloc 4.1723+-0.7296 3.4624+-0.2349 might be 1.2051x faster Int32Array-Int8Array-view-alloc 8.6296+-2.2826 7.6982+-1.2020 might be 1.1210x faster int52-spill 7.4375+-1.1003 6.5920+-1.5140 might be 1.1283x faster Int8Array-alloc-long-lived 50.7658+-2.7102 ? 52.4792+-4.6957 ? might be 1.0338x slower Int8Array-load-with-byteLength 4.1782+-0.3227 ? 5.3703+-3.4051 ? might be 1.2853x slower Int8Array-load 4.4186+-1.2591 ? 4.5857+-0.7750 ? might be 1.0378x slower integer-divide 13.5564+-1.5596 ? 13.9095+-1.6759 ? might be 1.0260x slower integer-modulo 2.1329+-0.3103 ? 2.2568+-0.7566 ? might be 1.0581x slower is-boolean-fold-tricky 5.5366+-1.5268 ? 5.7369+-2.8663 ? might be 1.0362x slower is-boolean-fold 3.1965+-0.3128 ? 3.6216+-0.6532 ? might be 1.1330x slower is-function-fold-tricky-internal-function 12.0550+-2.1563 11.3844+-0.5452 might be 1.0589x faster is-function-fold-tricky 4.7526+-0.3838 ? 5.6389+-1.3444 ? might be 1.1865x slower is-function-fold 3.3512+-0.4227 ? 3.5350+-0.7413 ? might be 1.0548x slower is-number-fold-tricky 4.7887+-0.7259 ? 5.0957+-0.8460 ? might be 1.0641x slower is-number-fold 3.2058+-0.2502 ? 3.6827+-0.8422 ? might be 1.1488x slower is-object-or-null-fold-functions 3.5290+-0.4214 ? 3.7332+-0.9493 ? might be 1.0579x slower is-object-or-null-fold-less-tricky 5.3361+-1.3278 5.2136+-0.9508 might be 1.0235x faster is-object-or-null-fold-tricky 7.3232+-2.0012 ? 9.6758+-4.5893 ? might be 1.3213x slower is-object-or-null-fold 3.5148+-0.7807 3.5123+-0.4357 is-object-or-null-trickier-function 5.5463+-1.2488 5.2811+-1.1518 might be 1.0502x faster is-object-or-null-trickier-internal-function 12.0293+-0.8278 ? 14.3814+-2.8158 ? might be 1.1955x slower is-object-or-null-tricky-function 4.4550+-0.0689 ? 5.5032+-1.4835 ? might be 1.2353x slower is-object-or-null-tricky-internal-function 9.5120+-0.8195 ? 10.4277+-2.3861 ? might be 1.0963x slower is-string-fold-tricky 4.3864+-0.0969 ? 4.6247+-0.3321 ? might be 1.0543x slower is-string-fold 3.4943+-0.7704 3.4475+-0.3937 might be 1.0136x faster is-undefined-fold-tricky 5.0994+-1.5698 3.8834+-0.1351 might be 1.3131x faster is-undefined-fold 3.6203+-1.1356 ? 3.9993+-1.2632 ? might be 1.1047x slower JSONP-negative-0 0.3767+-0.1075 0.3192+-0.0204 might be 1.1802x faster large-int-captured 4.9688+-0.6583 ? 5.6702+-0.8999 ? might be 1.1412x slower large-int-neg 15.9819+-0.3858 ? 16.4686+-1.3956 ? might be 1.0305x slower large-int 16.8901+-1.5257 16.5316+-2.1187 might be 1.0217x faster load-varargs-elimination 24.4835+-1.1768 ? 26.2004+-3.3475 ? might be 1.0701x slower logical-not-weird-types 3.5751+-0.1124 ? 4.5943+-2.4886 ? might be 1.2851x slower logical-not 6.3470+-1.4201 ? 7.5861+-1.3556 ? might be 1.1952x slower lots-of-fields 10.6022+-0.2685 ? 11.4555+-1.0763 ? might be 1.0805x slower make-indexed-storage 3.4838+-0.3515 ? 4.2526+-0.8423 ? might be 1.2207x slower make-rope-cse 5.8835+-1.5860 4.9039+-0.6121 might be 1.1998x faster marsaglia-larger-ints 42.5995+-7.0995 ? 43.6762+-9.0233 ? might be 1.0253x slower marsaglia-osr-entry 24.5894+-0.6633 ? 25.5103+-2.3808 ? might be 1.0375x slower math-with-out-of-bounds-array-values 25.4178+-0.8816 25.1235+-0.8545 might be 1.0117x faster max-boolean 3.7402+-0.7873 3.4768+-0.6475 might be 1.0758x faster method-on-number 19.5940+-2.3430 ? 20.8261+-6.9094 ? might be 1.0629x slower min-boolean 3.0273+-0.0590 ! 4.0583+-0.8145 ! definitely 1.3406x slower minus-boolean-double 3.6335+-0.2503 ? 3.8678+-0.5360 ? might be 1.0645x slower minus-boolean 3.3915+-0.8480 2.9683+-0.3769 might be 1.1425x faster misc-strict-eq 37.2918+-9.6800 36.2505+-2.6142 might be 1.0287x faster mod-boolean-double 12.8919+-0.4664 ? 13.3526+-1.8008 ? might be 1.0357x slower mod-boolean 9.7248+-0.6740 9.3385+-0.1632 might be 1.0414x faster mul-boolean-double 4.1937+-0.3637 ? 4.2830+-0.2923 ? might be 1.0213x slower mul-boolean 3.3385+-0.2396 3.2567+-0.1649 might be 1.0251x faster neg-boolean 4.5164+-2.4992 3.5685+-0.2155 might be 1.2656x faster negative-zero-divide 0.4460+-0.0464 0.4447+-0.0349 negative-zero-modulo 0.7352+-0.3087 0.4299+-0.0210 might be 1.7103x faster negative-zero-negate 0.4395+-0.1003 0.4240+-0.0211 might be 1.0367x faster nested-function-parsing 48.9664+-1.3922 ? 49.5869+-1.7837 ? might be 1.0127x slower new-array-buffer-dead 119.6619+-10.4698 114.1248+-3.0090 might be 1.0485x faster new-array-buffer-push 7.7045+-0.9505 7.2501+-0.2420 might be 1.0627x faster new-array-dead 19.2527+-1.2307 ? 20.1227+-3.0348 ? might be 1.0452x slower new-array-push 5.9932+-1.6118 ? 6.5101+-2.3579 ? might be 1.0862x slower no-inline-constructor 43.8985+-6.4951 39.5758+-1.9301 might be 1.1092x faster number-test 3.7290+-1.0215 3.6562+-0.6008 might be 1.0199x faster object-closure-call 6.4699+-0.9468 ? 7.0368+-0.4394 ? might be 1.0876x slower object-get-own-property-symbols-on-large-array 4.2842+-0.1533 4.1874+-0.0346 might be 1.0231x faster object-test 3.4612+-0.6003 ? 3.5532+-0.9465 ? might be 1.0266x slower obvious-sink-pathology-taken 129.7755+-3.5898 ? 131.6597+-2.8979 ? might be 1.0145x slower obvious-sink-pathology 126.1809+-2.9668 123.7904+-3.1582 might be 1.0193x faster obviously-elidable-new-object 37.0595+-2.7401 36.4898+-1.9018 might be 1.0156x faster plus-boolean-arith 2.8695+-0.2252 ? 3.0319+-0.5422 ? might be 1.0566x slower plus-boolean-double 3.5885+-0.1729 ? 3.8045+-0.4831 ? might be 1.0602x slower plus-boolean 2.9089+-0.0894 ? 3.1973+-0.4773 ? might be 1.0991x slower poly-chain-access-different-prototypes-simple 3.1358+-0.2208 ? 3.2705+-0.5449 ? might be 1.0430x slower poly-chain-access-different-prototypes 3.1493+-0.1736 ? 4.2605+-1.3412 ? might be 1.3528x slower poly-chain-access-simpler 3.6064+-0.5996 3.4763+-0.4973 might be 1.0374x faster poly-chain-access 3.2400+-0.4405 ? 3.2416+-0.4607 ? poly-stricteq 60.2886+-2.6892 ? 63.3138+-1.9695 ? might be 1.0502x slower polymorphic-array-call 1.4788+-0.2467 ? 1.6379+-0.2693 ? might be 1.1076x slower polymorphic-get-by-id 3.9628+-1.1330 3.5643+-0.5743 might be 1.1118x faster polymorphic-put-by-id 34.6536+-2.3863 ? 36.8955+-6.1611 ? might be 1.0647x slower polymorphic-put-by-val-with-string 44.7779+-16.4925 34.9939+-2.7838 might be 1.2796x faster polymorphic-put-by-val-with-symbol 34.8880+-1.4611 34.6037+-3.4965 polymorphic-structure 15.3102+-0.9071 ? 17.2335+-5.3120 ? might be 1.1256x slower polyvariant-monomorphic-get-by-id 8.9956+-0.7068 ? 12.3693+-5.1931 ? might be 1.3750x slower proto-getter-access 11.3647+-1.0794 11.0922+-0.7050 might be 1.0246x faster prototype-access-with-mutating-prototype 7.9947+-1.7418 ? 8.7474+-2.2969 ? might be 1.0942x slower put-by-id-replace-and-transition 9.2940+-0.7016 ? 9.4744+-0.8043 ? might be 1.0194x slower put-by-id-slightly-polymorphic 3.3505+-0.2347 ? 3.6783+-1.2055 ? might be 1.0978x slower put-by-id 14.0092+-0.8240 ? 15.2280+-1.8780 ? might be 1.0870x slower put-by-val-direct 0.5402+-0.2304 0.4906+-0.1453 might be 1.1010x faster put-by-val-large-index-blank-indexing-type 7.4585+-2.0220 6.6030+-0.6958 might be 1.1296x faster put-by-val-machine-int 3.2015+-0.7781 ? 3.2731+-0.9274 ? might be 1.0224x slower put-by-val-with-string-replace-and-transition 16.4591+-2.4266 ? 18.0131+-4.3114 ? might be 1.0944x slower put-by-val-with-string-slightly-polymorphic 3.6077+-0.7454 ? 4.0482+-0.8934 ? might be 1.1221x slower put-by-val-with-string 15.9558+-1.0940 ^ 13.9567+-0.7299 ^ definitely 1.1432x faster put-by-val-with-symbol-replace-and-transition 16.7681+-3.0372 16.3894+-2.7084 might be 1.0231x faster put-by-val-with-symbol-slightly-polymorphic 3.8965+-0.9268 ? 3.9806+-0.6547 ? might be 1.0216x slower put-by-val-with-symbol 14.9666+-0.8024 ? 16.8523+-3.8785 ? might be 1.1260x slower rare-osr-exit-on-local 18.1656+-3.5616 16.8573+-2.0432 might be 1.0776x faster raytrace-with-empty-try-catch 7.1583+-1.7677 ? 7.7989+-1.9320 ? might be 1.0895x slower raytrace-with-try-catch 15.2334+-2.1651 13.8075+-1.2056 might be 1.1033x faster register-pressure-from-osr 19.2770+-0.7019 ? 20.6706+-3.0384 ? might be 1.0723x slower repeat-multi-get-by-offset 27.2705+-2.5017 ? 27.4728+-0.8819 ? richards-empty-try-catch 86.1824+-2.7987 ? 87.4340+-5.0519 ? might be 1.0145x slower richards-try-catch 285.6747+-3.9942 ? 286.9102+-2.3881 ? setter-prototype 10.8942+-1.4382 10.0138+-0.7309 might be 1.0879x faster setter 8.9319+-1.2444 ? 9.4237+-2.1829 ? might be 1.0551x slower simple-activation-demo 29.3108+-1.3528 ? 30.4751+-2.4290 ? might be 1.0397x slower simple-getter-access 13.3640+-0.4034 13.3635+-0.2563 simple-poly-call-nested 10.4770+-0.9545 ? 10.9633+-1.0246 ? might be 1.0464x slower simple-poly-call 1.7023+-0.1262 ? 1.8863+-0.5894 ? might be 1.1081x slower sin-boolean 23.6318+-2.4549 23.0167+-2.3781 might be 1.0267x faster singleton-scope 79.2783+-2.9334 77.6946+-2.5750 might be 1.0204x faster sink-function 13.2144+-1.5041 12.8187+-0.8834 might be 1.0309x faster sink-huge-activation 22.2880+-3.4253 19.2397+-2.3171 might be 1.1584x faster sinkable-new-object-dag 75.3265+-4.2163 73.9743+-4.9450 might be 1.0183x faster sinkable-new-object-taken 55.3212+-3.5036 54.3742+-5.2801 might be 1.0174x faster sinkable-new-object 37.3565+-2.3115 ? 37.5342+-1.0566 ? slow-array-profile-convergence 3.4049+-0.6458 3.2125+-0.5463 might be 1.0599x faster slow-convergence 3.4221+-0.7563 3.3685+-0.6137 might be 1.0159x faster slow-ternaries 23.8924+-3.2531 23.4130+-8.5864 might be 1.0205x faster sorting-benchmark 28.4791+-16.0281 22.2360+-2.6819 might be 1.2808x faster sparse-conditional 1.6618+-0.2881 ? 2.2402+-0.9773 ? might be 1.3480x slower splice-to-remove 14.6941+-1.2225 ? 17.2865+-4.3997 ? might be 1.1764x slower string-char-code-at 15.4658+-0.8843 ? 17.5844+-5.8374 ? might be 1.1370x slower string-concat-object 2.8556+-0.3385 ? 4.9363+-5.2124 ? might be 1.7286x slower string-concat-pair-object 3.4610+-1.4661 2.9299+-0.7505 might be 1.1813x faster string-concat-pair-simple 13.4889+-2.6009 ? 15.9122+-6.3180 ? might be 1.1796x slower string-concat-simple 11.9072+-1.1801 ? 12.9143+-1.4442 ? might be 1.0846x slower string-cons-repeat 9.8721+-2.0106 9.8662+-1.5191 string-cons-tower 8.4577+-0.4953 ? 8.5685+-0.5033 ? might be 1.0131x slower string-equality 20.9603+-7.9558 18.3456+-1.6790 might be 1.1425x faster string-get-by-val-big-char 9.1925+-2.2089 ? 9.9327+-2.0321 ? might be 1.0805x slower string-get-by-val-out-of-bounds-insane 3.8319+-0.1728 ? 4.2243+-0.7843 ? might be 1.1024x slower string-get-by-val-out-of-bounds 5.6901+-2.4328 5.0634+-0.8495 might be 1.1238x faster string-get-by-val 3.2386+-0.1909 ? 3.5632+-0.4539 ? might be 1.1002x slower string-hash 2.5638+-0.1302 ? 2.7035+-0.4591 ? might be 1.0545x slower string-long-ident-equality 16.0129+-1.8155 14.8130+-0.8250 might be 1.0810x faster string-out-of-bounds 13.1980+-1.4655 12.8411+-1.7856 might be 1.0278x faster string-repeat-arith 32.1906+-1.1332 31.5402+-1.3889 might be 1.0206x faster string-sub 72.9679+-13.8795 65.6990+-2.6642 might be 1.1106x faster string-test 3.8282+-1.6694 3.4432+-0.4859 might be 1.1118x faster string-var-equality 31.3517+-3.2981 ? 33.6056+-8.9036 ? might be 1.0719x slower structure-hoist-over-transitions 3.0378+-0.6805 ? 3.1342+-0.7947 ? might be 1.0317x slower substring-concat-weird 44.2711+-3.7664 ? 48.8083+-8.8511 ? might be 1.1025x slower substring-concat 49.6333+-3.5925 ? 49.9080+-3.1039 ? substring 55.2603+-2.9753 54.6755+-3.0646 might be 1.0107x faster switch-char-constant 4.1168+-1.6594 3.1516+-0.2914 might be 1.3063x faster switch-char 10.9067+-1.7585 10.5398+-1.9221 might be 1.0348x faster switch-constant 10.6917+-1.8847 10.6295+-1.8940 switch-string-basic-big-var 19.2610+-3.8103 17.7867+-1.3249 might be 1.0829x faster switch-string-basic-big 21.9043+-8.9834 18.6335+-4.5884 might be 1.1755x faster switch-string-basic-var 15.9853+-0.9475 15.8154+-0.6927 might be 1.0107x faster switch-string-basic 15.6685+-2.6094 15.6246+-1.6816 switch-string-big-length-tower-var 23.0103+-2.0603 21.8845+-2.7244 might be 1.0514x faster switch-string-length-tower-var 15.3846+-1.0096 ? 15.9203+-1.4130 ? might be 1.0348x slower switch-string-length-tower 13.7025+-0.7883 ? 14.6946+-1.8813 ? might be 1.0724x slower switch-string-short 14.5695+-2.8006 ? 16.4755+-8.2200 ? might be 1.1308x slower switch 13.8559+-2.0056 13.0670+-1.1611 might be 1.0604x faster tear-off-arguments-simple 4.5723+-1.4280 4.4302+-0.9406 might be 1.0321x faster tear-off-arguments 7.2111+-1.4432 5.9061+-0.6373 might be 1.2210x faster temporal-structure 13.8045+-1.3134 ? 14.5157+-1.8703 ? might be 1.0515x slower to-int32-boolean 15.0218+-0.2526 14.6416+-0.2191 might be 1.0260x faster try-catch-get-by-val-cloned-arguments 11.7485+-1.0843 11.4011+-0.8722 might be 1.0305x faster try-catch-get-by-val-direct-arguments 2.7203+-0.5755 ? 2.8470+-0.5099 ? might be 1.0466x slower try-catch-get-by-val-scoped-arguments 6.7515+-2.0506 5.7097+-0.7092 might be 1.1825x faster typed-array-get-set-by-val-profiling 34.5321+-1.3548 ? 36.6861+-4.1236 ? might be 1.0624x slower undefined-property-access 266.4876+-3.1010 263.7874+-7.6325 might be 1.0102x faster undefined-test 3.6436+-0.4503 3.5198+-0.2718 might be 1.0352x faster unprofiled-licm 11.5347+-1.3647 11.0550+-0.8644 might be 1.0434x faster v8-raytrace-with-empty-try-catch 32.2491+-5.8774 ? 36.6505+-17.7096 ? might be 1.1365x slower v8-raytrace-with-try-catch 84.1420+-7.8161 78.3025+-6.0384 might be 1.0746x faster varargs-call 18.0503+-1.5903 17.3894+-0.9146 might be 1.0380x faster varargs-construct-inline 27.7101+-1.9033 ? 28.9854+-2.1822 ? might be 1.0460x slower varargs-construct 27.2606+-3.1525 ? 27.6930+-3.9960 ? might be 1.0159x slower varargs-inline 10.6984+-1.0801 ? 10.9133+-1.2238 ? might be 1.0201x slower varargs-strict-mode 12.6183+-1.3386 ? 14.2194+-2.6030 ? might be 1.1269x slower varargs 11.5701+-0.4274 ? 13.8157+-4.4387 ? might be 1.1941x slower weird-inlining-const-prop 2.8405+-0.2652 ? 4.5610+-3.7152 ? might be 1.6057x slower <geometric> 10.6200+-0.0712 ? 10.6508+-0.1309 ? might be 1.0029x slower og ICChanges Geomean of preferred means: <scaled-result> 33.6126+-0.4991 ? 33.6912+-0.5233 ? might be 1.0023x slower
Saam Barati
Comment 10 2015-10-06 16:08:05 PDT
WebKit Commit Bot
Comment 11 2015-10-06 16:10:51 PDT
Attachment 262553 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:171: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:715: Declaration has space between type name and * in numberOfRegsForCall * sizeof [whitespace/declaration] [3] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:778: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:870: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1345: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:100: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:231: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:263: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:265: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:103: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:104: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:105: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] Total errors found: 13 in 43 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 12 2015-10-06 17:16:05 PDT
Comment on attachment 262553 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=262553&action=review > Source/JavaScriptCore/jsc.cpp:335 > + CustomGetter* getter = new (NotNull, allocateCell<CustomGetter>(vm.heap, sizeof(CustomGetter))) CustomGetter(vm, structure); I'm missing a finishCreation() call here that I've added locally.
Filip Pizlo
Comment 13 2015-10-07 11:46:21 PDT
Comment on attachment 262553 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=262553&action=review > Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1387 > + m_stubRoutine = createJITStubRoutine(code, vm, codeBlock->ownerExecutable(), doesCalls, nullptr, > + state.isExceptionHandlingCallSite() ? codeBlock : nullptr, state.isExceptionHandlingCallSite() ? state.callSiteIndexForExceptionHandling() : state.originalCallSiteIndex()); It's a bit weird that this may return a stub routine whose destructor is only correct for the DFG (since it asks for DFGCommonData), and yet there is nothing in this call that obviously protects against a baseline CodeBlock getting one of those stub routines. It appears that this relies on the fact that m_isExceptionHandlingCallSite will happen to not get set, because there won't be any registers to restore. That feels a bit shady. It seems like either you should have sooner assertions that this isn't happening, or you should structure this code in such a way that a Baseline CodeBlock never gets one of the DFG-only stub routines, and then assert that for baseline CodeBlocks, you also don't have registers to restore.
Saam Barati
Comment 14 2015-10-07 16:54:10 PDT
Created attachment 262657 [details] patch Reflected Fil's comments both by adding assertions, structuring some code better, and by giving a few things better names.
Saam Barati
Comment 15 2015-10-07 17:06:48 PDT
Created attachment 262659 [details] patch Fix an assertion failure that was invalid.
Saam Barati
Comment 16 2015-10-07 18:31:54 PDT
WebKit Commit Bot
Comment 17 2015-10-07 18:34:36 PDT
Attachment 262664 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:712: Declaration has space between type name and * in numberOfRegsForCall * sizeof [whitespace/declaration] [3] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:775: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:867: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1342: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:61: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:99: The parameter name "value" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:231: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:263: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/ScratchRegisterAllocator.cpp:265: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:103: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:104: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp:105: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] Total errors found: 12 in 43 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 18 2015-10-08 12:32:36 PDT
Comment on attachment 262664 [details] patch Fil reviewed this in person. In his words: "LGTM"
Saam Barati
Comment 19 2015-10-08 12:38:33 PDT
Csaba Osztrogonác
Comment 20 2015-10-08 13:53:42 PDT
(In reply to comment #19) > landed in: > http://trac.webkit.org/changeset/190735 It broke the CLOOP build.
Saam Barati
Comment 21 2015-10-08 14:22:06 PDT
(In reply to comment #20) > (In reply to comment #19) > > landed in: > > http://trac.webkit.org/changeset/190735 > > It broke the CLOOP build. Fixed in: http://trac.webkit.org/changeset/190741
Brent Fulgham
Comment 22 2015-10-12 11:17:06 PDT
This change seems to have introduced four Windows test regressions: fast/events/tabindex-focus-blur-all.html imported/w3c/web-platform-tests/dom/ranges/Range-insertNode.html imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents.html js/dom/dfg-custom-getter.html Can you please take a look?
Joseph Pecoraro
Comment 23 2015-10-12 16:35:49 PDT
I'm seeing occasional crashes recording timelines with Web Inspector: <https://webkit.org/b/150062> CRASH under ~GCAwareJITStubRoutineWithExceptionHandler recording timelines with Web Inspector
Csaba Osztrogonác
Comment 24 2015-11-17 02:37:55 PST
Comment on attachment 262664 [details] patch Cleared review? from attachment 262664 [details] so that this bug does not appear in http://webkit.org/pending-review. If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).
Note You need to log in before you can comment on or make changes to this bug.