RESOLVED FIXED 143807
Extract the allocation profile from JSFunction into a rare object
https://bugs.webkit.org/show_bug.cgi?id=143807
Summary Extract the allocation profile from JSFunction into a rare object
Basile Clement
Reported 2015-04-15 17:24:05 PDT
Patch forthcoming.
Attachments
Patch (37.81 KB, patch)
2015-04-15 17:26 PDT, Basile Clement
no flags
Fixed patch (40.54 KB, patch)
2015-04-15 19:05 PDT, Basile Clement
no flags
Remove additional GPR (40.18 KB, patch)
2015-04-16 10:24 PDT, Basile Clement
no flags
Hopefully final patch (40.01 KB, patch)
2015-04-16 10:32 PDT, Basile Clement
fpizlo: review+
fpizlo: commit-queue-
Fix style issues (41.00 KB, patch)
2015-04-16 11:09 PDT, Basile Clement
no flags
Basile Clement
Comment 1 2015-04-15 17:26:08 PDT
Basile Clement
Comment 2 2015-04-15 17:26:45 PDT
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3). VMs tested: "Conf#1" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r182860) "Conf#2" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r182860) 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. Conf#1 Conf#2 SunSpider: 3d-cube 4.3513+-0.1785 4.3360+-0.1592 3d-morph 5.4240+-0.2413 5.3956+-0.1235 3d-raytrace 5.3105+-0.1665 ? 5.3206+-0.2631 ? access-binary-trees 2.1284+-0.2883 2.0650+-0.1657 might be 1.0307x faster access-fannkuch 5.2994+-0.1189 ^ 5.1220+-0.0457 ^ definitely 1.0346x faster access-nbody 2.6285+-0.1909 2.6151+-0.1385 access-nsieve 3.3890+-0.1249 3.3334+-0.1385 might be 1.0167x faster bitops-3bit-bits-in-byte 1.4627+-0.0548 ? 1.4956+-0.1999 ? might be 1.0225x slower bitops-bits-in-byte 3.2333+-0.0620 ? 3.2732+-0.1676 ? might be 1.0123x slower bitops-bitwise-and 2.1891+-0.1071 ? 2.2299+-0.2655 ? might be 1.0186x slower bitops-nsieve-bits 3.4100+-0.1431 3.3588+-0.0775 might be 1.0152x faster controlflow-recursive 2.0201+-0.1349 1.9712+-0.2311 might be 1.0249x faster crypto-aes 3.6953+-0.2613 ? 3.8790+-0.5430 ? might be 1.0497x slower crypto-md5 2.1340+-0.0327 ? 2.1982+-0.0638 ? might be 1.0301x slower crypto-sha1 2.4345+-0.0927 2.4067+-0.0722 might be 1.0115x faster date-format-tofte 7.0014+-0.4243 7.0010+-0.2992 date-format-xparb 5.1174+-0.5043 5.0167+-0.2513 might be 1.0201x faster math-cordic 2.8093+-0.0494 ? 2.9795+-0.3261 ? might be 1.0606x slower math-partial-sums 4.9482+-0.5678 4.5165+-0.1615 might be 1.0956x faster math-spectral-norm 1.8149+-0.1162 ? 1.9406+-0.2506 ? might be 1.0693x slower regexp-dna 6.3341+-0.2084 ? 6.7853+-0.2775 ? might be 1.0712x slower string-base64 4.0452+-0.1517 ? 4.2826+-0.1629 ? might be 1.0587x slower string-fasta 6.0740+-0.1815 5.9692+-0.2017 might be 1.0176x faster string-tagcloud 8.9479+-0.5924 8.8315+-0.2544 might be 1.0132x faster string-unpack-code 20.0675+-1.0627 19.7247+-1.5502 might be 1.0174x faster string-validate-input 4.4497+-0.0519 ? 4.5726+-0.2648 ? might be 1.0276x slower <arithmetic> 4.6431+-0.0687 4.6393+-0.0905 might be 1.0008x faster Conf#1 Conf#2 LongSpider: 3d-cube 805.9812+-21.1292 ? 813.0506+-11.1882 ? 3d-morph 1552.0595+-9.2674 ? 1560.3653+-9.6951 ? 3d-raytrace 677.2637+-13.8804 ? 679.2043+-9.6171 ? access-binary-trees 852.5469+-8.2149 850.5845+-10.6724 access-fannkuch 268.2402+-4.9708 ? 268.8646+-8.1638 ? access-nbody 561.8849+-3.9658 559.1225+-5.5987 access-nsieve 654.4847+-9.7351 ? 663.2570+-24.9499 ? might be 1.0134x slower bitops-3bit-bits-in-byte 41.9596+-1.1038 41.4735+-1.0046 might be 1.0117x faster bitops-bits-in-byte 85.4745+-5.5203 ? 87.4890+-4.2883 ? might be 1.0236x slower bitops-nsieve-bits 682.3320+-5.7989 ? 685.3353+-8.4696 ? controlflow-recursive 468.8551+-7.7111 ? 475.3370+-10.7655 ? might be 1.0138x slower crypto-aes 557.6466+-16.6942 ? 558.5888+-11.1633 ? crypto-md5 543.4281+-11.1941 ? 544.2752+-15.7457 ? crypto-sha1 584.4222+-18.9099 ? 601.1943+-22.1867 ? might be 1.0287x slower date-format-tofte 535.7275+-5.1229 524.5095+-12.2826 might be 1.0214x faster date-format-xparb 671.3372+-41.2631 648.0869+-18.9281 might be 1.0359x faster math-cordic 523.4803+-14.0231 519.3766+-10.0796 math-partial-sums 430.4116+-6.2189 ? 433.1621+-5.9940 ? math-spectral-norm 573.9135+-8.8926 ? 574.4497+-7.6372 ? string-base64 320.3403+-3.4645 ? 320.4820+-1.5651 ? string-fasta 391.5900+-3.5560 389.6848+-7.2312 string-tagcloud 206.1483+-11.5628 ? 207.6641+-8.3331 ? <geometric> 443.8034+-3.4514 ? 444.4876+-2.3120 ? might be 1.0015x slower Conf#1 Conf#2 V8Spider: crypto 51.7504+-1.8540 ? 52.7356+-2.2131 ? might be 1.0190x slower deltablue 85.6441+-8.3407 78.0389+-7.2471 might be 1.0975x faster earley-boyer 38.3156+-1.3167 ? 39.1658+-0.9573 ? might be 1.0222x slower raytrace 31.5426+-1.3368 31.4274+-0.8680 regexp 59.2784+-2.6065 ? 60.9765+-4.2955 ? might be 1.0286x slower richards 73.1881+-3.1756 71.2199+-4.3579 might be 1.0276x faster splay 35.2180+-2.1385 35.0353+-3.2324 <geometric> 50.2885+-1.2212 49.8388+-1.4047 might be 1.0090x faster Conf#1 Conf#2 Octane: encrypt 0.20917+-0.00291 ^ 0.20275+-0.00312 ^ definitely 1.0316x faster decrypt 3.63869+-0.21103 ? 3.70599+-0.05919 ? might be 1.0185x slower deltablue x2 0.16576+-0.00505 0.16545+-0.00328 earley 0.48861+-0.00667 ^ 0.47382+-0.00452 ^ definitely 1.0312x faster boyer 5.76205+-0.43739 5.73269+-0.19125 navier-stokes x2 5.24776+-0.06561 5.21805+-0.03738 raytrace x2 1.04842+-0.04976 ? 1.09179+-0.04619 ? might be 1.0414x slower richards x2 0.09695+-0.00279 0.09545+-0.00107 might be 1.0158x faster splay x2 0.34778+-0.00360 0.34488+-0.00262 regexp x2 29.27406+-0.34967 29.01738+-0.52917 pdfjs x2 40.72890+-0.64434 ^ 39.69891+-0.36499 ^ definitely 1.0259x faster mandreel x2 47.66526+-0.53252 47.37911+-0.61930 gbemu x2 31.40833+-0.36088 ? 32.11507+-1.59081 ? might be 1.0225x slower closure 0.50644+-0.00739 ? 0.50699+-0.01412 ? jquery 6.27980+-0.10694 6.20199+-0.06621 might be 1.0125x faster box2d x2 10.56740+-0.13805 ? 10.66469+-0.11187 ? zlib x2 375.41363+-18.39243 368.38181+-16.55848 might be 1.0191x faster typescript x2 690.40413+-17.49761 684.44393+-11.66221 <geometric> 5.92639+-0.05255 5.90409+-0.02452 might be 1.0038x faster Conf#1 Conf#2 Kraken: ai-astar 283.567+-7.912 ? 290.582+-4.608 ? might be 1.0247x slower audio-beat-detection 102.799+-1.283 ? 104.721+-2.821 ? might be 1.0187x slower audio-dft 166.767+-3.061 ? 173.423+-8.775 ? might be 1.0399x slower audio-fft 80.274+-3.549 79.426+-3.065 might be 1.0107x faster audio-oscillator 184.104+-5.671 ? 184.316+-2.930 ? imaging-darkroom 95.977+-1.004 ? 97.370+-2.378 ? might be 1.0145x slower imaging-desaturate 61.096+-4.870 58.605+-3.155 might be 1.0425x faster imaging-gaussian-blur 89.670+-1.087 ? 90.760+-2.958 ? might be 1.0122x slower json-parse-financial 37.007+-0.786 ? 37.426+-0.927 ? might be 1.0113x slower json-stringify-tinderbox 53.990+-1.140 52.961+-2.414 might be 1.0194x faster stanford-crypto-aes 58.041+-1.020 ? 58.267+-2.908 ? stanford-crypto-ccm 48.891+-7.332 44.840+-4.612 might be 1.0904x faster stanford-crypto-pbkdf2 154.977+-3.332 154.907+-6.089 stanford-crypto-sha256-iterative 51.138+-1.856 ? 53.542+-3.257 ? might be 1.0470x slower <arithmetic> 104.878+-1.471 ? 105.796+-1.037 ? might be 1.0088x slower Conf#1 Conf#2 JSRegress: abs-boolean 2.4470+-0.0717 2.4020+-0.0689 might be 1.0187x faster adapt-to-double-divide 16.5470+-0.4568 ? 17.6393+-2.4509 ? might be 1.0660x slower aliased-arguments-getbyval 1.0880+-0.0253 ? 1.2509+-0.4839 ? might be 1.1498x slower allocate-big-object 2.3208+-0.1204 2.2062+-0.1695 might be 1.0520x faster arguments-named-and-reflective 11.0983+-0.3014 ? 11.3414+-0.3893 ? might be 1.0219x slower arguments-out-of-bounds 10.5700+-0.4304 10.4874+-0.4199 arguments-strict-mode 10.1077+-0.1490 ? 10.3695+-0.5764 ? might be 1.0259x slower arguments 9.2575+-0.4066 9.1913+-0.3207 arity-mismatch-inlining 0.7933+-0.0482 ? 0.8027+-0.0401 ? might be 1.0119x slower array-access-polymorphic-structure 6.1383+-0.2885 ? 6.1785+-0.1563 ? array-nonarray-polymorhpic-access 29.9244+-2.4530 28.9091+-1.1795 might be 1.0351x faster array-prototype-every 81.1347+-2.5441 ? 82.1025+-2.2622 ? might be 1.0119x slower array-prototype-forEach 79.9167+-1.0646 ? 81.9886+-1.9933 ? might be 1.0259x slower array-prototype-map 87.9089+-2.4001 87.0442+-0.5808 array-prototype-some 82.6800+-3.1647 ? 84.5488+-3.0160 ? might be 1.0226x slower array-splice-contiguous 39.5854+-1.9664 39.2182+-0.7816 array-with-double-add 3.4590+-0.1063 3.4455+-0.0669 array-with-double-increment 3.0582+-0.0367 ? 3.1237+-0.0830 ? might be 1.0214x slower array-with-double-mul-add 4.1863+-0.1335 ? 4.2050+-0.0578 ? array-with-double-sum 3.1970+-0.0507 ? 3.2220+-0.0887 ? array-with-int32-add-sub 6.2628+-0.5371 5.9781+-0.2515 might be 1.0476x faster array-with-int32-or-double-sum 3.2559+-0.1113 3.2370+-0.0981 ArrayBuffer-DataView-alloc-large-long-lived 29.2911+-2.1794 28.3682+-1.3741 might be 1.0325x faster ArrayBuffer-DataView-alloc-long-lived 13.0213+-0.5505 ? 13.1938+-1.3226 ? might be 1.0132x slower ArrayBuffer-Int32Array-byteOffset 3.7203+-0.1995 3.6816+-0.1867 might be 1.0105x faster ArrayBuffer-Int8Array-alloc-large-long-lived 28.6268+-1.8027 ? 29.6625+-2.5780 ? might be 1.0362x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 22.9383+-2.2068 21.8558+-0.6083 might be 1.0495x faster ArrayBuffer-Int8Array-alloc-long-lived 12.0463+-0.4333 ? 12.4331+-0.8103 ? might be 1.0321x slower ArrayBuffer-Int8Array-alloc 10.4162+-0.5165 ? 10.5004+-0.2224 ? asmjs_bool_bug 6.8307+-0.1466 ? 6.9816+-0.4124 ? might be 1.0221x slower assign-custom-setter-polymorphic 2.5518+-0.0465 ? 2.5977+-0.1283 ? might be 1.0180x slower assign-custom-setter 3.4644+-0.1091 ? 3.4959+-0.1295 ? basic-set 8.0380+-0.4414 7.9612+-0.4836 big-int-mul 3.4882+-0.0546 ? 3.5283+-0.1376 ? might be 1.0115x slower boolean-test 2.8894+-0.0869 2.8186+-0.0454 might be 1.0251x faster branch-fold 3.5740+-0.0814 ? 3.5741+-0.0552 ? by-val-generic 7.7531+-0.4641 7.6645+-0.2614 might be 1.0116x faster call-spread-apply 28.0690+-1.1195 ? 28.8062+-1.3833 ? might be 1.0263x slower call-spread-call 22.2289+-0.4870 21.7955+-0.5135 might be 1.0199x faster captured-assignments 0.3833+-0.0161 ? 0.3995+-0.0459 ? might be 1.0425x slower cast-int-to-double 4.9596+-0.0722 4.8877+-0.0557 might be 1.0147x faster cell-argument 6.3247+-0.1647 6.2119+-0.1538 might be 1.0182x faster cfg-simplify 2.9167+-0.0889 2.9148+-0.0519 chain-getter-access 9.2930+-0.2108 9.1744+-0.2308 might be 1.0129x faster cmpeq-obj-to-obj-other 10.2631+-1.5007 ? 11.6333+-0.6556 ? might be 1.1335x slower constant-test 4.5138+-0.0899 ? 4.6021+-0.0345 ? might be 1.0196x slower create-lots-of-functions 19.3610+-0.5056 ^ 18.1178+-0.5121 ^ definitely 1.0686x faster DataView-custom-properties 33.7576+-2.4577 ? 34.1814+-2.0969 ? might be 1.0126x slower deconstructing-parameters-overridden-by-function 0.4246+-0.0426 ? 0.4714+-0.1571 ? might be 1.1103x slower delay-tear-off-arguments-strictmode 12.4769+-0.6749 ? 12.5562+-0.5191 ? deltablue-varargs 145.9152+-3.1133 145.6403+-2.0731 destructuring-arguments 12.9150+-0.2424 ? 13.4771+-0.4675 ? might be 1.0435x slower destructuring-swap 4.8110+-0.3235 4.7069+-0.1121 might be 1.0221x faster direct-arguments-getbyval 1.1450+-0.1188 1.0568+-0.0284 might be 1.0834x faster div-boolean-double 5.4067+-0.0886 ? 5.4630+-0.1114 ? might be 1.0104x slower div-boolean 8.2948+-0.0783 ? 8.3210+-0.1594 ? double-get-by-val-out-of-bounds 4.1602+-0.0719 4.0210+-0.1020 might be 1.0346x faster double-pollution-getbyval 8.9152+-0.1050 8.8576+-0.1342 double-pollution-putbyoffset 3.8286+-0.1303 ? 3.8502+-0.1062 ? double-to-int32-typed-array-no-inline 2.0328+-0.0462 ? 2.0838+-0.0829 ? might be 1.0251x slower double-to-int32-typed-array 1.7736+-0.0949 1.7233+-0.0267 might be 1.0292x faster double-to-uint32-typed-array-no-inline 2.1069+-0.0449 ? 2.1945+-0.1496 ? might be 1.0416x slower double-to-uint32-typed-array 1.7973+-0.0879 ? 1.9734+-0.1967 ? might be 1.0980x slower elidable-new-object-dag 36.2705+-1.1591 ? 36.9351+-2.3367 ? might be 1.0183x slower elidable-new-object-roflcopter 38.5317+-1.2620 38.0727+-0.5554 might be 1.0121x faster elidable-new-object-then-call 30.7309+-1.9426 ? 31.6465+-1.5167 ? might be 1.0298x slower elidable-new-object-tree 38.5294+-0.5985 37.4125+-1.3000 might be 1.0299x faster empty-string-plus-int 4.7699+-0.1188 ? 4.8735+-0.3916 ? might be 1.0217x slower emscripten-cube2hash 27.9970+-1.0466 ? 28.3249+-1.8332 ? might be 1.0117x slower exit-length-on-plain-object 13.1510+-0.3428 ? 13.3556+-1.0776 ? might be 1.0156x slower external-arguments-getbyval 1.1167+-0.0502 ? 1.2026+-0.1600 ? might be 1.0769x slower external-arguments-putbyval 2.1879+-0.1548 2.1558+-0.0726 might be 1.0149x faster fixed-typed-array-storage-var-index 1.2823+-0.1551 ? 1.2834+-0.1316 ? fixed-typed-array-storage 0.8455+-0.1221 ? 0.8700+-0.1142 ? might be 1.0290x slower Float32Array-matrix-mult 4.0235+-0.2515 4.0002+-0.1814 Float32Array-to-Float64Array-set 50.1787+-1.7765 50.0590+-2.0595 Float64Array-alloc-long-lived 65.1996+-1.9900 63.8942+-4.0696 might be 1.0204x faster Float64Array-to-Int16Array-set 59.5739+-2.5364 ? 63.1797+-2.9900 ? might be 1.0605x slower fold-double-to-int 13.4412+-1.0650 12.7556+-0.4693 might be 1.0538x faster fold-get-by-id-to-multi-get-by-offset-rare-int 9.5311+-0.2923 ! 10.4165+-0.5644 ! definitely 1.0929x slower fold-get-by-id-to-multi-get-by-offset 7.9154+-0.4113 ? 8.0894+-0.6026 ? might be 1.0220x slower fold-multi-get-by-offset-to-get-by-offset 7.1672+-0.8907 7.1663+-1.1202 fold-multi-get-by-offset-to-poly-get-by-offset 7.1836+-0.6323 ? 7.2475+-1.4040 ? fold-multi-put-by-offset-to-poly-put-by-offset 6.3281+-0.5629 ? 6.9726+-0.6157 ? might be 1.1018x slower fold-multi-put-by-offset-to-put-by-offset 3.7879+-0.6619 ? 4.5599+-0.7657 ? might be 1.2038x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 7.6506+-0.2611 ? 8.0191+-0.5272 ? might be 1.0482x slower fold-put-by-id-to-multi-put-by-offset 8.2140+-0.3295 7.7263+-0.5353 might be 1.0631x faster fold-put-structure 3.7931+-0.2473 ? 3.8881+-0.3441 ? might be 1.0251x slower for-of-iterate-array-entries 4.3619+-0.1543 ? 4.3892+-0.2508 ? for-of-iterate-array-keys 3.7457+-0.1248 ? 3.8086+-0.1485 ? might be 1.0168x slower for-of-iterate-array-values 3.6927+-0.1684 ? 3.9528+-0.3635 ? might be 1.0705x slower fround 18.3245+-0.9290 17.7986+-0.5862 might be 1.0295x faster ftl-library-inlining-dataview 62.4902+-1.6495 ? 63.4805+-2.9161 ? might be 1.0158x slower ftl-library-inlining 109.1415+-3.6737 ? 109.1933+-3.0696 ? function-dot-apply 2.2162+-0.3892 1.9995+-0.0941 might be 1.1084x faster function-test 3.0187+-0.0624 ? 3.0838+-0.2756 ? might be 1.0216x slower function-with-eval 90.8018+-1.8237 ? 91.1503+-5.5415 ? gcse-poly-get-less-obvious 14.9247+-0.6754 14.9209+-0.4949 gcse-poly-get 16.8665+-0.6207 16.3741+-0.3081 might be 1.0301x faster gcse 3.9220+-0.1638 3.9197+-0.0743 get-by-id-bimorphic-check-structure-elimination-simple 2.6029+-0.0676 ? 2.6348+-0.0724 ? might be 1.0123x slower get-by-id-bimorphic-check-structure-elimination 5.9172+-0.2047 5.7904+-0.1125 might be 1.0219x faster get-by-id-chain-from-try-block 6.9068+-0.4276 6.7198+-0.2121 might be 1.0278x faster get-by-id-check-structure-elimination 4.6242+-0.2982 4.3971+-0.0594 might be 1.0516x faster get-by-id-proto-or-self 14.5816+-0.8079 14.5014+-0.2062 get-by-id-quadmorphic-check-structure-elimination-simple 2.9205+-0.1074 ? 2.9373+-0.0759 ? get-by-id-self-or-proto 15.2506+-0.7060 14.6537+-0.6429 might be 1.0407x faster get-by-val-out-of-bounds 4.0247+-0.1105 3.9674+-0.3359 might be 1.0144x faster get_callee_monomorphic 3.1870+-0.0588 3.1087+-0.1211 might be 1.0252x faster get_callee_polymorphic 3.3073+-0.2544 3.2628+-0.2182 might be 1.0137x faster getter-no-activation 4.8774+-0.1539 ? 4.9098+-0.1565 ? getter-richards 114.9438+-21.0411 106.4574+-7.6423 might be 1.0797x faster getter 5.3629+-0.5664 ? 5.6187+-0.5914 ? might be 1.0477x slower global-var-const-infer-fire-from-opt 0.9174+-0.1982 0.8186+-0.1018 might be 1.1207x faster global-var-const-infer 0.8488+-0.1323 0.8268+-0.0589 might be 1.0267x faster HashMap-put-get-iterate-keys 24.5997+-0.6597 24.2360+-0.4131 might be 1.0150x faster HashMap-put-get-iterate 24.4452+-0.4996 23.9115+-0.7288 might be 1.0223x faster HashMap-string-put-get-iterate 25.0247+-1.8637 ? 25.3269+-1.8388 ? might be 1.0121x slower hoist-make-rope 8.4273+-0.9837 8.0370+-0.5119 might be 1.0486x faster hoist-poly-check-structure-effectful-loop 4.1768+-0.1928 ? 4.2096+-0.2305 ? hoist-poly-check-structure 3.3617+-0.1426 ? 3.4393+-0.1364 ? might be 1.0231x slower imul-double-only 6.6837+-0.0837 ? 7.0327+-0.4151 ? might be 1.0522x slower imul-int-only 8.5438+-0.6180 8.4200+-0.8476 might be 1.0147x faster imul-mixed 6.6873+-0.2674 6.6116+-0.3278 might be 1.0114x faster in-four-cases 16.0926+-0.7004 15.5995+-0.5874 might be 1.0316x faster in-one-case-false 8.5703+-0.8041 8.4790+-0.5344 might be 1.0108x faster in-one-case-true 8.3352+-0.2441 ? 8.7532+-0.7984 ? might be 1.0502x slower in-two-cases 8.7413+-0.4121 ? 8.8831+-0.1606 ? might be 1.0162x slower indexed-properties-in-objects 3.0389+-0.3934 2.7865+-0.0970 might be 1.0906x faster infer-closure-const-then-mov-no-inline 3.2487+-0.0299 3.2090+-0.0880 might be 1.0124x faster infer-closure-const-then-mov 17.1023+-0.5943 ? 17.7515+-0.6377 ? might be 1.0380x slower infer-closure-const-then-put-to-scope-no-inline 12.2264+-0.7531 12.2021+-1.0730 infer-closure-const-then-put-to-scope 24.1777+-1.0407 ? 24.7710+-1.7980 ? might be 1.0245x slower infer-closure-const-then-reenter-no-inline 51.5117+-0.5737 ? 53.6785+-2.5452 ? might be 1.0421x slower infer-closure-const-then-reenter 24.5851+-1.6039 24.1594+-1.0726 might be 1.0176x faster infer-constant-global-property 30.2894+-0.3676 ? 30.8308+-1.4379 ? might be 1.0179x slower infer-constant-property 2.6012+-0.0377 ? 2.6929+-0.1057 ? might be 1.0353x slower infer-one-time-closure-ten-vars 8.5869+-0.2672 8.5217+-0.2592 infer-one-time-closure-two-vars 8.3461+-0.4496 8.0946+-0.3877 might be 1.0311x faster infer-one-time-closure 8.0044+-0.2049 ? 8.0071+-0.1362 ? infer-one-time-deep-closure 12.8431+-0.2929 12.8362+-0.2785 inline-arguments-access 3.6133+-0.0647 ? 3.8733+-0.2685 ? might be 1.0720x slower inline-arguments-aliased-access 3.7615+-0.1298 ? 4.2146+-0.9004 ? might be 1.1204x slower inline-arguments-local-escape 3.8512+-0.1097 ? 4.7598+-0.8653 ? might be 1.2359x slower inline-get-scoped-var 4.6466+-0.1738 ? 4.7523+-0.1596 ? might be 1.0228x slower inlined-put-by-id-transition 9.1040+-0.5404 ? 9.2681+-1.1541 ? might be 1.0180x slower int-or-other-abs-then-get-by-val 4.8204+-0.0683 ? 4.8572+-0.0621 ? int-or-other-abs-zero-then-get-by-val 16.7458+-1.1446 16.1743+-0.4484 might be 1.0353x faster int-or-other-add-then-get-by-val 4.7622+-0.9350 3.9939+-0.0848 might be 1.1924x faster int-or-other-add 4.8892+-0.2197 ? 4.8919+-0.1231 ? int-or-other-div-then-get-by-val 3.8716+-0.1419 3.8261+-0.1023 might be 1.0119x faster int-or-other-max-then-get-by-val 4.0236+-0.0957 ? 4.0723+-0.1084 ? might be 1.0121x slower int-or-other-min-then-get-by-val 4.4017+-0.3416 4.2161+-0.2137 might be 1.0440x faster int-or-other-mod-then-get-by-val 3.5405+-0.1954 ? 3.5422+-0.1543 ? int-or-other-mul-then-get-by-val 3.7321+-0.1482 3.7158+-0.0562 int-or-other-neg-then-get-by-val 4.3765+-0.1337 ? 4.4526+-0.3742 ? might be 1.0174x slower int-or-other-neg-zero-then-get-by-val 16.3265+-0.3323 ? 17.1420+-0.8509 ? might be 1.0500x slower int-or-other-sub-then-get-by-val 4.1029+-0.0647 4.0551+-0.1018 might be 1.0118x faster int-or-other-sub 3.5291+-0.1039 ^ 3.3637+-0.0232 ^ definitely 1.0492x faster int-overflow-local 4.3227+-0.2873 4.1696+-0.1362 might be 1.0367x faster Int16Array-alloc-long-lived 44.9307+-1.8153 ? 44.9941+-2.6205 ? Int16Array-bubble-sort-with-byteLength 17.8456+-0.3220 17.4260+-0.3872 might be 1.0241x faster Int16Array-bubble-sort 18.3149+-1.1043 17.8524+-0.9480 might be 1.0259x faster Int16Array-load-int-mul 1.4119+-0.0552 ? 1.4187+-0.0616 ? Int16Array-to-Int32Array-set 46.6766+-1.6102 ? 49.4229+-1.5800 ? might be 1.0588x slower Int32Array-alloc-large 13.5403+-0.8172 12.9837+-1.2923 might be 1.0429x faster Int32Array-alloc-long-lived 52.2821+-1.7672 51.1169+-2.4143 might be 1.0228x faster Int32Array-alloc 2.6732+-0.1611 ? 2.8685+-0.2351 ? might be 1.0731x slower Int32Array-Int8Array-view-alloc 6.5135+-0.1935 ? 6.8676+-0.6793 ? might be 1.0544x slower int52-spill 6.1901+-0.1403 ? 6.2548+-0.3288 ? might be 1.0105x slower Int8Array-alloc-long-lived 41.5637+-2.6369 ? 41.9657+-1.9899 ? Int8Array-load-with-byteLength 3.3803+-0.0651 ? 3.4696+-0.1029 ? might be 1.0264x slower Int8Array-load 3.3928+-0.0504 ? 3.5075+-0.1899 ? might be 1.0338x slower integer-divide 10.8359+-0.1329 10.8241+-0.2211 integer-modulo 1.7508+-0.1243 ? 1.7933+-0.1891 ? might be 1.0243x slower large-int-captured 4.9695+-0.2195 4.7894+-0.0808 might be 1.0376x faster large-int-neg 14.7512+-0.3105 ? 14.9455+-0.3321 ? might be 1.0132x slower large-int 14.7057+-1.2848 14.1331+-0.3249 might be 1.0405x faster logical-not 4.3738+-0.5171 4.3016+-0.2493 might be 1.0168x faster lots-of-fields 10.2178+-0.4758 ? 10.4213+-0.2671 ? might be 1.0199x slower make-indexed-storage 2.9106+-0.1317 2.8947+-0.3064 make-rope-cse 4.1259+-0.4273 3.8891+-0.3678 might be 1.0609x faster marsaglia-larger-ints 33.0348+-0.7826 ? 33.1362+-0.9114 ? marsaglia-osr-entry 21.5758+-0.8149 ? 21.6227+-1.0558 ? max-boolean 2.6696+-0.1082 ? 2.7087+-0.1518 ? might be 1.0146x slower method-on-number 17.2861+-0.1209 ? 18.2095+-1.3223 ? might be 1.0534x slower min-boolean 2.6209+-0.0893 2.6203+-0.0538 minus-boolean-double 3.1611+-0.0886 3.1045+-0.1085 might be 1.0182x faster minus-boolean 2.3757+-0.1565 2.3493+-0.0650 might be 1.0112x faster misc-strict-eq 30.8309+-1.5289 29.3101+-0.8581 might be 1.0519x faster mod-boolean-double 11.2475+-0.1101 ? 11.2770+-0.3256 ? mod-boolean 8.6964+-0.4684 8.4384+-0.0889 might be 1.0306x faster mul-boolean-double 3.6336+-0.0721 ? 3.6897+-0.1839 ? might be 1.0155x slower mul-boolean 2.8127+-0.0725 2.7802+-0.0611 might be 1.0117x faster neg-boolean 3.0795+-0.0420 ? 3.1750+-0.1171 ? might be 1.0310x slower negative-zero-divide 0.3247+-0.0382 0.3243+-0.0304 negative-zero-modulo 0.3616+-0.1617 0.2866+-0.0117 might be 1.2615x faster negative-zero-negate 0.3037+-0.0235 0.2940+-0.0444 might be 1.0328x faster nested-function-parsing 33.4737+-0.4162 33.1794+-0.5459 new-array-buffer-dead 2.7588+-0.0951 2.6984+-0.0742 might be 1.0224x faster new-array-buffer-push 5.5800+-0.3222 ? 5.9913+-0.4773 ? might be 1.0737x slower new-array-dead 10.1062+-0.5379 9.8837+-0.6697 might be 1.0225x faster new-array-push 3.5486+-0.1768 ? 3.6952+-0.3021 ? might be 1.0413x slower no-inline-constructor 96.0861+-2.3181 ? 101.0527+-5.0416 ? might be 1.0517x slower number-test 2.8767+-0.1351 ? 2.9318+-0.1498 ? might be 1.0192x slower object-closure-call 4.8381+-0.0924 ? 5.0502+-0.2476 ? might be 1.0438x slower object-test 2.8946+-0.1125 2.8885+-0.0972 obvious-sink-pathology-taken 108.2443+-1.8968 ? 109.0769+-2.3924 ? obvious-sink-pathology 105.2601+-2.6540 ? 106.7945+-2.3189 ? might be 1.0146x slower obviously-elidable-new-object 29.0853+-0.9474 28.0793+-1.6868 might be 1.0358x faster plus-boolean-arith 2.3867+-0.0238 ? 2.4349+-0.2101 ? might be 1.0202x slower plus-boolean-double 3.3150+-0.5270 ? 3.3153+-0.4388 ? plus-boolean 2.6865+-0.3043 2.6433+-0.1416 might be 1.0163x faster poly-chain-access-different-prototypes-simple 2.7579+-0.0734 2.7311+-0.0440 poly-chain-access-different-prototypes 2.6934+-0.1833 2.5474+-0.0483 might be 1.0573x faster poly-chain-access-simpler 2.7611+-0.1065 2.7164+-0.0683 might be 1.0165x faster poly-chain-access 2.5560+-0.0736 ? 2.6841+-0.2057 ? might be 1.0501x slower poly-stricteq 49.9447+-2.3295 ? 50.9228+-2.1288 ? might be 1.0196x slower polymorphic-array-call 1.3330+-0.2299 1.1597+-0.1140 might be 1.1495x faster polymorphic-get-by-id 3.0607+-0.5783 2.8054+-0.0428 might be 1.0910x faster polymorphic-put-by-id 25.2950+-1.9675 ? 25.3914+-1.0398 ? polymorphic-structure 13.3582+-0.0774 ? 13.4792+-0.7486 ? polyvariant-monomorphic-get-by-id 7.2417+-0.6198 6.3695+-0.3046 might be 1.1369x faster proto-getter-access 9.2262+-0.1738 ? 9.3690+-0.2347 ? might be 1.0155x slower put-by-id-replace-and-transition 7.9064+-0.2603 ? 8.1257+-1.5109 ? might be 1.0277x slower put-by-id-slightly-polymorphic 2.5765+-0.0566 ? 2.6063+-0.0328 ? might be 1.0116x slower put-by-id 10.8564+-0.8895 ? 11.0350+-1.4826 ? might be 1.0165x slower put-by-val-direct 0.4960+-0.0188 0.4794+-0.0273 might be 1.0346x faster put-by-val-large-index-blank-indexing-type 5.3332+-0.1801 ? 5.5276+-0.5819 ? might be 1.0364x slower put-by-val-machine-int 2.4430+-0.3109 2.3938+-0.1683 might be 1.0206x faster rare-osr-exit-on-local 14.5754+-0.1570 ? 14.7751+-0.2857 ? might be 1.0137x slower register-pressure-from-osr 17.9425+-1.3491 17.2388+-0.3619 might be 1.0408x faster setter 5.7654+-0.3138 ? 5.9409+-0.6959 ? might be 1.0304x slower simple-activation-demo 25.5822+-1.0465 24.4492+-0.3769 might be 1.0463x faster simple-getter-access 12.2469+-0.2270 ? 12.4367+-0.6603 ? might be 1.0155x slower simple-poly-call-nested 9.1729+-0.4342 8.7048+-0.5874 might be 1.0538x faster simple-poly-call 1.2172+-0.0516 ? 1.2383+-0.0791 ? might be 1.0173x slower sin-boolean 19.2640+-2.2581 ? 19.5773+-1.0929 ? might be 1.0163x slower singleton-scope 64.7191+-2.5280 64.3277+-2.3284 sinkable-new-object-dag 59.3475+-1.4328 59.3381+-3.5678 sinkable-new-object-taken 46.4440+-1.2259 45.6636+-1.9789 might be 1.0171x faster sinkable-new-object 30.8000+-0.6025 ? 31.2879+-1.5587 ? might be 1.0158x slower slow-array-profile-convergence 2.5523+-0.0920 ? 2.7250+-0.2071 ? might be 1.0677x slower slow-convergence 2.4540+-0.1392 2.3775+-0.0919 might be 1.0322x faster sorting-benchmark 19.9351+-0.2945 ? 20.1936+-0.6075 ? might be 1.0130x slower sparse-conditional 1.0732+-0.0236 1.0630+-0.0237 splice-to-remove 14.9857+-0.8762 14.2835+-0.4009 might be 1.0492x faster string-char-code-at 15.5874+-1.6960 15.0841+-0.3360 might be 1.0334x faster string-concat-object 2.0522+-0.0734 2.0415+-0.0671 string-concat-pair-object 2.1482+-0.1470 ? 2.1695+-0.2370 ? string-concat-pair-simple 9.8400+-0.6300 9.4590+-0.5268 might be 1.0403x faster string-concat-simple 9.7713+-0.7697 9.6748+-0.3354 string-cons-repeat 7.4106+-0.8353 7.0088+-0.3639 might be 1.0573x faster string-cons-tower 6.7628+-0.2068 ? 6.8241+-0.5052 ? string-equality 16.0970+-0.2158 15.8285+-0.4133 might be 1.0170x faster string-get-by-val-big-char 6.6118+-0.2895 6.6075+-0.2083 string-get-by-val-out-of-bounds-insane 3.9981+-0.1946 3.9610+-0.2683 string-get-by-val-out-of-bounds 4.1211+-0.1380 ? 4.1410+-0.0970 ? string-get-by-val 2.9617+-0.4066 2.7778+-0.0485 might be 1.0662x faster string-hash 1.8992+-0.0726 1.8407+-0.0449 might be 1.0318x faster string-long-ident-equality 13.5400+-0.5006 13.2640+-0.1854 might be 1.0208x faster string-out-of-bounds 11.0115+-0.6230 10.8793+-0.3301 might be 1.0121x faster string-repeat-arith 27.7100+-0.8342 ? 27.8004+-0.9779 ? string-sub 57.6659+-1.3248 57.4607+-3.0040 string-test 2.8607+-0.2511 2.8349+-0.3307 string-var-equality 28.7307+-0.6587 ? 28.9283+-2.0548 ? structure-hoist-over-transitions 2.5308+-0.3787 2.3550+-0.1144 might be 1.0746x faster substring-concat-weird 34.7950+-1.9028 ? 35.1104+-1.4638 ? substring-concat 36.8240+-1.7533 ? 37.3585+-2.4048 ? might be 1.0145x slower substring 43.4368+-1.5777 42.6465+-2.1750 might be 1.0185x faster switch-char-constant 2.6923+-0.0793 ? 2.7522+-0.2170 ? might be 1.0222x slower switch-char 5.8794+-0.8110 ? 6.1860+-0.5772 ? might be 1.0522x slower switch-constant 8.3120+-1.8192 7.6528+-1.3334 might be 1.0861x faster switch-string-basic-big-var 13.1865+-0.6113 13.1327+-0.4918 switch-string-basic-big 13.1063+-0.8972 ? 13.4681+-1.2100 ? might be 1.0276x slower switch-string-basic-var 12.5857+-0.1542 ? 13.3750+-1.5991 ? might be 1.0627x slower switch-string-basic 12.2845+-0.9972 12.2083+-0.8656 switch-string-big-length-tower-var 19.0946+-0.5982 18.8591+-0.8912 might be 1.0125x faster switch-string-length-tower-var 13.1603+-0.4897 13.1156+-0.5273 switch-string-length-tower 11.9500+-0.5492 11.5292+-0.4682 might be 1.0365x faster switch-string-short 11.4360+-0.2374 ? 11.6886+-0.2499 ? might be 1.0221x slower switch 11.2175+-0.7249 ? 11.6713+-0.8491 ? might be 1.0404x slower tear-off-arguments-simple 3.0621+-0.1749 ? 3.0950+-0.1255 ? might be 1.0107x slower tear-off-arguments 4.0537+-0.1320 ? 4.0640+-0.2690 ? temporal-structure 12.8728+-1.0210 12.4593+-0.2351 might be 1.0332x faster to-int32-boolean 13.2303+-0.4304 13.0375+-0.2702 might be 1.0148x faster try-catch-get-by-val-cloned-arguments 14.0837+-1.2924 12.9720+-0.8019 might be 1.0857x faster try-catch-get-by-val-direct-arguments 5.6621+-0.1302 ? 5.9954+-0.6771 ? might be 1.0589x slower try-catch-get-by-val-scoped-arguments 6.8892+-0.3583 ? 7.0235+-0.5856 ? might be 1.0195x slower undefined-property-access 221.7123+-4.4892 ? 224.6543+-6.6061 ? might be 1.0133x slower undefined-test 2.9931+-0.1423 2.8862+-0.0326 might be 1.0370x faster unprofiled-licm 14.4461+-0.7887 ? 14.4980+-0.5982 ? varargs-call 14.2791+-0.1581 13.9928+-0.3318 might be 1.0205x faster varargs-construct-inline 17.1877+-0.3266 ? 18.6308+-1.4743 ? might be 1.0840x slower varargs-construct 30.2887+-1.6360 30.1033+-1.5078 varargs-inline 8.7581+-0.9182 8.5734+-0.3605 might be 1.0216x faster varargs-strict-mode 9.4986+-1.0589 ? 9.6034+-0.9567 ? might be 1.0110x slower varargs 9.1910+-0.0851 9.1539+-0.1327 weird-inlining-const-prop 2.1704+-0.3752 2.1100+-0.1346 might be 1.0286x faster <geometric> 7.7486+-0.0189 ? 7.7488+-0.0330 ? might be 1.0000x slower Conf#1 Conf#2 AsmBench: bigfib.cpp 457.7183+-2.2443 ? 462.6533+-3.7366 ? might be 1.0108x slower cray.c 404.8771+-3.7259 ? 406.6829+-5.3605 ? dry.c 445.7400+-18.9474 431.0726+-16.3180 might be 1.0340x faster FloatMM.c 719.1459+-16.9821 710.0690+-8.3355 might be 1.0128x faster gcc-loops.cpp 3649.7099+-46.4415 3608.2496+-31.4029 might be 1.0115x faster n-body.c 852.5490+-10.7679 851.9524+-6.0051 Quicksort.c 407.8164+-7.5912 ? 412.7252+-7.8622 ? might be 1.0120x slower stepanov_container.cpp 3762.6456+-41.7441 3729.1539+-22.3776 Towers.c 243.8719+-2.6687 ? 246.5487+-5.7779 ? might be 1.0110x slower <geometric> 743.0915+-3.1920 740.7067+-3.8797 might be 1.0032x faster Conf#1 Conf#2 CompressionBench: huffman 320.0449+-4.4448 ? 322.8716+-5.5127 ? arithmetic-simple 353.8173+-4.7846 349.5854+-2.0231 might be 1.0121x faster arithmetic-precise 273.1763+-3.3772 270.0466+-2.5023 might be 1.0116x faster arithmetic-complex-precise 271.0485+-2.6181 270.5658+-1.4383 arithmetic-precise-order-0 378.9841+-10.3023 ? 384.0884+-13.1022 ? might be 1.0135x slower arithmetic-precise-order-1 311.5114+-2.3965 308.6568+-3.8442 arithmetic-precise-order-2 350.6539+-4.4347 346.0896+-2.2586 might be 1.0132x faster arithmetic-simple-order-1 344.7344+-5.9207 ? 345.8405+-7.9524 ? arithmetic-simple-order-2 394.4603+-3.9589 ? 396.3191+-5.6523 ? lz-string 347.5848+-8.3916 ? 349.2193+-11.8821 ? <geometric> 332.2468+-1.2255 331.8051+-1.2837 might be 1.0013x faster Conf#1 Conf#2 Geomean of preferred means: <scaled-result> 57.7180+-0.2085 57.6611+-0.2612 might be 1.0010x faster
Basile Clement
Comment 3 2015-04-15 18:45:17 PDT
I forgot to remove the destroy() functions in JSCallee/JSFunction/JSBoundFunction (should be dead code now). I am preparing an updated patch.
Basile Clement
Comment 4 2015-04-15 19:05:36 PDT
Created attachment 250889 [details] Fixed patch
Basile Clement
Comment 5 2015-04-15 19:07:02 PDT
The bench results should still be valid for the new patch, but I will rerun them tomorrow to double check.
Filip Pizlo
Comment 6 2015-04-15 20:25:56 PDT
Comment on attachment 250889 [details] Fixed patch View in context: https://bugs.webkit.org/attachment.cgi?id=250889&action=review LGTM other than maybe using one too many GPRs. When you're ready to request review and have the reviewed patch committed, please set the review bit to "?" and the commit-queue bit to "?" as well. Then whoever reviews this can set both bits to "+" which will trigger the automatic commit bot. Our usual procedure for posting patches is: - Create a bug and upload a patch as you have done. - Post performance results as you have done, if applicable (some patches can safely be presumed to be perf-neutral). - Mark the patch r?/cq?. - Add appropriate reviewers to the CC on the bug. That would be me, ggaren@apple.com, and msaboff@apple.com. Maybe others. - Send e-mail to the reviewers to poke them. > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3490 > + GPRTemporary rareData(this); See below... > Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3561 > + GPRTemporary rareData(this); Note that this increases the GPR usage of this code snippet, which then evicts other things from registers in case of pressure. It might be nice to avoid using a separate GPR for this... > Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3579 > - > - m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfAllocator()), allocatorGPR); > - m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfStructure()), structureGPR); > - slowPath.append(m_jit.branchTestPtr(MacroAssembler::Zero, allocatorGPR)); > + > + m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfRareData()), rareDataGPR); > + slowPath.append(m_jit.branchTestPtr(MacroAssembler::Zero, rareDataGPR)); > + m_jit.loadPtr(JITCompiler::Address(rareDataGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfAllocator()), allocatorGPR); > + m_jit.loadPtr(JITCompiler::Address(rareDataGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfStructure()), structureGPR); Is it clear that you need a separate GPR for rareDataGPR? Could you instead use structureGPR? I believe that this code would work fine: m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfRareData()), structureGPR); slowPath.append(m_jit.branchTestPtr(MacroAssembler::Zero, structureGPR)); m_jit.loadPtr(JITCompiler::Address(structureGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfAllocator()), allocatorGPR); m_jit.loadPtr(JITCompiler::Address(structureGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfStructure()), structureGPR); This works because we only need the rareData until we load the structure, and it's OK to issue a load instruction that uses/defs the same register. Such a sequence would be strictly better from a register pressure perspective.
Basile Clement
Comment 7 2015-04-16 10:24:49 PDT
Created attachment 250927 [details] Remove additional GPR
Basile Clement
Comment 8 2015-04-16 10:25:39 PDT
Here is the new benchmark w/ the additional GPR removed. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3). VMs tested: "Conf#1" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r182874) "Conf#2" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r182874) 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. Conf#1 Conf#2 SunSpider: 3d-cube 4.2751+-0.1618 ? 4.3051+-0.1287 ? 3d-morph 5.2443+-0.1484 ? 5.4814+-0.6629 ? might be 1.0452x slower 3d-raytrace 5.6020+-0.3578 5.5575+-0.7740 access-binary-trees 1.9568+-0.1172 ? 2.0829+-0.1869 ? might be 1.0644x slower access-fannkuch 5.2535+-0.1691 5.1101+-0.0772 might be 1.0281x faster access-nbody 2.7100+-0.4389 2.5473+-0.0688 might be 1.0639x faster access-nsieve 3.2419+-0.0328 ? 3.3524+-0.1971 ? might be 1.0341x slower bitops-3bit-bits-in-byte 1.5218+-0.2325 1.4383+-0.0574 might be 1.0580x faster bitops-bits-in-byte 3.2115+-0.1585 3.1365+-0.1147 might be 1.0239x faster bitops-bitwise-and 2.0138+-0.0356 ? 2.0474+-0.0820 ? might be 1.0167x slower bitops-nsieve-bits 3.3853+-0.1453 3.3663+-0.1296 controlflow-recursive 2.0552+-0.2885 1.9727+-0.1284 might be 1.0418x faster crypto-aes 3.6840+-0.1291 ? 3.7177+-0.3822 ? crypto-md5 2.1862+-0.0626 ? 2.2449+-0.0968 ? might be 1.0269x slower crypto-sha1 2.7869+-0.7359 2.3460+-0.0608 might be 1.1879x faster date-format-tofte 6.9065+-0.2500 ? 6.9370+-0.3947 ? date-format-xparb 4.8311+-0.1972 ? 5.1482+-0.7599 ? might be 1.0656x slower math-cordic 2.9469+-0.1004 2.8778+-0.1447 might be 1.0240x faster math-partial-sums 4.4467+-0.0884 ? 4.5785+-0.6243 ? might be 1.0296x slower math-spectral-norm 1.8158+-0.0585 1.7428+-0.0627 might be 1.0419x faster regexp-dna 6.4248+-0.4988 ? 6.5942+-0.2221 ? might be 1.0264x slower string-base64 4.2583+-0.4344 4.2490+-0.2877 string-fasta 5.8477+-0.0182 5.7767+-0.0836 might be 1.0123x faster string-tagcloud 8.9775+-0.7981 ? 9.2810+-0.5547 ? might be 1.0338x slower string-unpack-code 20.1492+-1.2473 20.1485+-2.1006 string-validate-input 4.3938+-0.1725 ? 4.4193+-0.1910 ? <arithmetic> 4.6203+-0.0876 ? 4.6331+-0.0990 ? might be 1.0028x slower Conf#1 Conf#2 LongSpider: 3d-cube 787.7651+-9.8427 ? 796.0437+-20.7486 ? might be 1.0105x slower 3d-morph 1540.5809+-25.6819 ? 1558.0421+-41.3556 ? might be 1.0113x slower 3d-raytrace 667.0268+-7.1077 ? 667.0935+-3.9206 ? access-binary-trees 849.0704+-15.3632 838.3417+-5.5639 might be 1.0128x faster access-fannkuch 269.5464+-3.1122 268.2630+-6.3289 access-nbody 561.4915+-9.6159 552.8761+-2.9952 might be 1.0156x faster access-nsieve 626.1717+-2.9813 ? 632.7624+-12.9957 ? might be 1.0105x slower bitops-3bit-bits-in-byte 42.1627+-1.7482 41.2813+-0.9975 might be 1.0214x faster bitops-bits-in-byte 83.7639+-4.4055 ? 84.8185+-2.5604 ? might be 1.0126x slower bitops-nsieve-bits 666.4224+-6.5566 ? 673.1970+-20.9553 ? might be 1.0102x slower controlflow-recursive 460.3107+-6.1788 ? 464.1873+-4.3324 ? crypto-aes 542.3236+-3.5903 ? 552.6162+-11.5164 ? might be 1.0190x slower crypto-md5 536.6162+-14.5443 532.3539+-6.7520 crypto-sha1 569.9403+-3.3739 ? 571.6066+-4.7282 ? date-format-tofte 526.3601+-9.9023 512.6865+-5.3605 might be 1.0267x faster date-format-xparb 639.4729+-5.2480 ? 646.0918+-14.8343 ? might be 1.0104x slower math-cordic 508.6027+-4.6132 ? 510.7360+-6.0197 ? math-partial-sums 429.7371+-5.4419 ? 431.0619+-8.8535 ? math-spectral-norm 566.4093+-6.4445 565.0580+-6.0389 string-base64 311.8376+-2.2076 ? 312.4631+-4.2592 ? string-fasta 386.3601+-5.6181 ? 387.3623+-5.0983 ? string-tagcloud 199.1064+-1.8685 ? 200.0346+-1.6738 ? <geometric> 435.9213+-2.3074 ? 436.3434+-2.0647 ? might be 1.0010x slower Conf#1 Conf#2 V8Spider: crypto 50.3978+-2.3073 ? 51.6629+-0.9042 ? might be 1.0251x slower deltablue 82.4384+-15.1605 80.5931+-3.6272 might be 1.0229x faster earley-boyer 37.9593+-1.3837 ? 39.1320+-2.3473 ? might be 1.0309x slower raytrace 30.1717+-1.3167 29.9217+-1.2822 regexp 59.0181+-3.2129 57.6798+-2.2841 might be 1.0232x faster richards 72.4204+-1.9720 71.4766+-3.2119 might be 1.0132x faster splay 34.0970+-1.6166 ? 34.4194+-2.0485 ? <geometric> 49.0755+-2.0930 ? 49.1080+-1.0401 ? might be 1.0007x slower Conf#1 Conf#2 Octane: encrypt 0.20550+-0.00385 0.20005+-0.00199 might be 1.0272x faster decrypt 3.49846+-0.12777 ? 3.54832+-0.09333 ? might be 1.0143x slower deltablue x2 0.16207+-0.00250 ? 0.16282+-0.00317 ? earley 0.48211+-0.00339 0.47404+-0.01014 might be 1.0170x faster boyer 5.46286+-0.04075 ? 5.59242+-0.13028 ? might be 1.0237x slower navier-stokes x2 5.15667+-0.06815 5.10363+-0.02446 might be 1.0104x faster raytrace x2 1.08411+-0.05752 1.06021+-0.07440 might be 1.0225x faster richards x2 0.09403+-0.00267 ? 0.09456+-0.00252 ? splay x2 0.33789+-0.00379 0.33675+-0.00250 regexp x2 28.68248+-0.38623 ? 29.60008+-0.70429 ? might be 1.0320x slower pdfjs x2 39.56257+-0.38752 ^ 38.81180+-0.29667 ^ definitely 1.0193x faster mandreel x2 46.02229+-0.61381 ? 46.29461+-0.79539 ? gbemu x2 32.32424+-2.22576 31.91316+-2.05484 might be 1.0129x faster closure 0.49442+-0.00877 0.49034+-0.00333 jquery 6.08931+-0.06100 ? 6.09142+-0.03743 ? box2d x2 10.36411+-0.18492 10.36032+-0.06904 zlib x2 362.89091+-20.03586 362.28285+-20.28446 typescript x2 666.81181+-20.02114 659.87366+-15.16640 might be 1.0105x faster <geometric> 5.80919+-0.06247 5.79342+-0.03336 might be 1.0027x faster Conf#1 Conf#2 Kraken: ai-astar 286.500+-6.354 ? 292.718+-19.973 ? might be 1.0217x slower audio-beat-detection 101.844+-1.012 ! 103.840+-0.725 ! definitely 1.0196x slower audio-dft 162.694+-6.286 159.566+-5.307 might be 1.0196x faster audio-fft 79.286+-3.654 ? 80.434+-0.818 ? might be 1.0145x slower audio-oscillator 182.264+-6.132 180.000+-0.414 might be 1.0126x faster imaging-darkroom 96.516+-1.449 ? 99.429+-2.630 ? might be 1.0302x slower imaging-desaturate 56.418+-2.158 ? 57.375+-1.970 ? might be 1.0170x slower imaging-gaussian-blur 88.543+-0.824 ? 89.199+-2.167 ? json-parse-financial 37.575+-1.062 36.854+-0.482 might be 1.0196x faster json-stringify-tinderbox 51.246+-1.471 50.792+-2.502 stanford-crypto-aes 56.442+-2.649 ? 56.570+-2.526 ? stanford-crypto-ccm 48.014+-5.335 42.459+-1.408 might be 1.1308x faster stanford-crypto-pbkdf2 151.536+-2.661 ? 152.297+-3.602 ? stanford-crypto-sha256-iterative 50.071+-1.195 49.422+-1.539 might be 1.0131x faster <arithmetic> 103.496+-0.706 ? 103.640+-1.910 ? might be 1.0014x slower Conf#1 Conf#2 JSRegress: abs-boolean 2.4253+-0.0547 2.4064+-0.0631 adapt-to-double-divide 16.4655+-0.5180 ? 16.9612+-1.0227 ? might be 1.0301x slower aliased-arguments-getbyval 1.0874+-0.0771 1.0572+-0.0651 might be 1.0286x faster allocate-big-object 2.2400+-0.3349 ? 2.2699+-0.2892 ? might be 1.0133x slower arguments-named-and-reflective 10.9965+-0.1880 10.6622+-0.4047 might be 1.0314x faster arguments-out-of-bounds 10.7717+-0.9990 10.3738+-0.2059 might be 1.0384x faster arguments-strict-mode 10.0313+-0.4026 ? 10.3482+-0.7807 ? might be 1.0316x slower arguments 9.1912+-0.7071 ? 9.5975+-0.8339 ? might be 1.0442x slower arity-mismatch-inlining 0.7798+-0.0498 ? 0.8905+-0.2364 ? might be 1.1419x slower array-access-polymorphic-structure 5.9981+-0.2467 ? 6.2668+-0.4615 ? might be 1.0448x slower array-nonarray-polymorhpic-access 28.4446+-0.7340 ? 28.9095+-1.6154 ? might be 1.0163x slower array-prototype-every 78.7761+-1.2422 ? 79.6152+-3.0374 ? might be 1.0107x slower array-prototype-forEach 79.7049+-1.1714 ? 86.6035+-19.8664 ? might be 1.0866x slower array-prototype-map 88.1125+-2.0838 ? 88.1470+-2.0963 ? array-prototype-some 79.1877+-1.5714 ? 79.2244+-1.2457 ? array-splice-contiguous 38.5819+-0.9069 ! 41.3791+-0.9371 ! definitely 1.0725x slower array-with-double-add 3.4309+-0.0579 ? 3.6272+-0.4456 ? might be 1.0572x slower array-with-double-increment 3.4398+-1.0136 3.1187+-0.2048 might be 1.1030x faster array-with-double-mul-add 4.2877+-0.1775 ? 4.4434+-0.5505 ? might be 1.0363x slower array-with-double-sum 3.4552+-0.5697 3.1757+-0.0660 might be 1.0880x faster array-with-int32-add-sub 5.8816+-0.0707 ? 5.9617+-0.1507 ? might be 1.0136x slower array-with-int32-or-double-sum 3.2307+-0.0217 ? 3.2357+-0.0943 ? ArrayBuffer-DataView-alloc-large-long-lived 27.1905+-0.4098 ? 28.3344+-1.4013 ? might be 1.0421x slower ArrayBuffer-DataView-alloc-long-lived 12.8779+-0.5630 ? 13.8155+-1.7907 ? might be 1.0728x slower ArrayBuffer-Int32Array-byteOffset 3.6069+-0.1189 3.5895+-0.0773 ArrayBuffer-Int8Array-alloc-large-long-lived 28.3209+-1.2669 27.7727+-0.8127 might be 1.0197x faster ArrayBuffer-Int8Array-alloc-long-lived-buffer 21.3450+-1.9584 ? 22.3772+-2.1304 ? might be 1.0484x slower ArrayBuffer-Int8Array-alloc-long-lived 13.1410+-1.5683 12.2904+-0.8210 might be 1.0692x faster ArrayBuffer-Int8Array-alloc 10.5734+-0.5631 10.3741+-0.5687 might be 1.0192x faster asmjs_bool_bug 6.7502+-0.3549 ? 6.7819+-0.6348 ? assign-custom-setter-polymorphic 2.5687+-0.2027 2.5365+-0.0288 might be 1.0127x faster assign-custom-setter 3.4005+-0.0532 ? 3.6321+-0.2512 ? might be 1.0681x slower basic-set 8.1024+-0.2638 7.9674+-0.0671 might be 1.0169x faster big-int-mul 3.4617+-0.0753 ? 3.5135+-0.0706 ? might be 1.0150x slower boolean-test 2.8417+-0.0589 ? 2.8741+-0.1223 ? might be 1.0114x slower branch-fold 3.5061+-0.0353 ? 3.5583+-0.0784 ? might be 1.0149x slower by-val-generic 7.6001+-0.2564 ? 7.9913+-1.5591 ? might be 1.0515x slower call-spread-apply 27.4773+-1.1754 ? 27.4915+-0.8092 ? call-spread-call 22.4423+-0.3723 22.1294+-0.8403 might be 1.0141x faster captured-assignments 0.3779+-0.0148 ? 0.4134+-0.0678 ? might be 1.0939x slower cast-int-to-double 4.7893+-0.0422 ? 4.8827+-0.0964 ? might be 1.0195x slower cell-argument 6.3695+-0.4236 6.1362+-0.2429 might be 1.0380x faster cfg-simplify 2.8650+-0.1121 2.8528+-0.0732 chain-getter-access 9.1663+-0.2283 9.0343+-0.0695 might be 1.0146x faster cmpeq-obj-to-obj-other 9.5897+-1.2023 ? 10.7785+-1.0900 ? might be 1.1240x slower constant-test 4.5929+-0.0800 ? 4.6333+-0.2308 ? create-lots-of-functions 20.1407+-0.9622 18.5049+-0.8428 might be 1.0884x faster DataView-custom-properties 32.8149+-1.4559 32.5873+-0.6178 deconstructing-parameters-overridden-by-function 0.3899+-0.0062 ? 0.4062+-0.0181 ? might be 1.0421x slower delay-tear-off-arguments-strictmode 12.0525+-0.2611 ? 12.8459+-0.6896 ? might be 1.0658x slower deltablue-varargs 143.7742+-2.6878 143.3159+-1.7948 destructuring-arguments 12.7889+-0.0834 ? 13.4400+-0.7770 ? might be 1.0509x slower destructuring-swap 4.8703+-0.4335 4.7046+-0.2682 might be 1.0352x faster direct-arguments-getbyval 1.1826+-0.0781 ^ 1.0310+-0.0553 ^ definitely 1.1470x faster div-boolean-double 5.3931+-0.1205 ? 5.4133+-0.0986 ? div-boolean 8.3207+-0.1673 8.2886+-0.1413 double-get-by-val-out-of-bounds 4.3068+-0.1014 4.1623+-0.2769 might be 1.0347x faster double-pollution-getbyval 8.8875+-0.2796 8.8141+-0.3121 double-pollution-putbyoffset 3.7793+-0.1764 ? 3.8410+-0.0645 ? might be 1.0163x slower double-to-int32-typed-array-no-inline 2.0326+-0.0570 ? 2.2357+-0.4898 ? might be 1.1000x slower double-to-int32-typed-array 1.7325+-0.0801 ? 1.7694+-0.0526 ? might be 1.0213x slower double-to-uint32-typed-array-no-inline 2.0872+-0.0800 ? 2.1844+-0.2554 ? might be 1.0466x slower double-to-uint32-typed-array 1.7969+-0.0688 1.7878+-0.0763 elidable-new-object-dag 35.8145+-2.3960 34.6637+-0.3052 might be 1.0332x faster elidable-new-object-roflcopter 37.6876+-1.5823 ? 37.9375+-1.4487 ? elidable-new-object-then-call 30.4771+-1.6195 ? 31.7274+-1.8811 ? might be 1.0410x slower elidable-new-object-tree 37.5769+-2.4447 37.1602+-1.5025 might be 1.0112x faster empty-string-plus-int 4.7122+-0.0974 4.6884+-0.0695 emscripten-cube2hash 26.8267+-1.0050 26.2631+-1.2811 might be 1.0215x faster exit-length-on-plain-object 14.0516+-2.3348 13.0482+-0.4074 might be 1.0769x faster external-arguments-getbyval 1.1711+-0.1700 1.1231+-0.0502 might be 1.0428x faster external-arguments-putbyval 2.1198+-0.0359 2.1015+-0.0763 fixed-typed-array-storage-var-index 1.1690+-0.0211 ? 1.2113+-0.0335 ? might be 1.0362x slower fixed-typed-array-storage 0.8157+-0.0368 0.8071+-0.0211 might be 1.0107x faster Float32Array-matrix-mult 3.8940+-0.1178 3.8417+-0.0935 might be 1.0136x faster Float32Array-to-Float64Array-set 48.4830+-1.0277 48.1956+-0.7776 Float64Array-alloc-long-lived 60.5223+-1.7589 58.9128+-1.7621 might be 1.0273x faster Float64Array-to-Int16Array-set 60.3468+-1.8409 57.7170+-1.4610 might be 1.0456x faster fold-double-to-int 13.2108+-1.3800 12.5582+-0.1574 might be 1.0520x faster fold-get-by-id-to-multi-get-by-offset-rare-int 9.3741+-0.5859 ? 10.1509+-0.4207 ? might be 1.0829x slower fold-get-by-id-to-multi-get-by-offset 7.7845+-0.4339 ? 8.0470+-0.2838 ? might be 1.0337x slower fold-multi-get-by-offset-to-get-by-offset 7.2857+-1.4581 ? 7.4994+-0.6978 ? might be 1.0293x slower fold-multi-get-by-offset-to-poly-get-by-offset 7.0432+-1.1428 ? 7.4090+-0.5497 ? might be 1.0519x slower fold-multi-put-by-offset-to-poly-put-by-offset 7.0452+-0.6077 ? 7.3158+-0.6546 ? might be 1.0384x slower fold-multi-put-by-offset-to-put-by-offset 4.3656+-0.9825 ? 4.9283+-0.7889 ? might be 1.1289x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 7.9274+-0.4367 ? 8.1517+-0.9128 ? might be 1.0283x slower fold-put-by-id-to-multi-put-by-offset 8.1551+-0.5546 8.1152+-0.3387 fold-put-structure 3.7675+-0.2201 ! 5.3345+-0.6416 ! definitely 1.4159x slower for-of-iterate-array-entries 4.3303+-0.4416 4.1460+-0.0554 might be 1.0445x faster for-of-iterate-array-keys 3.6171+-0.0804 ? 3.6784+-0.1246 ? might be 1.0170x slower for-of-iterate-array-values 3.5393+-0.1232 ? 3.7362+-0.4044 ? might be 1.0556x slower fround 17.5203+-0.4389 ? 18.4511+-1.5430 ? might be 1.0531x slower ftl-library-inlining-dataview 61.4627+-0.9979 ? 63.0803+-3.1148 ? might be 1.0263x slower ftl-library-inlining 107.2616+-1.1114 106.5103+-1.1933 function-dot-apply 2.1187+-0.1115 ? 2.2769+-0.6803 ? might be 1.0747x slower function-test 3.0291+-0.0754 2.9628+-0.0366 might be 1.0224x faster function-with-eval 88.9831+-3.5254 87.3103+-1.0255 might be 1.0192x faster gcse-poly-get-less-obvious 14.5973+-0.4711 14.4822+-0.2445 gcse-poly-get 16.9070+-1.0756 16.5629+-1.3974 might be 1.0208x faster gcse 3.8595+-0.1215 3.8480+-0.1194 get-by-id-bimorphic-check-structure-elimination-simple 2.6497+-0.2264 2.5673+-0.0279 might be 1.0321x faster get-by-id-bimorphic-check-structure-elimination 5.8747+-0.2094 ? 5.9242+-0.1731 ? get-by-id-chain-from-try-block 6.5125+-0.1535 ? 6.5714+-0.2831 ? get-by-id-check-structure-elimination 4.3761+-0.0365 4.3717+-0.0304 get-by-id-proto-or-self 14.5732+-0.7455 14.3267+-0.8293 might be 1.0172x faster get-by-id-quadmorphic-check-structure-elimination-simple 2.8561+-0.0442 ? 3.0031+-0.1819 ? might be 1.0514x slower get-by-id-self-or-proto 14.6013+-0.5585 ? 14.7390+-0.6828 ? get-by-val-out-of-bounds 3.9436+-0.0926 ? 4.0101+-0.3166 ? might be 1.0169x slower get_callee_monomorphic 3.2609+-0.1400 ^ 3.0098+-0.0520 ^ definitely 1.0834x faster get_callee_polymorphic 3.1102+-0.1256 3.0718+-0.1813 might be 1.0125x faster getter-no-activation 4.8482+-0.1916 ? 4.8616+-0.1485 ? getter-richards 110.1828+-4.0645 98.7890+-14.0624 might be 1.1153x faster getter 5.5140+-0.7201 5.4429+-0.3584 might be 1.0131x faster global-var-const-infer-fire-from-opt 0.8455+-0.1016 ? 0.9181+-0.1257 ? might be 1.0858x slower global-var-const-infer 0.9364+-0.1566 0.8521+-0.0866 might be 1.0990x faster HashMap-put-get-iterate-keys 24.4522+-0.8747 24.3848+-0.8135 HashMap-put-get-iterate 24.0252+-0.9695 ? 24.1531+-1.1510 ? HashMap-string-put-get-iterate 24.9566+-0.8440 23.6414+-1.3269 might be 1.0556x faster hoist-make-rope 7.9901+-0.8597 ? 8.0160+-0.6029 ? hoist-poly-check-structure-effectful-loop 4.1823+-0.2727 4.1097+-0.0753 might be 1.0177x faster hoist-poly-check-structure 3.2598+-0.0301 ? 3.5929+-0.7958 ? might be 1.1022x slower imul-double-only 6.7579+-0.3943 ? 7.1380+-0.8365 ? might be 1.0562x slower imul-int-only 8.5066+-0.1634 ? 8.5378+-0.7963 ? imul-mixed 6.5256+-0.2864 6.4133+-0.5065 might be 1.0175x faster in-four-cases 15.8869+-1.1673 15.6946+-0.7207 might be 1.0123x faster in-one-case-false 8.8659+-0.2761 8.3712+-0.5404 might be 1.0591x faster in-one-case-true 8.4403+-0.3225 8.3698+-0.5555 in-two-cases 8.7140+-0.4700 ? 8.7336+-0.4535 ? indexed-properties-in-objects 2.7649+-0.0333 ? 2.7874+-0.0627 ? infer-closure-const-then-mov-no-inline 3.2762+-0.0476 3.2291+-0.0951 might be 1.0146x faster infer-closure-const-then-mov 17.3016+-0.4253 17.0127+-0.6232 might be 1.0170x faster infer-closure-const-then-put-to-scope-no-inline 11.6837+-0.0673 ? 11.8806+-0.2863 ? might be 1.0169x slower infer-closure-const-then-put-to-scope 23.4230+-0.4832 ? 23.6299+-0.5041 ? infer-closure-const-then-reenter-no-inline 51.0477+-0.7995 ? 52.0824+-1.4846 ? might be 1.0203x slower infer-closure-const-then-reenter 24.3826+-1.7489 24.0758+-0.4362 might be 1.0127x faster infer-constant-global-property 30.4815+-0.6021 ? 30.7343+-1.0456 ? infer-constant-property 2.6450+-0.1969 2.5971+-0.0372 might be 1.0185x faster infer-one-time-closure-ten-vars 8.6121+-0.6016 8.4577+-0.5584 might be 1.0183x faster infer-one-time-closure-two-vars 8.4733+-0.6850 8.3830+-0.5156 might be 1.0108x faster infer-one-time-closure 7.7824+-0.3900 ? 7.9609+-0.3392 ? might be 1.0229x slower infer-one-time-deep-closure 13.3413+-0.8299 12.7989+-0.4471 might be 1.0424x faster inline-arguments-access 3.6248+-0.1464 ? 3.7311+-0.1492 ? might be 1.0293x slower inline-arguments-aliased-access 3.7082+-0.2284 3.6862+-0.1573 inline-arguments-local-escape 4.0652+-0.2474 ? 4.2109+-0.3666 ? might be 1.0358x slower inline-get-scoped-var 4.7482+-0.1553 4.5643+-0.1577 might be 1.0403x faster inlined-put-by-id-transition 9.9195+-1.0575 9.1507+-0.8503 might be 1.0840x faster int-or-other-abs-then-get-by-val 4.8241+-0.1258 4.7879+-0.0637 int-or-other-abs-zero-then-get-by-val 16.4194+-0.5018 ? 16.9959+-0.8305 ? might be 1.0351x slower int-or-other-add-then-get-by-val 4.0264+-0.0575 ? 4.1186+-0.1818 ? might be 1.0229x slower int-or-other-add 4.8098+-0.0548 ? 4.8825+-0.1813 ? might be 1.0151x slower int-or-other-div-then-get-by-val 3.7918+-0.1329 ? 3.8630+-0.1024 ? might be 1.0188x slower int-or-other-max-then-get-by-val 4.0244+-0.1692 4.0211+-0.0280 int-or-other-min-then-get-by-val 4.1376+-0.0616 ? 4.2601+-0.3949 ? might be 1.0296x slower int-or-other-mod-then-get-by-val 3.4956+-0.1144 3.4520+-0.1074 might be 1.0126x faster int-or-other-mul-then-get-by-val 3.8354+-0.3167 ? 3.9328+-0.6195 ? might be 1.0254x slower int-or-other-neg-then-get-by-val 4.4007+-0.1327 4.3429+-0.1066 might be 1.0133x faster int-or-other-neg-zero-then-get-by-val 16.7015+-0.6755 ? 18.4434+-3.9153 ? might be 1.1043x slower int-or-other-sub-then-get-by-val 4.0168+-0.0798 ? 4.2439+-0.5590 ? might be 1.0565x slower int-or-other-sub 3.3860+-0.0763 ? 3.4215+-0.1906 ? might be 1.0105x slower int-overflow-local 4.1371+-0.0629 4.1101+-0.1410 Int16Array-alloc-long-lived 44.0789+-1.2521 43.5767+-1.3807 might be 1.0115x faster Int16Array-bubble-sort-with-byteLength 17.7168+-0.6866 17.4313+-0.3045 might be 1.0164x faster Int16Array-bubble-sort 18.2169+-0.6875 ? 18.2614+-1.4162 ? Int16Array-load-int-mul 1.6570+-0.3431 1.4141+-0.0342 might be 1.1718x faster Int16Array-to-Int32Array-set 47.6087+-2.5706 ^ 43.3835+-0.9072 ^ definitely 1.0974x faster Int32Array-alloc-large 13.7923+-1.5062 12.9419+-0.5629 might be 1.0657x faster Int32Array-alloc-long-lived 49.1785+-1.4400 ? 49.2195+-1.2585 ? Int32Array-alloc 2.6153+-0.2890 ? 2.8630+-0.0858 ? might be 1.0947x slower Int32Array-Int8Array-view-alloc 6.8905+-0.6552 6.5783+-0.6346 might be 1.0475x faster int52-spill 6.1755+-0.1635 6.0326+-0.2274 might be 1.0237x faster Int8Array-alloc-long-lived 40.1750+-1.0926 ? 40.2930+-1.1234 ? Int8Array-load-with-byteLength 3.3608+-0.0469 ? 3.9194+-0.6340 ? might be 1.1662x slower Int8Array-load 3.3743+-0.0724 ? 3.4520+-0.1531 ? might be 1.0230x slower integer-divide 10.8687+-0.5938 10.8147+-0.3224 integer-modulo 1.6705+-0.0410 1.6561+-0.0663 large-int-captured 4.9358+-0.5756 ? 5.1535+-0.7557 ? might be 1.0441x slower large-int-neg 14.6199+-0.5272 ? 14.9428+-0.4370 ? might be 1.0221x slower large-int 13.9997+-0.3879 13.9205+-0.3089 logical-not 4.2502+-0.1684 4.1999+-0.0585 might be 1.0120x faster lots-of-fields 10.2783+-0.6760 9.8437+-0.3954 might be 1.0442x faster make-indexed-storage 2.8179+-0.0901 ? 2.8739+-0.1819 ? might be 1.0199x slower make-rope-cse 3.7544+-0.3152 3.7182+-0.2138 marsaglia-larger-ints 32.9640+-0.8257 ? 33.2148+-1.7994 ? marsaglia-osr-entry 21.4915+-0.7509 ? 21.6992+-0.6374 ? max-boolean 2.7930+-0.3107 2.7744+-0.1257 method-on-number 17.7836+-0.2585 ? 18.1470+-0.7380 ? might be 1.0204x slower min-boolean 2.6247+-0.0772 2.6128+-0.0656 minus-boolean-double 3.0473+-0.0361 ? 3.0660+-0.0515 ? minus-boolean 2.2905+-0.0535 ? 2.3911+-0.2052 ? might be 1.0439x slower misc-strict-eq 30.5200+-0.8780 29.9632+-1.4940 might be 1.0186x faster mod-boolean-double 11.3050+-0.3207 ? 11.4355+-0.5964 ? might be 1.0116x slower mod-boolean 8.5099+-0.2415 ? 8.7018+-0.4722 ? might be 1.0225x slower mul-boolean-double 3.6392+-0.1872 ? 3.7623+-0.4463 ? might be 1.0338x slower mul-boolean 2.7601+-0.0491 ? 2.9755+-0.4895 ? might be 1.0780x slower neg-boolean 3.0451+-0.0394 ? 3.1639+-0.2370 ? might be 1.0390x slower negative-zero-divide 0.3102+-0.0186 ? 0.3341+-0.0823 ? might be 1.0771x slower negative-zero-modulo 0.3632+-0.1390 0.2892+-0.0093 might be 1.2558x faster negative-zero-negate 0.2876+-0.0361 0.2849+-0.0176 nested-function-parsing 33.0948+-0.4309 32.9700+-0.6320 new-array-buffer-dead 2.7245+-0.0393 ? 2.8559+-0.2936 ? might be 1.0482x slower new-array-buffer-push 5.6160+-0.2321 5.4071+-0.1266 might be 1.0386x faster new-array-dead 9.6222+-0.7578 ? 10.2517+-0.5217 ? might be 1.0654x slower new-array-push 3.4253+-0.0733 ? 3.4285+-0.1710 ? no-inline-constructor 93.2178+-0.9571 ! 96.1079+-1.1036 ! definitely 1.0310x slower number-test 2.8661+-0.0587 2.8026+-0.0352 might be 1.0227x faster object-closure-call 4.9090+-0.1032 ? 4.9707+-0.2711 ? might be 1.0126x slower object-test 2.8779+-0.0553 ? 2.8799+-0.1055 ? obvious-sink-pathology-taken 105.7966+-1.3470 105.5033+-0.9582 obvious-sink-pathology 102.6165+-0.8497 ? 102.6909+-1.4135 ? obviously-elidable-new-object 29.2012+-1.5757 27.8213+-1.6823 might be 1.0496x faster plus-boolean-arith 2.3575+-0.0341 ? 2.3865+-0.1052 ? might be 1.0123x slower plus-boolean-double 3.1388+-0.1619 3.1181+-0.1651 plus-boolean 2.5264+-0.0492 ? 2.5435+-0.0557 ? poly-chain-access-different-prototypes-simple 2.8221+-0.2408 2.6811+-0.0284 might be 1.0526x faster poly-chain-access-different-prototypes 2.5070+-0.0219 ? 2.6024+-0.2216 ? might be 1.0381x slower poly-chain-access-simpler 2.7064+-0.0783 ? 2.8385+-0.2098 ? might be 1.0488x slower poly-chain-access 2.7332+-0.5697 2.5107+-0.0769 might be 1.0886x faster poly-stricteq 46.8513+-0.8306 ? 47.1350+-1.3848 ? polymorphic-array-call 1.5173+-0.5028 1.0866+-0.0217 might be 1.3964x faster polymorphic-get-by-id 2.8407+-0.1131 ? 2.9323+-0.1126 ? might be 1.0322x slower polymorphic-put-by-id 25.7317+-1.7496 24.7096+-1.1782 might be 1.0414x faster polymorphic-structure 13.5119+-0.4367 13.2628+-0.1687 might be 1.0188x faster polyvariant-monomorphic-get-by-id 6.7093+-0.4398 ? 6.7334+-1.1091 ? proto-getter-access 9.2640+-0.5346 9.1798+-0.2413 put-by-id-replace-and-transition 7.7678+-0.5600 7.5546+-0.4096 might be 1.0282x faster put-by-id-slightly-polymorphic 2.5647+-0.0540 ? 2.6203+-0.0749 ? might be 1.0217x slower put-by-id 10.3986+-0.2785 ? 11.1219+-1.0729 ? might be 1.0696x slower put-by-val-direct 0.5198+-0.0586 0.4955+-0.0282 might be 1.0491x faster put-by-val-large-index-blank-indexing-type 5.3787+-0.4674 ? 5.4379+-0.5542 ? might be 1.0110x slower put-by-val-machine-int 2.4644+-0.3083 2.4168+-0.2933 might be 1.0197x faster rare-osr-exit-on-local 14.8348+-0.3328 ? 14.8352+-0.2769 ? register-pressure-from-osr 17.3593+-0.6691 17.3053+-0.7614 setter 5.8640+-0.3722 5.5762+-0.0894 might be 1.0516x faster simple-activation-demo 24.8625+-0.5394 ? 25.2721+-1.2430 ? might be 1.0165x slower simple-getter-access 12.1474+-0.3561 11.9571+-0.1677 might be 1.0159x faster simple-poly-call-nested 8.7076+-0.5250 ? 8.7722+-0.5166 ? simple-poly-call 1.2652+-0.1111 1.1844+-0.0374 might be 1.0683x faster sin-boolean 19.7186+-2.1929 19.3376+-2.0071 might be 1.0197x faster singleton-scope 64.5957+-2.3052 63.2055+-0.7072 might be 1.0220x faster sinkable-new-object-dag 57.3196+-1.9989 56.9303+-1.4708 sinkable-new-object-taken 43.8472+-0.5988 ? 45.0061+-1.3585 ? might be 1.0264x slower sinkable-new-object 31.2967+-0.8339 30.3020+-1.4600 might be 1.0328x faster slow-array-profile-convergence 2.5480+-0.0584 ? 2.7839+-0.5681 ? might be 1.0926x slower slow-convergence 2.6715+-0.5381 2.4023+-0.0460 might be 1.1121x faster sorting-benchmark 20.7828+-0.8336 20.0920+-0.8963 might be 1.0344x faster sparse-conditional 1.0531+-0.0426 ? 1.1358+-0.1746 ? might be 1.0785x slower splice-to-remove 15.0184+-0.5825 ? 15.1770+-0.9092 ? might be 1.0106x slower string-char-code-at 14.8564+-0.2800 ? 15.3031+-1.5729 ? might be 1.0301x slower string-concat-object 2.1226+-0.1249 ^ 1.9085+-0.0368 ^ definitely 1.1122x faster string-concat-pair-object 2.0865+-0.0899 ? 2.1217+-0.1293 ? might be 1.0169x slower string-concat-pair-simple 9.3507+-0.2946 ? 9.9068+-0.9539 ? might be 1.0595x slower string-concat-simple 9.5589+-0.5614 ? 10.1890+-0.9329 ? might be 1.0659x slower string-cons-repeat 6.7767+-0.5304 ? 7.0576+-0.7423 ? might be 1.0414x slower string-cons-tower 7.6886+-0.9195 7.2441+-1.1636 might be 1.0614x faster string-equality 16.1996+-0.7035 ? 16.9302+-0.9109 ? might be 1.0451x slower string-get-by-val-big-char 6.4779+-0.1216 ? 6.7098+-0.2143 ? might be 1.0358x slower string-get-by-val-out-of-bounds-insane 3.8914+-0.3056 3.8872+-0.2498 string-get-by-val-out-of-bounds 4.0902+-0.0636 ? 4.1570+-0.1443 ? might be 1.0163x slower string-get-by-val 2.7786+-0.0593 ? 2.8003+-0.1490 ? string-hash 1.8389+-0.0731 ? 1.8755+-0.0384 ? might be 1.0199x slower string-long-ident-equality 13.6662+-0.8088 13.6368+-0.7725 string-out-of-bounds 10.7582+-0.6152 10.7368+-0.3525 string-repeat-arith 27.3470+-0.3819 ? 27.5798+-1.0265 ? string-sub 55.5684+-0.9498 ? 57.4611+-1.4236 ? might be 1.0341x slower string-test 2.7446+-0.0723 2.7073+-0.0496 might be 1.0138x faster string-var-equality 28.3610+-0.8946 ? 28.3650+-0.4691 ? structure-hoist-over-transitions 2.3448+-0.2035 2.3179+-0.0841 might be 1.0116x faster substring-concat-weird 34.5034+-1.6816 ? 35.8158+-1.6434 ? might be 1.0380x slower substring-concat 36.5814+-0.7620 36.5397+-2.5861 substring 41.3188+-1.2838 ? 41.9881+-2.1414 ? might be 1.0162x slower switch-char-constant 2.7214+-0.1025 ? 2.9080+-0.4961 ? might be 1.0686x slower switch-char 5.8513+-0.4269 5.8316+-0.4669 switch-constant 7.7212+-0.9823 7.5852+-0.9880 might be 1.0179x faster switch-string-basic-big-var 12.5313+-0.2213 ? 12.8189+-0.2507 ? might be 1.0229x slower switch-string-basic-big 13.0455+-1.1843 12.2990+-0.2062 might be 1.0607x faster switch-string-basic-var 12.2968+-0.3578 ? 12.6713+-0.3710 ? might be 1.0305x slower switch-string-basic 11.7838+-0.2815 11.7257+-0.2209 switch-string-big-length-tower-var 18.7553+-0.3507 ? 19.3801+-1.0468 ? might be 1.0333x slower switch-string-length-tower-var 13.2185+-1.0873 12.7931+-0.3855 might be 1.0333x faster switch-string-length-tower 11.7014+-0.9812 11.6498+-0.7806 switch-string-short 11.4374+-0.5712 11.2316+-0.2924 might be 1.0183x faster switch 11.5144+-0.6931 ? 11.6128+-0.8495 ? tear-off-arguments-simple 3.2976+-0.5800 3.0086+-0.1731 might be 1.0961x faster tear-off-arguments 4.0003+-0.1618 ? 4.0723+-0.1554 ? might be 1.0180x slower temporal-structure 12.3168+-0.3434 ? 12.3615+-0.6382 ? to-int32-boolean 12.8783+-0.1467 ? 12.9539+-0.2884 ? try-catch-get-by-val-cloned-arguments 13.1721+-0.3996 12.8925+-0.3697 might be 1.0217x faster try-catch-get-by-val-direct-arguments 5.6501+-0.2499 5.5898+-0.1623 might be 1.0108x faster try-catch-get-by-val-scoped-arguments 6.7100+-0.2316 ? 7.1114+-0.5965 ? might be 1.0598x slower undefined-property-access 215.9011+-1.4330 ? 215.9905+-2.1992 ? undefined-test 2.8682+-0.0402 ? 2.9000+-0.1897 ? might be 1.0111x slower unprofiled-licm 14.1552+-0.2850 ? 14.3551+-0.6636 ? might be 1.0141x slower varargs-call 13.9777+-0.2729 ? 14.0356+-0.4356 ? varargs-construct-inline 16.7644+-0.5979 ! 18.1422+-0.7033 ! definitely 1.0822x slower varargs-construct 29.1991+-0.7688 28.9882+-0.9022 varargs-inline 8.4107+-0.4951 ? 8.5150+-0.2732 ? might be 1.0124x slower varargs-strict-mode 9.0990+-0.1030 ? 9.1029+-0.1380 ? varargs 9.1772+-0.3452 ? 9.8012+-0.8176 ? might be 1.0680x slower weird-inlining-const-prop 2.0667+-0.1836 ? 2.2319+-0.3897 ? might be 1.0799x slower <geometric> 7.6638+-0.0253 ? 7.6909+-0.0407 ? might be 1.0035x slower Conf#1 Conf#2 AsmBench: bigfib.cpp 449.0408+-1.7001 ? 449.9710+-1.9237 ? cray.c 398.9409+-2.9850 ? 399.9544+-2.4226 ? dry.c 449.2397+-20.2805 437.2972+-14.4663 might be 1.0273x faster FloatMM.c 705.2646+-16.2634 696.6644+-5.7120 might be 1.0123x faster gcc-loops.cpp 3563.5275+-20.1428 ? 3568.4141+-18.1991 ? n-body.c 833.3999+-3.8659 ? 839.1577+-5.5071 ? Quicksort.c 405.3527+-14.8943 404.4587+-10.3040 stepanov_container.cpp 3617.3817+-69.2255 3584.6414+-38.2088 Towers.c 239.8610+-0.3823 ? 240.9253+-1.7825 ? <geometric> 730.4594+-6.7246 727.8200+-4.1081 might be 1.0036x faster Conf#1 Conf#2 CompressionBench: huffman 309.0644+-2.0040 ? 310.5285+-6.1873 ? arithmetic-simple 353.8047+-14.2702 344.2210+-1.2046 might be 1.0278x faster arithmetic-precise 270.1401+-3.0966 266.3287+-8.9569 might be 1.0143x faster arithmetic-complex-precise 270.1259+-6.8319 262.6709+-1.8474 might be 1.0284x faster arithmetic-precise-order-0 372.2071+-7.1246 365.8042+-4.5539 might be 1.0175x faster arithmetic-precise-order-1 304.0562+-2.5856 300.6914+-2.5431 might be 1.0112x faster arithmetic-precise-order-2 341.8487+-0.8895 340.0347+-3.7666 arithmetic-simple-order-1 334.9377+-3.9425 ? 341.0841+-6.0158 ? might be 1.0184x slower arithmetic-simple-order-2 391.3536+-5.7737 388.9067+-8.0521 lz-string 328.5979+-14.3359 322.0613+-13.1032 might be 1.0203x faster <geometric> 325.3149+-2.9507 321.8685+-3.3202 might be 1.0107x faster Conf#1 Conf#2 Geomean of preferred means: <scaled-result> 56.7866+-0.3746 56.7344+-0.2569 might be 1.0009x faster
Filip Pizlo
Comment 9 2015-04-16 10:27:08 PDT
Comment on attachment 250927 [details] Remove additional GPR View in context: https://bugs.webkit.org/attachment.cgi?id=250927&action=review > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3496 > + GPRReg rareDataGPR = rareData.gpr(); Does this compile? Note that you need to do run-javascriptcore-tests --32-bit to test this code.
Basile Clement
Comment 10 2015-04-16 10:32:32 PDT
Created attachment 250928 [details] Hopefully final patch Also removes the additional GPR on DFGSpeculativeJIT32_64.
Basile Clement
Comment 11 2015-04-16 10:38:15 PDT
(In reply to comment #9) > Comment on attachment 250927 [details] > Remove additional GPR > > View in context: > https://bugs.webkit.org/attachment.cgi?id=250927&action=review > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3496 > > + GPRReg rareDataGPR = rareData.gpr(); > > Does this compile? > > Note that you need to do run-javascriptcore-tests --32-bit to test this code. No, that was a mistake (missed keystroke when saving), I updated the patch. Didn't know about the --32-bit though, I will run that.
WebKit Commit Bot
Comment 12 2015-04-16 10:54:48 PDT
Attachment 250928 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/JSFunction.h:30: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/runtime/JSFunction.h:137: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSCallee.h:29: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:47: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:76: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:79: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 6 in 23 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 13 2015-04-16 10:55:30 PDT
Comment on attachment 250928 [details] Hopefully final patch View in context: https://bugs.webkit.org/attachment.cgi?id=250928&action=review Looks great! Please change the license and reupload. Then I can mark cq+. > Source/JavaScriptCore/runtime/FunctionRareData.cpp:19 > +/* > + * Copyright (C) 2015 Apple Inc. All rights reserved. > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Library General Public > + * License as published by the Free Software Foundation; either > + * version 2 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Library General Public License for more details. > + * > + * You should have received a copy of the GNU Library General Public License > + * along with this library; see the file COPYING.LIB. If not, write to > + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, > + * Boston, MA 02110-1301, USA. > + * > + */ Newly created files should use the 2-clause BSD license: https://www.webkit.org/coding/bsd-license.html > Source/JavaScriptCore/runtime/FunctionRareData.h:19 > +/* > + * Copyright (C) 2015 Apple Inc. All rights reserved. > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Library General Public > + * License as published by the Free Software Foundation; either > + * version 2 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Library General Public License for more details. > + * > + * You should have received a copy of the GNU Library General Public License > + * along with this library; see the file COPYING.LIB. If not, write to > + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, > + * Boston, MA 02110-1301, USA. > + * > + */ Ditto.
Filip Pizlo
Comment 14 2015-04-16 10:58:49 PDT
(In reply to comment #12) > Attachment 250928 [details] did not pass style-queue: > Would be good to address these style issues, too. > > ERROR: Source/JavaScriptCore/runtime/JSFunction.h:30: Alphabetical sorting > problem. [build/include_order] [4] We like to sort our #include's. Sometimes editing existing code reveals past style problems - even if it's a preexisting problem, we usually fix it if style bot complains. > ERROR: Source/JavaScriptCore/runtime/JSFunction.h:137: The parameter name > "exec" adds no information, so it should be removed. Yeah, just remove the name. > [readability/parameter_name] [5] > ERROR: Source/JavaScriptCore/runtime/JSCallee.h:29: Alphabetical sorting > problem. [build/include_order] [4] Ditto. > ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:47: The parameter > name "vm" adds no information, so it should be removed. > [readability/parameter_name] [5] > ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:76: The parameter > name "vm" adds no information, so it should be removed. > [readability/parameter_name] [5] > ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:79: The parameter > name "vm" adds no information, so it should be removed. > [readability/parameter_name] [5] Ditto. > Total errors found: 6 in 23 files > > > If any of these errors are false positives, please file a bug against > check-webkit-style.
Basile Clement
Comment 15 2015-04-16 11:06:23 PDT
(In reply to comment #13) > Newly created files should use the 2-clause BSD license: > https://www.webkit.org/coding/bsd-license.html Oops, I just copied the license form JSFunction.cpp without thinking. (In reply to comment #14) > (In reply to comment #12) > > Attachment 250928 [details] did not pass style-queue: > > > > Would be good to address these style issues, too. Didn't know about the check-webkit-style script, fixing these now.
Basile Clement
Comment 16 2015-04-16 11:09:45 PDT
Created attachment 250931 [details] Fix style issues
Filip Pizlo
Comment 17 2015-04-16 11:26:34 PDT
Comment on attachment 250931 [details] Fix style issues Nice! r=me.
WebKit Commit Bot
Comment 18 2015-04-16 12:16:12 PDT
Comment on attachment 250931 [details] Fix style issues Clearing flags on attachment: 250931 Committed r182899: <http://trac.webkit.org/changeset/182899>
WebKit Commit Bot
Comment 19 2015-04-16 12:16:18 PDT
All reviewed patches have been landed. Closing bug.
Simon Fraser (smfr)
Comment 20 2015-04-19 09:15:00 PDT
Comment on attachment 250931 [details] Fix style issues View in context: https://bugs.webkit.org/attachment.cgi?id=250931&action=review > WebKit.xcworkspace/contents.xcworkspacedata:13 > + location = "group:Source/JavaScriptCore/runtime/FunctionRareData.cpp"> > + </FileRef> > + <FileRef > + location = "group:Source/JavaScriptCore/runtime/FunctionRareData.h"> > + </FileRef> > + <FileRef > + location = "group:Source"> > + </FileRef> > + <FileRef You should not have committed this change. This has added a folder called "Source" to the workspace, duplicating all the files.
Simon Fraser (smfr)
Comment 21 2015-04-19 09:21:01 PDT
Note You need to log in before you can comment on or make changes to this bug.