RESOLVED FIXED 124464
Infer constant global variables
https://bugs.webkit.org/show_bug.cgi?id=124464
Summary Infer constant global variables
Filip Pizlo
Reported 2013-11-16 21:34:57 PST
We currently infer constant globals if they are functions, but fail to do so in the general case. No good reason for that.
Attachments
sort of a beginning (6.94 KB, patch)
2013-11-17 23:55 PST, Filip Pizlo
no flags
a bit more (8.01 KB, patch)
2013-11-18 00:00 PST, Filip Pizlo
no flags
slowly... (15.45 KB, patch)
2013-11-18 17:48 PST, Filip Pizlo
no flags
the patch (50.94 KB, patch)
2013-11-18 22:14 PST, Filip Pizlo
buildbot: commit-queue-
thingy (51.94 KB, patch)
2013-11-19 10:29 PST, Filip Pizlo
no flags
the patch (74.45 KB, patch)
2013-11-19 13:03 PST, Filip Pizlo
no flags
llvm patch (3.96 KB, patch)
2013-11-19 14:17 PST, Filip Pizlo
no flags
the patch (74.68 KB, patch)
2013-11-19 15:49 PST, Filip Pizlo
sam: review+
Filip Pizlo
Comment 1 2013-11-17 23:55:32 PST
Created attachment 217173 [details] sort of a beginning
Filip Pizlo
Comment 2 2013-11-18 00:00:51 PST
Created attachment 217174 [details] a bit more
Filip Pizlo
Comment 3 2013-11-18 17:48:37 PST
Created attachment 217258 [details] slowly...
Filip Pizlo
Comment 4 2013-11-18 22:14:24 PST
Created attachment 217271 [details] the patch
Build Bot
Comment 5 2013-11-18 22:57:57 PST
Filip Pizlo
Comment 6 2013-11-19 10:29:56 PST
Created attachment 217311 [details] thingy Backing up before I rationalize something a bit more.
Filip Pizlo
Comment 7 2013-11-19 11:10:04 PST
It looks like I'll need to make some LLVM changes to expose CreateFence().
Filip Pizlo
Comment 8 2013-11-19 13:03:01 PST
Created attachment 217321 [details] the patch
Filip Pizlo
Comment 9 2013-11-19 14:17:45 PST
Created attachment 217331 [details] llvm patch
Filip Pizlo
Comment 10 2013-11-19 14:48:37 PST
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1). VMs tested: "Old" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r159352) "TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r159462) "ConstInfer" at /Volumes/Data/fromMiniMe/primary/OpenSource/WebKitBuild/Release/jsc (r159462) Collected 10 samples per benchmark/VM, with 10 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. Old TipOfTree ConstInfer ConstInfer v. Old SunSpider: 3d-cube 7.5813+-0.0837 7.5099+-0.0311 ! 8.0305+-0.0473 ! definitely 1.0593x slower 3d-morph 8.9693+-0.0773 ? 9.0832+-0.0468 ^ 8.8333+-0.0716 might be 1.0154x faster 3d-raytrace 9.3453+-0.1951 9.3084+-0.2097 9.2695+-0.1789 access-binary-trees 2.0006+-0.0151 ? 2.0066+-0.0088 ? 2.0191+-0.0160 ? access-fannkuch 7.9737+-0.1271 ? 7.9968+-0.0505 ? 8.0239+-0.0523 ? access-nbody 4.2408+-0.0152 ? 4.2599+-0.0158 4.2448+-0.0077 ? access-nsieve 5.0098+-0.0427 ? 5.0181+-0.0657 5.0146+-0.0393 ? bitops-3bit-bits-in-byte 1.8453+-0.0204 1.8403+-0.0065 ? 1.8439+-0.0036 bitops-bits-in-byte 7.2328+-0.0973 ? 7.2968+-0.0873 ? 7.3406+-0.0594 ? might be 1.0149x slower bitops-bitwise-and 2.9072+-0.0579 ? 2.9211+-0.0444 ? 2.9477+-0.0186 ? might be 1.0139x slower bitops-nsieve-bits 4.6191+-0.0317 4.5737+-0.0568 ? 4.6064+-0.0060 controlflow-recursive 3.1574+-0.0176 3.1478+-0.0491 ? 3.1495+-0.0435 crypto-aes 5.5183+-0.0647 5.4801+-0.0254 ? 5.5083+-0.0861 crypto-md5 3.1918+-0.0427 3.1348+-0.0207 ? 3.2146+-0.0775 ? crypto-sha1 3.0005+-0.0786 2.9676+-0.0145 ? 2.9740+-0.0120 date-format-tofte 11.5722+-0.1942 11.4873+-0.1753 11.3636+-0.1770 might be 1.0184x faster date-format-xparb 8.6253+-0.0927 8.6029+-0.0709 8.5321+-0.0821 might be 1.0109x faster math-cordic 4.6024+-0.0415 ? 4.6132+-0.0826 ^ 3.8967+-0.0121 ^ definitely 1.1811x faster math-partial-sums 10.2597+-0.0483 ? 10.2802+-0.0635 ? 10.3371+-0.0742 ? math-spectral-norm 2.7435+-0.0104 2.7283+-0.0116 ? 2.7320+-0.0075 regexp-dna 12.9838+-0.1186 ? 13.0205+-0.1752 12.9385+-0.1526 string-base64 5.5151+-0.0479 5.4973+-0.0372 ? 5.5889+-0.2107 ? might be 1.0134x slower string-fasta 10.6524+-0.1175 10.5616+-0.0848 10.5153+-0.1090 might be 1.0130x faster string-tagcloud 14.9815+-0.1459 ? 15.1071+-0.1295 15.0956+-0.0787 ? string-unpack-code 30.2962+-0.0994 30.1338+-0.3907 ? 30.3429+-0.5461 ? string-validate-input 6.8886+-0.0420 ? 6.9186+-0.0404 6.9142+-0.0520 ? <arithmetic> * 7.5275+-0.0222 7.5191+-0.0283 7.5107+-0.0268 might be 1.0022x faster <geometric> 6.0345+-0.0145 6.0255+-0.0184 6.0085+-0.0167 might be 1.0043x faster <harmonic> 4.9277+-0.0134 4.9171+-0.0147 4.9031+-0.0139 might be 1.0050x faster Old TipOfTree ConstInfer ConstInfer v. Old LongSpider: 3d-cube 2208.5469+-10.1600 2207.7935+-8.1583 ! 2769.1203+-30.4995 ! definitely 1.2538x slower 3d-morph 1546.5802+-6.5961 1543.5007+-1.0351 ^ 1519.0914+-5.9873 ^ definitely 1.0181x faster 3d-raytrace 1503.7377+-5.3149 ? 1504.7897+-11.1490 ? 1513.4263+-19.8767 ? access-binary-trees 2215.9966+-14.9400 2209.4778+-10.7930 2209.2583+-8.5827 access-fannkuch 653.9927+-0.4076 ? 654.2470+-3.6295 ? 659.2461+-8.8497 ? access-nbody 1505.8125+-3.4616 ? 1512.2844+-18.8562 1504.7269+-1.6181 access-nsieve 1561.2185+-6.2901 1557.5055+-3.7414 ? 1563.1943+-4.0083 ? bitops-3bit-bits-in-byte 121.7315+-0.1725 121.7066+-0.4761 ? 121.9833+-1.0209 ? bitops-bits-in-byte 635.8265+-3.1425 ? 638.8021+-1.7354 ? 638.8499+-2.9275 ? bitops-nsieve-bits 1051.2815+-4.8944 ? 1052.2355+-2.7466 ^ 1048.1606+-0.9262 controlflow-recursive 1452.7735+-4.7519 ! 1464.9510+-2.5374 1464.4229+-1.7238 ! definitely 1.0080x slower crypto-aes 1665.1899+-8.3563 ? 1682.7131+-19.1745 ^ 1647.7121+-2.8481 ^ definitely 1.0106x faster crypto-md5 1200.9325+-2.5537 1197.4833+-2.2498 ^ 1186.1542+-1.5801 ^ definitely 1.0125x faster crypto-sha1 1663.0278+-5.5067 ? 1667.5052+-8.9946 ^ 1613.5453+-4.7960 ^ definitely 1.0307x faster date-format-tofte 1187.3284+-16.8142 1161.6964+-10.9893 1157.6568+-9.2259 ^ definitely 1.0256x faster date-format-xparb 1512.9535+-51.5596 1501.5062+-52.5362 1485.5623+-15.0973 might be 1.0184x faster math-cordic 1808.6301+-12.5379 1804.8007+-9.9435 ^ 1469.4609+-53.3881 ^ definitely 1.2308x faster math-partial-sums 1309.2595+-5.1149 ? 1310.7026+-1.4511 1309.5820+-2.5635 ? math-spectral-norm 1828.2603+-2.3347 ? 1831.1875+-6.4539 1827.5618+-1.3406 string-base64 513.6710+-1.4356 512.7414+-1.6932 ^ 508.0153+-1.6576 ^ definitely 1.0111x faster string-fasta 1035.2658+-4.8885 ? 1037.3973+-3.9902 1032.8390+-6.1095 string-tagcloud 381.2720+-2.4586 ? 383.9449+-2.0300 382.6807+-1.0434 ? <arithmetic> 1298.3313+-2.5344 1298.1351+-2.5999 ? 1301.4659+-3.3516 ? might be 1.0024x slower <geometric> * 1114.3807+-1.7775 1114.3791+-1.6315 ^ 1110.2069+-2.4871 might be 1.0038x faster <harmonic> 802.4670+-0.8326 ? 802.7785+-0.6887 799.8547+-2.3720 might be 1.0033x faster Old TipOfTree ConstInfer ConstInfer v. Old V8Spider: crypto 79.3744+-0.2632 79.2608+-0.2209 ? 79.5256+-0.2844 ? deltablue 100.8797+-0.5382 ? 101.0357+-0.4396 ^ 98.5235+-0.3692 ^ definitely 1.0239x faster earley-boyer 71.4267+-0.4203 ? 71.5787+-0.5025 70.9482+-0.3267 raytrace 40.4904+-0.1631 ? 40.9313+-0.6841 40.2924+-0.2402 regexp 99.0975+-0.3517 ? 99.5562+-0.7468 ^ 98.3817+-0.2380 ^ definitely 1.0073x faster richards 113.8366+-0.4246 ? 114.4113+-1.0426 ^ 109.0323+-1.5296 ^ definitely 1.0441x faster splay 45.9952+-0.3511 45.8373+-0.4730 ? 46.7443+-1.0395 ? might be 1.0163x slower <arithmetic> 78.7286+-0.1475 ? 78.9445+-0.1767 ^ 77.6354+-0.3407 ^ definitely 1.0141x faster <geometric> * 73.8801+-0.1265 ? 74.0804+-0.2001 ^ 73.1665+-0.3721 ^ definitely 1.0098x faster <harmonic> 68.7419+-0.1296 ? 68.9426+-0.2819 68.3704+-0.4320 might be 1.0054x faster Old TipOfTree ConstInfer ConstInfer v. Old Octane and V8v7: encrypt 0.46902+-0.00046 0.46806+-0.00059 0.46792+-0.00505 decrypt 8.60616+-0.00626 8.59894+-0.00786 ? 8.64715+-0.11283 ? deltablue x2 0.58615+-0.00501 0.58236+-0.00305 ^ 0.56392+-0.00403 ^ definitely 1.0394x faster earley 0.87403+-0.00909 0.86953+-0.00715 0.86162+-0.00475 might be 1.0144x faster boyer 12.56312+-0.06080 ? 12.70696+-0.24141 12.53532+-0.09966 raytrace x2 4.44842+-0.06187 ? 4.53637+-0.09862 4.43155+-0.09923 regexp x2 33.63696+-0.16438 33.51237+-0.09800 33.39958+-0.07642 richards x2 0.31403+-0.00635 0.31118+-0.00390 ^ 0.29358+-0.00309 ^ definitely 1.0697x faster splay x2 0.64415+-0.00503 0.64315+-0.00874 0.63162+-0.00327 ^ definitely 1.0198x faster navier-stokes x2 10.93590+-0.00572 ? 10.94940+-0.01488 10.94629+-0.00590 ? closure 0.42789+-0.00235 0.42606+-0.00052 ? 0.42676+-0.00104 jquery 6.14190+-0.04089 6.11014+-0.00842 ? 6.11918+-0.01048 gbemu x2 71.19315+-0.95637 ? 71.64433+-0.31485 ? 72.47514+-0.54996 ? might be 1.0180x slower mandreel x2 182.77830+-0.26305 ^ 181.49099+-0.66291 ^ 145.13108+-0.50201 ^ definitely 1.2594x faster pdfjs x2 101.86309+-0.26855 101.52660+-0.40274 101.48690+-0.36967 box2d x2 34.84515+-0.16878 ? 34.85743+-0.25357 34.53703+-0.22502 V8v7: <arithmetic> 7.72772+-0.02293 ? 7.73207+-0.02275 ^ 7.69032+-0.01526 might be 1.0049x faster <geometric> * 2.44827+-0.00726 ? 2.44869+-0.00556 ^ 2.40499+-0.00681 ^ definitely 1.0180x faster <harmonic> 0.93820+-0.00646 0.93356+-0.00395 ^ 0.90321+-0.00410 ^ definitely 1.0387x faster Octane including V8v7: <arithmetic> 35.06049+-0.08146 34.97262+-0.06440 ^ 32.18659+-0.04976 ^ definitely 1.0893x faster <geometric> * 6.99855+-0.01221 6.99482+-0.00952 ^ 6.80158+-0.01376 ^ definitely 1.0290x faster <harmonic> 1.32181+-0.00817 1.31542+-0.00487 ^ 1.27824+-0.00527 ^ definitely 1.0341x faster Old TipOfTree ConstInfer ConstInfer v. Old Kraken: ai-astar 493.555+-0.803 493.079+-0.678 ? 496.481+-4.734 ? audio-beat-detection 236.974+-1.660 236.352+-1.442 ? 237.680+-1.282 ? audio-dft 300.754+-9.631 296.825+-3.154 ? 298.421+-3.875 audio-fft 144.772+-0.348 144.446+-0.149 ^ 143.160+-0.185 ^ definitely 1.0113x faster audio-oscillator 245.129+-0.457 244.730+-0.364 244.720+-0.538 imaging-darkroom 289.926+-0.598 289.726+-0.542 289.652+-0.556 imaging-desaturate 158.437+-0.198 ? 158.633+-0.580 158.540+-0.203 ? imaging-gaussian-blur 430.918+-1.207 ^ 417.353+-0.287 ^ 366.696+-0.580 ^ definitely 1.1751x faster json-parse-financial 79.861+-0.290 ! 80.649+-0.285 80.114+-0.562 ? json-stringify-tinderbox 106.614+-0.972 105.990+-0.430 ! 109.098+-0.297 ! definitely 1.0233x slower stanford-crypto-aes 90.734+-0.746 90.059+-0.455 ? 90.062+-0.692 stanford-crypto-ccm 101.463+-0.902 100.082+-1.085 ? 100.494+-1.456 stanford-crypto-pbkdf2 262.603+-9.591 261.817+-3.564 ? 265.266+-1.668 ? might be 1.0101x slower stanford-crypto-sha256-iterative 115.328+-0.548 ? 115.616+-0.414 ? 116.147+-0.428 ? <arithmetic> * 218.362+-1.025 ^ 216.811+-0.269 ^ 214.038+-0.385 ^ definitely 1.0202x faster <geometric> 185.824+-0.652 ^ 184.921+-0.227 ^ 183.901+-0.254 ^ definitely 1.0105x faster <harmonic> 159.246+-0.417 158.743+-0.238 158.693+-0.275 might be 1.0035x faster Old TipOfTree ConstInfer ConstInfer v. Old JSRegress: adapt-to-double-divide 22.8095+-0.1505 ? 22.8709+-0.0898 22.7246+-0.0576 aliased-arguments-getbyval 0.9569+-0.0035 ? 0.9583+-0.0040 ? 0.9610+-0.0056 ? allocate-big-object 2.6257+-0.0122 ? 2.6355+-0.0203 ? 2.6505+-0.0197 ? arity-mismatch-inlining 0.9014+-0.0051 ! 0.9143+-0.0045 ? 0.9195+-0.0037 ! definitely 1.0200x slower array-access-polymorphic-structure 9.8793+-0.1233 9.7956+-0.0976 9.6965+-0.0683 might be 1.0188x faster array-nonarray-polymorhpic-access 56.5963+-0.3435 56.5801+-0.2845 56.5191+-0.5028 array-with-double-add 5.7004+-0.0203 ? 5.7645+-0.0450 5.7307+-0.0645 ? array-with-double-increment 4.3179+-0.0080 ? 4.3217+-0.0067 4.3144+-0.0445 array-with-double-mul-add 6.8268+-0.0732 ? 6.8446+-0.0989 ? 6.8777+-0.0278 ? array-with-double-sum 8.0709+-0.0841 8.0460+-0.0683 ? 8.0838+-0.0964 ? array-with-int32-add-sub 10.4845+-0.0753 ? 10.4955+-0.1392 10.3888+-0.0766 array-with-int32-or-double-sum 8.0293+-0.0650 ? 8.0713+-0.0390 ? 8.1021+-0.0548 ? ArrayBuffer-DataView-alloc-large-long-lived 121.6957+-1.4001 ? 123.3762+-2.2197 121.0325+-0.9226 ArrayBuffer-DataView-alloc-long-lived 32.6782+-1.1266 ? 35.0164+-1.5221 ^ 31.3492+-0.3938 might be 1.0424x faster ArrayBuffer-Int32Array-byteOffset 8.9970+-0.0554 8.9814+-0.0882 ^ 7.0346+-0.0562 ^ definitely 1.2790x faster ArrayBuffer-Int8Array-alloc-huge-long-lived 217.8981+-2.6617 ? 218.3701+-1.7238 218.1214+-1.0683 ? ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented 168.5089+-1.1312 ^ 164.7660+-0.6732 ! 170.2658+-1.4974 ? might be 1.0104x slower ArrayBuffer-Int8Array-alloc-large-long-lived 123.4058+-1.3980 122.0156+-1.8775 ? 123.2818+-1.6288 ArrayBuffer-Int8Array-alloc-long-lived-buffer 51.2541+-1.2028 50.9293+-0.2759 50.8625+-0.3620 ArrayBuffer-Int8Array-alloc-long-lived 31.0486+-0.8730 30.2025+-0.7521 ! 31.4497+-0.2337 ? might be 1.0129x slower ArrayBuffer-Int8Array-alloc 28.5149+-1.2063 ^ 26.3635+-0.1041 ! 28.4125+-0.2348 asmjs_bool_bug 11.4874+-0.1621 ^ 11.1345+-0.1208 ^ 10.1571+-0.0441 ^ definitely 1.1310x faster basic-set 21.4774+-0.1140 ? 21.5328+-0.1828 21.2973+-0.1971 big-int-mul 5.6153+-0.0685 ? 5.6580+-0.0600 5.6548+-0.0148 ? boolean-test 4.4679+-0.0143 ? 4.4759+-0.0308 4.4206+-0.0250 ^ definitely 1.0107x faster branch-fold 4.9567+-0.0230 ? 4.9804+-0.0379 ? 4.9953+-0.0376 ? cast-int-to-double 14.2670+-0.1114 ? 14.4006+-0.0822 ^ 12.4316+-0.0916 ^ definitely 1.1476x faster cell-argument 16.5912+-0.0568 16.5591+-0.1752 ? 16.6917+-0.1536 ? cfg-simplify 3.9697+-0.0101 ? 3.9732+-0.0088 3.9713+-0.0063 ? cmpeq-obj-to-obj-other 14.0770+-0.5360 13.8792+-0.3308 ^ 12.6677+-0.5365 ^ definitely 1.1113x faster constant-test 8.8220+-0.1096 ? 8.8606+-0.0727 ? 8.9553+-0.0678 ? might be 1.0151x slower DataView-custom-properties 127.5100+-1.1530 ? 128.9706+-0.7854 ^ 126.8262+-0.9501 delay-tear-off-arguments-strictmode 3.4911+-0.0175 ? 3.5350+-0.0519 3.5147+-0.0117 ? destructuring-arguments-length 173.6541+-1.5129 171.3948+-1.8163 ? 175.2503+-2.6126 ? destructuring-arguments 8.6912+-0.0485 8.6900+-0.1071 ? 8.7288+-0.0675 ? destructuring-swap 8.5404+-0.0830 8.5171+-0.0959 ? 8.5532+-0.1127 ? direct-arguments-getbyval 0.8414+-0.0136 0.8344+-0.0068 ? 0.8534+-0.0128 ? might be 1.0144x slower double-pollution-getbyval 11.1453+-0.1562 11.1355+-0.1023 11.1254+-0.0258 double-pollution-putbyoffset 6.9511+-0.3597 6.8221+-0.0334 ? 6.8831+-0.0419 empty-string-plus-int 11.1772+-0.1071 ^ 10.8731+-0.0647 ! 11.2000+-0.1055 ? emscripten-cube2hash 52.3148+-0.7171 52.2263+-0.7355 ? 52.3375+-0.2488 ? emscripten-memops 9272.6123+-24.9598 9237.0210+-24.3818 ? 9248.2187+-27.3342 external-arguments-getbyval 2.0097+-0.0191 2.0077+-0.0169 2.0010+-0.0115 external-arguments-putbyval 3.0306+-0.0193 3.0273+-0.0189 ? 3.0323+-0.0209 ? Float32Array-matrix-mult 6.4246+-0.0876 6.4085+-0.0754 ? 6.4744+-0.1234 ? Float32Array-to-Float64Array-set 95.2276+-0.6756 ! 96.4917+-0.4695 ! 98.5679+-0.7311 ! definitely 1.0351x slower Float64Array-alloc-long-lived 110.3066+-0.7219 110.0045+-0.5300 ^ 108.2763+-0.4682 ^ definitely 1.0188x faster Float64Array-to-Int16Array-set 119.0735+-0.8367 ? 119.2173+-1.8576 116.9845+-1.2677 might be 1.0179x faster fold-double-to-int 25.7797+-0.4649 25.6166+-0.2934 25.5552+-0.1057 for-of-iterate-array-entries 8.5379+-0.0940 ? 8.6966+-0.1614 8.5934+-0.1708 ? for-of-iterate-array-keys 3.5554+-0.0740 3.5348+-0.0272 3.5260+-0.0560 for-of-iterate-array-values 3.0051+-0.0523 ? 3.0397+-0.0345 3.0097+-0.0528 ? function-dot-apply 3.1955+-0.0098 ? 3.1972+-0.0068 ? 3.2227+-0.0477 ? function-test 5.0523+-0.0641 ^ 4.9176+-0.0453 ! 5.0526+-0.0227 ? get-by-id-chain-from-try-block 7.5673+-0.0823 ? 7.6058+-0.0605 ? 7.6149+-0.0410 ? get-by-id-proto-or-self 23.4803+-0.3637 23.4063+-0.2953 23.2544+-0.2471 get-by-id-self-or-proto 23.5496+-0.9241 23.4492+-1.0060 ? 24.2684+-0.7142 ? might be 1.0305x slower get_callee_monomorphic 4.7384+-0.0339 ? 4.7886+-0.0647 ? 4.8417+-0.0300 ! definitely 1.0218x slower get_callee_polymorphic 4.5383+-0.0136 ? 4.5824+-0.0440 ^ 4.4976+-0.0113 ^ definitely 1.0091x faster HashMap-put-get-iterate-keys 43.7997+-0.2355 ? 43.9359+-0.4241 ! 47.0016+-0.6132 ! definitely 1.0731x slower HashMap-put-get-iterate 59.8639+-0.3147 ? 60.3349+-0.2163 ! 63.1178+-0.2390 ! definitely 1.0544x slower HashMap-string-put-get-iterate 54.7833+-0.3399 ^ 53.5820+-0.3141 ! 55.1113+-0.1943 ? imul-double-only 17.7650+-0.0972 ? 18.2058+-0.8810 17.8960+-0.1375 ? imul-int-only 14.9201+-0.1461 ? 15.0726+-0.2349 15.0074+-0.1686 ? imul-mixed 22.2164+-0.0787 22.2125+-0.1353 ? 22.2378+-0.0952 ? in-four-cases 25.8585+-0.0996 ? 25.9142+-0.0835 ? 25.9268+-0.0613 ? in-one-case-false 12.2129+-0.0762 ? 12.3918+-0.1434 12.1671+-0.0902 in-one-case-true 12.2912+-0.1580 12.1615+-0.1118 ? 12.3350+-0.1530 ? in-two-cases 12.9584+-0.1227 12.9274+-0.1040 ? 13.0456+-0.1616 ? indexed-properties-in-objects 4.6775+-0.0326 4.6458+-0.0552 4.6285+-0.0210 might be 1.0106x faster inline-arguments-access 1.5420+-0.0306 1.5110+-0.0750 ? 1.5503+-0.0052 ? inline-arguments-local-escape 22.4794+-0.0924 22.4316+-0.1565 ! 22.9300+-0.2251 ! definitely 1.0200x slower inline-get-scoped-var 6.9817+-0.1300 ? 7.1031+-0.0804 7.0540+-0.0898 ? might be 1.0104x slower inlined-put-by-id-transition 15.1604+-0.2362 ? 15.3648+-0.2632 15.3573+-0.1664 ? might be 1.0130x slower int-or-other-abs-then-get-by-val 9.8535+-0.1187 ? 9.8729+-0.0968 ^ 9.3529+-0.0588 ^ definitely 1.0535x faster int-or-other-abs-zero-then-get-by-val 41.8238+-0.0771 ^ 40.8356+-0.5288 ! 41.9303+-0.1342 ? int-or-other-add-then-get-by-val 10.8766+-0.0970 10.8547+-0.1525 ^ 9.7009+-0.0782 ^ definitely 1.1212x faster int-or-other-add 11.1181+-0.0733 ? 11.1306+-0.0815 11.0026+-0.1055 might be 1.0105x faster int-or-other-div-then-get-by-val 6.7571+-0.0298 ? 6.7624+-0.0332 ^ 6.4475+-0.0244 ^ definitely 1.0480x faster int-or-other-max-then-get-by-val 8.8592+-0.1091 ? 9.0039+-0.1708 8.9536+-0.1759 ? might be 1.0107x slower int-or-other-min-then-get-by-val 7.7983+-0.0361 ? 7.8221+-0.0470 ^ 7.1710+-0.0311 ^ definitely 1.0875x faster int-or-other-mod-then-get-by-val 6.1808+-0.0999 ? 6.2244+-0.0917 6.0950+-0.0808 might be 1.0141x faster int-or-other-mul-then-get-by-val 6.6563+-0.0667 ? 6.6813+-0.0714 ^ 6.4414+-0.0213 ^ definitely 1.0334x faster int-or-other-neg-then-get-by-val 8.4598+-0.0637 8.3860+-0.0962 ^ 7.9227+-0.0761 ^ definitely 1.0678x faster int-or-other-neg-zero-then-get-by-val 42.0075+-0.1510 ^ 40.3923+-0.8565 ? 46.9566+-11.2554 ? might be 1.1178x slower int-or-other-sub-then-get-by-val 10.8664+-0.0825 ? 10.9820+-0.1399 ^ 10.1188+-0.1351 ^ definitely 1.0739x faster int-or-other-sub 8.9281+-0.0765 8.8818+-0.0609 ^ 8.0830+-0.0792 ^ definitely 1.1046x faster int-overflow-local 6.5183+-0.0940 6.4631+-0.0973 ! 6.7037+-0.0804 ! definitely 1.0284x slower Int16Array-alloc-long-lived 75.4744+-0.7306 75.3618+-0.4057 ^ 72.7459+-0.2952 ^ definitely 1.0375x faster Int16Array-bubble-sort-with-byteLength 48.6752+-0.1248 ? 48.7386+-0.1274 ! 49.0732+-0.1037 ! definitely 1.0082x slower Int16Array-bubble-sort 48.1737+-0.1441 48.1617+-0.1452 ! 48.5731+-0.1434 ! definitely 1.0083x slower Int16Array-load-int-mul 2.0468+-0.0081 ? 2.0742+-0.0632 2.0624+-0.0064 ! definitely 1.0076x slower Int16Array-to-Int32Array-set 95.0097+-0.7633 ! 96.2925+-0.2024 ^ 86.1640+-1.8124 ^ definitely 1.1027x faster Int32Array-alloc-huge-long-lived 711.5034+-2.4485 709.2382+-2.7370 ? 709.3981+-2.6997 Int32Array-alloc-huge 818.5805+-6.4183 815.7407+-6.3050 ? 819.4341+-7.2667 ? Int32Array-alloc-large-long-lived 971.9801+-8.8105 970.2190+-6.0441 ? 972.8456+-6.3963 ? Int32Array-alloc-large 45.3736+-0.8574 ? 45.7057+-0.9674 ? 46.3219+-0.8697 ? might be 1.0209x slower Int32Array-alloc-long-lived 83.7577+-0.5173 ? 84.1006+-0.4842 ^ 80.9317+-0.8971 ^ definitely 1.0349x faster Int32Array-alloc 4.5118+-0.0145 4.5107+-0.0126 ? 4.5530+-0.0507 ? Int32Array-Int8Array-view-alloc 15.0046+-0.0763 14.8880+-0.1027 ! 15.1614+-0.0945 ? might be 1.0105x slower int52-spill 12.1899+-0.1115 12.0739+-0.1616 12.0577+-0.1328 might be 1.0110x faster Int8Array-alloc-long-lived 71.9219+-0.4762 71.2560+-0.7434 ^ 67.9194+-0.5820 ^ definitely 1.0589x faster Int8Array-load-with-byteLength 5.0308+-0.0147 ? 5.0432+-0.0192 ? 5.0573+-0.0072 ! definitely 1.0053x slower Int8Array-load 5.0389+-0.0085 ? 5.0422+-0.0164 ? 5.0453+-0.0408 ? integer-divide 15.5134+-0.0828 15.5109+-0.1052 ? 15.6443+-0.1717 ? integer-modulo 1.9830+-0.0155 ? 1.9884+-0.0112 ! 2.1223+-0.0189 ! definitely 1.0703x slower large-int-captured 9.1565+-0.1413 9.0936+-0.2129 ? 9.3506+-0.1847 ? might be 1.0212x slower large-int-neg 25.9457+-0.0932 25.9073+-0.1399 ? 25.9642+-0.2328 ? large-int 23.4918+-0.3344 23.3021+-0.1392 23.2450+-0.1887 might be 1.0106x faster lots-of-fields 11.1841+-0.0466 ^ 10.9684+-0.0465 ? 10.9898+-0.0694 ^ definitely 1.0177x faster make-indexed-storage 4.2448+-0.0381 4.2182+-0.0277 4.2048+-0.0927 make-rope-cse 5.9127+-0.0785 ? 6.0364+-0.1633 5.9099+-0.0787 marsaglia-larger-ints 119.5746+-0.2439 119.4272+-0.3135 119.3517+-0.1495 marsaglia-osr-entry 52.6655+-0.1362 ? 52.7665+-0.1263 52.7596+-0.1339 ? marsaglia 519.9486+-0.3890 ? 520.1472+-0.4219 520.0290+-0.8336 ? method-on-number 31.3616+-0.2276 ! 33.0326+-0.5318 32.3031+-0.7358 ? might be 1.0300x slower negative-zero-divide 0.4014+-0.0017 ? 0.4039+-0.0025 ? 0.4078+-0.0034 ! definitely 1.0159x slower negative-zero-modulo 0.3864+-0.0058 0.3845+-0.0022 ! 0.3883+-0.0014 ? negative-zero-negate 0.3711+-0.0035 0.3701+-0.0028 ? 0.3861+-0.0266 ? might be 1.0404x slower nested-function-parsing-random 394.2936+-2.2065 ^ 382.4261+-0.9052 ! 387.0992+-1.7549 ^ definitely 1.0186x faster nested-function-parsing 48.0641+-0.1292 ? 48.1419+-0.6865 ? 48.6539+-0.9856 ? might be 1.0123x slower new-array-buffer-dead 3.7805+-0.0159 ? 3.7904+-0.0185 ? 3.8066+-0.0122 ? new-array-buffer-push 10.6692+-0.1125 10.6630+-0.0856 10.6608+-0.1611 new-array-dead 28.6384+-0.0571 28.5724+-0.0978 ? 28.7558+-0.3010 ? new-array-push 6.9297+-0.0737 ? 6.9979+-0.1872 6.9046+-0.0638 number-test 4.3827+-0.0093 ? 4.4104+-0.0230 ^ 4.3152+-0.0360 ^ definitely 1.0157x faster object-closure-call 13.2244+-0.0352 ? 13.3235+-0.0918 ? 13.3578+-0.0728 ! definitely 1.0101x slower object-test 4.8301+-0.0483 ? 4.8823+-0.0808 ^ 4.7536+-0.0266 ^ definitely 1.0161x faster poly-stricteq 91.4213+-1.9449 90.5640+-1.4715 ^ 80.0481+-0.1473 ^ definitely 1.1421x faster polymorphic-structure 21.0641+-0.3284 ? 21.5131+-0.2462 21.2325+-0.2929 ? polyvariant-monomorphic-get-by-id 11.9946+-0.0679 ? 12.0978+-0.0688 12.0496+-0.0444 ? put-by-id 19.2300+-0.3155 ? 19.8659+-0.3537 19.5487+-0.3045 ? might be 1.0166x slower put-by-val-large-index-blank-indexing-type 11.1557+-0.2064 11.0030+-0.2285 ? 11.0335+-0.1093 might be 1.0111x faster rare-osr-exit-on-local 20.3186+-0.0982 ? 20.3220+-0.1131 20.2770+-0.0823 register-pressure-from-osr 31.3731+-0.2330 ? 31.6402+-0.1230 ! 32.1539+-0.0923 ! definitely 1.0249x slower simple-activation-demo 35.1986+-0.0749 ? 35.4050+-0.4254 35.1165+-0.1751 slow-array-profile-convergence 3.9881+-0.0170 ! 4.0482+-0.0174 ? 4.1407+-0.2274 ? might be 1.0383x slower slow-convergence 3.4239+-0.0147 ? 3.4753+-0.0691 3.4566+-0.0195 ? sparse-conditional 1.3478+-0.0128 ? 1.3496+-0.0097 1.3493+-0.0035 ? splice-to-remove 77.7670+-0.3664 77.2725+-0.2259 ! 78.0687+-0.4646 ? stepanov_container 11672.0730+-17.3851 ? 11876.1768+-283.0485 11669.5101+-26.4594 string-concat-object 2.9955+-0.0198 2.9888+-0.0133 ? 3.0198+-0.0349 ? string-concat-pair-object 2.9266+-0.0180 ? 2.9417+-0.0360 2.9052+-0.0238 string-concat-pair-simple 17.4830+-0.3026 17.4476+-0.2843 17.2484+-0.2723 might be 1.0136x faster string-concat-simple 17.1912+-0.3554 ? 17.5383+-0.3965 17.3712+-0.2868 ? might be 1.0105x slower string-cons-repeat 10.4967+-0.0368 ? 10.5149+-0.0443 10.4768+-0.0551 string-cons-tower 10.9854+-0.0702 ? 11.0376+-0.0275 10.9743+-0.0464 string-equality 43.6187+-0.7293 43.5188+-0.4497 ? 43.6642+-0.4313 ? string-get-by-val-big-char 13.6582+-0.0942 13.5103+-0.0766 ! 13.7061+-0.0864 ? string-get-by-val-out-of-bounds-insane 5.9432+-0.1378 ? 6.0419+-0.0985 ? 6.0465+-0.1903 ? might be 1.0174x slower string-get-by-val-out-of-bounds 5.3602+-0.0219 5.3499+-0.0094 5.3332+-0.0457 string-get-by-val 4.9161+-0.0171 4.9149+-0.0414 4.9079+-0.0190 string-hash 2.7689+-0.0077 ? 2.7837+-0.0311 ? 2.7851+-0.0224 ? string-long-ident-equality 38.5721+-0.5298 ? 39.1669+-0.6131 38.8598+-0.6125 ? string-repeat-arith 47.8751+-0.3645 ? 48.4335+-0.2590 48.1551+-0.1584 ? string-sub 96.3876+-0.3512 ! 98.2543+-1.2782 97.9476+-0.5947 ! definitely 1.0162x slower string-test 4.3067+-0.0051 ? 4.3300+-0.0331 4.3106+-0.0224 ? string-var-equality 71.4104+-0.4600 71.0679+-0.5971 ! 86.6200+-2.0061 ! definitely 1.2130x slower structure-hoist-over-transitions 3.4273+-0.0395 3.4067+-0.0169 ? 3.4085+-0.0142 switch-char-constant 3.5009+-0.0163 ? 3.5265+-0.0462 3.5023+-0.0137 ? switch-char 8.2287+-0.0586 8.1844+-0.0332 8.1554+-0.0993 switch-constant 9.2414+-0.0707 ? 9.2938+-0.1167 ? 9.3430+-0.0889 ? might be 1.0110x slower switch-string-basic-big-var 21.5836+-0.3059 21.2087+-0.0777 ^ 20.3483+-0.1323 ^ definitely 1.0607x faster switch-string-basic-big 21.6347+-0.0839 ? 21.6808+-0.0813 21.5644+-0.1032 switch-string-basic-var 21.2091+-0.1139 21.1673+-0.3029 ^ 20.2085+-0.0757 ^ definitely 1.0495x faster switch-string-basic 22.9189+-0.7718 ? 23.4817+-0.4436 ^ 22.3744+-0.4742 might be 1.0243x faster switch-string-big-length-tower-var 29.7823+-0.0485 29.7547+-0.1100 ! 29.9882+-0.1151 ! definitely 1.0069x slower switch-string-length-tower-var 23.5469+-0.0977 ? 23.5547+-0.1466 ^ 21.6857+-0.1381 ^ definitely 1.0858x faster switch-string-length-tower 17.4343+-0.1022 17.3812+-0.0517 ^ 17.0125+-0.0733 ^ definitely 1.0248x faster switch-string-short 17.4451+-0.1267 17.4094+-0.1002 ^ 17.0320+-0.2299 ^ definitely 1.0243x faster switch 16.0402+-0.0932 ? 16.1979+-0.2580 16.0075+-0.1125 tear-off-arguments-simple 2.1946+-0.0078 ! 2.2119+-0.0076 ? 2.2132+-0.0143 ? tear-off-arguments 3.5564+-0.0615 ? 3.5693+-0.0662 3.5551+-0.0198 temporal-structure 20.8821+-0.0995 ? 21.3279+-0.6023 ^ 17.0827+-0.1299 ^ definitely 1.2224x faster to-int32-boolean 22.2426+-0.1258 ? 22.3091+-0.1139 ? 22.3962+-0.2149 ? undefined-test 4.5781+-0.0438 4.5747+-0.0055 ^ 4.5161+-0.0440 might be 1.0137x faster weird-inlining-const-prop 2.3110+-0.0615 ? 2.3185+-0.0396 2.2991+-0.0078 <arithmetic> 162.0756+-0.1220 ? 162.9221+-1.6519 161.7980+-0.2469 might be 1.0017x faster <geometric> * 14.7970+-0.0114 ? 14.8109+-0.0134 ^ 14.7021+-0.0143 ^ definitely 1.0065x faster <harmonic> 5.6123+-0.0095 ? 5.6185+-0.0092 ? 5.6313+-0.0272 ? might be 1.0034x slower Old TipOfTree ConstInfer ConstInfer v. Old All benchmarks: <arithmetic> 227.8166+-0.2694 ? 228.2682+-1.0498 227.3625+-0.3214 might be 1.0020x faster <geometric> 21.2910+-0.0124 ? 21.2961+-0.0158 ^ 21.1125+-0.0131 ^ definitely 1.0085x faster <harmonic> 4.7970+-0.0113 4.7909+-0.0084 ^ 4.7475+-0.0140 ^ definitely 1.0104x faster Old TipOfTree ConstInfer ConstInfer v. Old Geomean of preferred means: <scaled-result> 49.1013+-0.0476 49.0594+-0.0500 ^ 48.5262+-0.0442 ^ definitely 1.0119x faster
Filip Pizlo
Comment 11 2013-11-19 15:49:38 PST
Created attachment 217347 [details] the patch Rebased and made some things a bit better.
Filip Pizlo
Comment 12 2013-11-19 21:47:03 PST
Dean Jackson
Comment 13 2013-11-20 10:41:22 PST
This has caused a couple of test breakages on WK1 release (at least) e.g. http://build.webkit.org/results/Apple%20Mavericks%20Release%20WK1%20(Tests)/r159568%20(1047)/results.html
Dean Jackson
Comment 14 2013-11-20 10:56:02 PST
Hopefully fixed in r159573
Note You need to log in before you can comment on or make changes to this bug.