WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 149601
We should be able to inline getter/setter calls inside an inline cache even when the SpillRegistersMode is NeedsToSpill
https://bugs.webkit.org/show_bug.cgi?id=149601
Summary
We should be able to inline getter/setter calls inside an inline cache even w...
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
Details
Formatted Diff
Diff
WIP
(19.26 KB, patch)
2015-09-29 19:14 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(75.08 KB, patch)
2015-10-04 13:57 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(87.89 KB, patch)
2015-10-04 17:02 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(86.76 KB, patch)
2015-10-04 17:36 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(102.70 KB, patch)
2015-10-06 16:08 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(103.54 KB, patch)
2015-10-07 16:54 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(103.46 KB, patch)
2015-10-07 17:06 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(103.49 KB, patch)
2015-10-07 18:31 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
Show Obsolete
(9)
View All
Add attachment
proposed patch, testcase, etc.
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
Created
attachment 262410
[details]
patch
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
Created
attachment 262411
[details]
patch
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
Created
attachment 262553
[details]
patch
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
Created
attachment 262664
[details]
patch
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
landed in:
http://trac.webkit.org/changeset/190735
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.
Top of Page
Format For Printing
XML
Clone This Bug