RESOLVED FIXED 138441
PutById inline caches should have a store barrier when it triggers a structure transition
https://bugs.webkit.org/show_bug.cgi?id=138441
Summary PutById inline caches should have a store barrier when it triggers a structur...
Mark Lam
Reported 2014-11-05 14:45:08 PST
After r174025, we no longer insert DFG store barriers when the payload of a PutById is not a cell. However, this can lead to a crash when we have PutById inline cache code transitioning the structure and re-allocating the butterfly of an old gen object. The lack of a store barrier in that inline cache results in the old gen object not being noticed during an eden GC scan. As a result, its newly allocated butterfly will not be kept alive. The result is a stale butterfly pointer, and a crash. It is also possible that the new structure can be collected by the eden GC if (at GC time): 1. It is in the eden gen. 2. The inline cache that installed it has been evicted. 3. There are no live young objects referring to it. The chances of this should be more rare than the butterfly re-allocation, but it still possible. Hence, the fix is to always add a store barrier if the inline caches performs a structure transition. <rdar://problem/18801123>
Attachments
the patch. (5.22 KB, patch)
2014-11-05 15:23 PST, Mark Lam
ggaren: review+
Mark Lam
Comment 1 2014-11-05 15:23:17 PST
Created attachment 241063 [details] the patch. Ready for review. Still running benchmarks and tests.
Geoffrey Garen
Comment 2 2014-11-05 17:37:58 PST
Comment on attachment 241063 [details] the patch. View in context: https://bugs.webkit.org/attachment.cgi?id=241063&action=review r=me > Source/JavaScriptCore/jit/Repatch.cpp:1141 > + callSlowWriteBarrier = stubJit.call(); Let's call this "callFlushWriteBarrierBuffer" to match the callee.
Mark Lam
Comment 3 2014-11-05 17:43:05 PST
JSC tests are happy. The layout tests (with a debug build) shows no new failures. The benchmarks are happy. There is one "definitely slower" in dilatable in v8-spider. Re-running v8-spider shows that it's within noise. The raw data is below: === Start of Run 2 (re-running v8-spider) === base new crypto 82.9814+-1.1706 ? 82.9865+-1.9617 ? deltablue 127.8655+-1.2272 127.3657+-2.7327 earley-boyer 70.5808+-0.8139 70.3942+-1.4073 raytrace 46.7735+-1.6568 ? 47.0367+-0.9740 ? regexp 108.3636+-0.9357 108.1378+-0.5088 richards 130.0345+-5.6110 ? 132.4417+-5.4411 ? might be 1.0185x slower splay 48.7175+-1.1901 48.3646+-1.2289 <arithmetic> 87.9024+-0.9051 ? 88.1039+-1.0148 ? might be 1.0023x slower <geometric> * 81.5724+-0.6382 ? 81.6678+-0.9624 ? might be 1.0012x slower <harmonic> 75.3657+-0.5478 ? 75.3885+-0.9423 ? might be 1.0003x slower === End of Run 2 (re-running v8-spider) === === Start of Run 1 === Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on albion (MacPro5,1). VMs tested: "base" at /Volumes/Data/ws6/OpenSource/WebKitBuild/Release/jsc (r175632) "new" at /Volumes/Data/ws6/OpenSource/WebKitBuild/Release/jsc (r175632) Collected 4 samples per benchmark/VM, with 4 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. base new SunSpider: 3d-cube 7.7108+-0.1829 7.5006+-0.1659 might be 1.0280x faster 3d-morph 9.5581+-0.1406 ? 9.6665+-0.1937 ? might be 1.0113x slower 3d-raytrace 9.7131+-0.1978 9.6351+-0.4369 access-binary-trees 3.0621+-0.1240 3.0015+-0.3039 might be 1.0202x faster access-fannkuch 9.4900+-0.1609 9.4758+-0.0681 access-nbody 4.6472+-0.3154 4.6429+-0.2522 access-nsieve 5.9235+-0.1050 ? 5.9310+-0.1517 ? bitops-3bit-bits-in-byte 2.0347+-0.0711 2.0317+-0.1609 bitops-bits-in-byte 6.4235+-0.2354 ? 6.4437+-0.2159 ? bitops-bitwise-and 3.3364+-0.1918 ? 3.3737+-0.0470 ? might be 1.0112x slower bitops-nsieve-bits 5.9090+-0.3244 5.8727+-0.2070 controlflow-recursive 3.1896+-0.1701 ? 3.2841+-0.1725 ? might be 1.0296x slower crypto-aes 6.1117+-0.1570 ? 6.3442+-0.3134 ? might be 1.0380x slower crypto-md5 3.6940+-0.0940 ? 3.8061+-0.0614 ? might be 1.0303x slower crypto-sha1 3.7019+-0.0604 ? 3.7733+-0.1457 ? might be 1.0193x slower date-format-tofte 13.2891+-0.7913 13.2830+-0.5808 date-format-xparb 7.8760+-0.2403 7.8245+-0.3473 math-cordic 4.7478+-0.1088 ? 4.8157+-0.1486 ? might be 1.0143x slower math-partial-sums 10.3230+-0.2227 10.0965+-0.2670 might be 1.0224x faster math-spectral-norm 3.1989+-0.1462 ? 3.2260+-0.1810 ? regexp-dna 11.2968+-0.2096 11.2368+-0.0572 string-base64 6.6453+-0.3552 6.4608+-0.1264 might be 1.0286x faster string-fasta 9.9590+-0.2252 ? 10.0327+-0.1735 ? string-tagcloud 15.8279+-0.3010 15.3745+-0.5085 might be 1.0295x faster string-unpack-code 31.2228+-0.4660 ? 31.6108+-0.3905 ? might be 1.0124x slower string-validate-input 7.2657+-0.2663 7.1518+-0.1342 might be 1.0159x faster <arithmetic> * 7.9291+-0.0535 7.9191+-0.0777 might be 1.0013x faster <geometric> 6.5583+-0.0473 ? 6.5609+-0.0828 ? might be 1.0004x slower <harmonic> 5.5509+-0.0481 ? 5.5674+-0.0887 ? might be 1.0030x slower base new LongSpider: 3d-cube 1333.1201+-16.2128 1327.6330+-16.2675 3d-morph 2145.1569+-3.5508 2145.0031+-1.9527 3d-raytrace 1226.9623+-19.1280 ? 1228.5384+-14.4676 ? access-binary-trees 1546.0508+-7.3893 ? 1548.2012+-12.7128 ? access-fannkuch 513.0499+-26.7984 507.5983+-22.6308 might be 1.0107x faster access-nbody 1154.4113+-3.4854 1153.5932+-1.1335 access-nsieve 1480.6443+-16.6350 1472.9544+-10.1167 bitops-3bit-bits-in-byte 57.1558+-0.7462 ? 57.3834+-0.5120 ? bitops-bits-in-byte 365.1354+-13.2954 ? 367.3586+-11.8971 ? bitops-nsieve-bits 1118.6241+-4.1163 ? 1121.8655+-5.2633 ? controlflow-recursive 825.5416+-2.1905 ? 826.1882+-1.4969 ? crypto-aes 1040.0266+-6.4344 1037.3589+-8.1221 crypto-md5 952.9652+-3.1638 ? 953.8689+-3.2149 ? crypto-sha1 1121.0267+-36.7007 ? 1129.9862+-58.7791 ? date-format-tofte 1154.3032+-41.3040 ? 1154.9214+-52.2247 ? date-format-xparb 1087.3959+-15.1382 ? 1089.0872+-4.5136 ? math-cordic 920.3326+-157.4465 917.9818+-157.4189 math-partial-sums 1181.1353+-1.8307 1178.5022+-3.9437 math-spectral-norm 1234.9307+-1.2758 ? 1236.9917+-1.7591 ? string-base64 530.5659+-1.0382 ? 533.8666+-5.6673 ? string-fasta 670.6835+-5.0418 667.3395+-2.6730 string-tagcloud 344.9683+-1.9122 ? 345.2249+-1.9733 ? <arithmetic> 1000.1903+-7.1116 1000.0658+-7.7640 might be 1.0001x faster <geometric> * 838.8638+-5.9653 ? 838.9701+-7.3926 ? might be 1.0001x slower <harmonic> 520.9641+-4.5969 ? 521.8720+-2.0253 ? might be 1.0017x slower base new V8Spider: crypto 82.9459+-0.3310 ? 83.5803+-1.4642 ? deltablue 126.7830+-1.2151 ! 128.4934+-0.3695 ! definitely 1.0135x slower earley-boyer 70.1245+-1.4350 ? 70.4117+-0.3805 ? raytrace 44.9864+-0.7254 ? 46.2694+-1.5432 ? might be 1.0285x slower regexp 107.9320+-0.4868 ? 108.4534+-1.3948 ? richards 132.0274+-4.0623 ? 132.0474+-7.8449 ? splay 48.9060+-1.6830 48.2582+-0.6638 might be 1.0134x faster <arithmetic> 87.6722+-0.7843 ? 88.2163+-1.3624 ? might be 1.0062x slower <geometric> * 81.1184+-0.7864 ? 81.6358+-0.8281 ? might be 1.0064x slower <harmonic> 74.6839+-0.9425 ? 75.1929+-0.5670 ? might be 1.0068x slower base new Octane: encrypt 0.36326+-0.00670 ? 0.36582+-0.00781 ? decrypt 6.48350+-0.03091 ? 6.48652+-0.02435 ? deltablue x2 0.30582+-0.00844 0.30327+-0.00607 earley 1.14569+-0.02516 1.13579+-0.00729 boyer 9.93012+-0.13189 9.92490+-0.10217 navier-stokes x2 7.35404+-0.00886 ? 7.36314+-0.01208 ? raytrace x2 1.87490+-0.02138 ? 1.88491+-0.01975 ? richards x2 0.18983+-0.00575 ? 0.19080+-0.00413 ? splay x2 0.62018+-0.00628 0.61443+-0.00511 regexp x2 52.51603+-0.69161 ? 52.54830+-0.80600 ? pdfjs x2 83.77453+-1.98307 82.82946+-0.94982 might be 1.0114x faster mandreel x2 86.33503+-0.13971 86.12846+-0.67166 gbemu x2 76.61980+-1.57337 ? 76.75806+-1.72390 ? closure 0.86088+-0.00237 0.86023+-0.00251 jquery 10.96513+-0.05567 10.94628+-0.05167 box2d x2 22.70948+-0.26967 ? 22.73304+-0.22717 ? zlib x2 736.26316+-77.97752 734.75708+-68.37104 typescript x2 1224.65100+-7.67484 1217.42725+-12.64926 <arithmetic> 153.87254+-5.69793 153.22653+-4.47518 might be 1.0042x faster <geometric> * 11.08606+-0.11681 11.06689+-0.07780 might be 1.0017x faster <harmonic> 1.11193+-0.01066 1.11136+-0.00725 might be 1.0005x faster base new Kraken: ai-astar 539.880+-3.149 537.118+-1.885 audio-beat-detection 180.490+-5.716 ? 183.268+-1.605 ? might be 1.0154x slower audio-dft 241.478+-2.475 ? 241.720+-1.792 ? audio-fft 123.017+-0.717 122.651+-0.527 audio-oscillator 362.620+-1.835 362.474+-0.917 imaging-darkroom 280.069+-0.616 279.753+-2.756 imaging-desaturate 109.042+-0.337 ? 109.241+-0.420 ? imaging-gaussian-blur 184.462+-13.349 180.711+-0.922 might be 1.0208x faster json-parse-financial 78.243+-0.470 77.881+-1.106 json-stringify-tinderbox 94.128+-1.179 93.839+-0.599 stanford-crypto-aes 94.453+-0.732 ? 95.148+-1.934 ? stanford-crypto-ccm 93.784+-3.086 89.885+-14.335 might be 1.0434x faster stanford-crypto-pbkdf2 264.546+-1.924 264.298+-6.595 stanford-crypto-sha256-iterative 82.042+-1.834 81.528+-0.177 <arithmetic> * 194.875+-0.638 194.251+-0.882 might be 1.0032x faster <geometric> 161.711+-0.522 160.963+-2.059 might be 1.0046x faster <harmonic> 138.310+-0.490 137.399+-2.985 might be 1.0066x faster base new JSRegress: abs-boolean 4.1631+-0.0503 ? 4.2610+-0.1700 ? might be 1.0235x slower adapt-to-double-divide 20.6345+-0.7366 ? 20.7902+-0.6884 ? aliased-arguments-getbyval 1.2665+-0.1243 ? 1.2970+-0.0754 ? might be 1.0241x slower allocate-big-object 3.5328+-0.4861 3.4908+-0.4345 might be 1.0120x faster arity-mismatch-inlining 1.1868+-0.0633 ? 1.1946+-0.1699 ? array-access-polymorphic-structure 10.4805+-0.4065 ? 10.6491+-0.2718 ? might be 1.0161x slower array-nonarray-polymorhpic-access 56.6180+-4.4577 ? 58.0985+-0.3116 ? might be 1.0261x slower array-prototype-every 117.3654+-4.0685 ? 118.3048+-3.1044 ? array-prototype-forEach 118.5209+-3.2443 117.8113+-2.7713 array-prototype-map 148.6096+-5.3217 148.2692+-4.6532 array-prototype-some 118.0407+-2.3265 ? 118.2228+-4.3050 ? array-splice-contiguous 65.9985+-0.7964 ? 66.6783+-0.8985 ? might be 1.0103x slower array-with-double-add 6.3335+-0.1077 6.3065+-0.1015 array-with-double-increment 4.6702+-0.1515 ? 4.7452+-0.1015 ? might be 1.0161x slower array-with-double-mul-add 8.1648+-0.1545 8.0247+-0.1691 might be 1.0175x faster array-with-double-sum 4.8958+-0.0982 4.8737+-0.0814 array-with-int32-add-sub 11.0680+-0.1699 11.0289+-0.2229 array-with-int32-or-double-sum 5.0012+-0.1042 4.9988+-0.1470 ArrayBuffer-DataView-alloc-large-long-lived 52.0885+-0.3478 51.8484+-1.5168 ArrayBuffer-DataView-alloc-long-lived 21.8959+-2.3721 21.8540+-1.5512 ArrayBuffer-Int32Array-byteOffset 5.2354+-0.2909 5.2337+-0.1261 ArrayBuffer-Int8Array-alloc-large-long-lived 55.6279+-0.8499 ? 56.4603+-2.0620 ? might be 1.0150x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 36.3349+-2.6896 35.4420+-1.9772 might be 1.0252x faster ArrayBuffer-Int8Array-alloc-long-lived 20.4155+-1.2538 ? 21.5081+-1.6693 ? might be 1.0535x slower ArrayBuffer-Int8Array-alloc 17.4146+-1.2194 17.2297+-2.2057 might be 1.0107x faster asmjs_bool_bug 10.1797+-0.1791 10.0053+-0.1330 might be 1.0174x faster assign-custom-setter-polymorphic 5.0992+-0.6320 4.9418+-0.0803 might be 1.0319x faster assign-custom-setter 6.4642+-0.3341 ? 6.5393+-0.1661 ? might be 1.0116x slower basic-set 15.3381+-0.7281 ? 15.5065+-0.5026 ? might be 1.0110x slower big-int-mul 6.5469+-0.0392 ? 6.6272+-0.1480 ? might be 1.0123x slower boolean-test 4.8189+-0.1848 ? 4.8285+-0.0898 ? branch-fold 5.2289+-0.2453 ? 5.2465+-0.0253 ? by-val-generic 12.7009+-0.3408 ? 12.7783+-0.5839 ? call-spread-apply 19.9489+-0.5357 ? 20.1910+-0.6531 ? might be 1.0121x slower call-spread-call 8.8018+-0.1914 8.7730+-0.3792 captured-assignments 0.7390+-0.1029 ? 0.7760+-0.1232 ? might be 1.0500x slower cast-int-to-double 9.3575+-0.2910 9.2399+-0.1938 might be 1.0127x faster cell-argument 11.3303+-0.7320 ? 11.7093+-0.6414 ? might be 1.0335x slower cfg-simplify 4.0828+-0.1267 ? 4.1403+-0.1484 ? might be 1.0141x slower chain-getter-access 14.7283+-0.2450 14.6265+-0.3232 cmpeq-obj-to-obj-other 13.9526+-0.4796 13.6591+-0.8101 might be 1.0215x faster constant-test 8.6625+-0.0820 ? 8.6691+-0.2282 ? DataView-custom-properties 59.1028+-1.2333 ? 60.4602+-1.7960 ? might be 1.0230x slower delay-tear-off-arguments-strictmode 3.7916+-0.1042 3.7628+-0.1528 destructuring-arguments 8.9420+-0.4272 8.8617+-0.1091 destructuring-swap 8.8248+-0.1216 8.7610+-0.1743 direct-arguments-getbyval 1.3688+-0.2073 1.3180+-0.1252 might be 1.0386x faster div-boolean-double 6.2582+-0.0839 ? 6.3101+-0.0781 ? div-boolean 11.1657+-0.0529 ? 11.2402+-0.1437 ? double-get-by-val-out-of-bounds 6.8661+-0.1790 ? 6.9277+-0.0943 ? double-pollution-getbyval 11.0887+-0.1948 11.0363+-0.2185 double-pollution-putbyoffset 6.2321+-0.2793 ? 6.2729+-0.1514 ? double-to-int32-typed-array-no-inline 3.1509+-0.2242 ? 3.1854+-0.0859 ? might be 1.0109x slower double-to-int32-typed-array 2.8615+-0.0567 2.7711+-0.1842 might be 1.0326x faster double-to-uint32-typed-array-no-inline 3.2595+-0.0976 3.2131+-0.2519 might be 1.0144x faster double-to-uint32-typed-array 2.8711+-0.1575 ? 2.9172+-0.1010 ? might be 1.0161x slower elidable-new-object-dag 60.1780+-2.0402 ? 60.9244+-1.7257 ? might be 1.0124x slower elidable-new-object-roflcopter 226.7963+-1.7466 ? 227.8820+-2.5128 ? elidable-new-object-then-call 57.4380+-5.5320 ? 60.5917+-3.8055 ? might be 1.0549x slower elidable-new-object-tree 69.4826+-2.1378 68.9191+-2.1999 empty-string-plus-int 8.3273+-0.1327 8.1942+-0.1416 might be 1.0162x faster emscripten-cube2hash 52.9150+-1.4881 ? 53.2257+-1.6131 ? external-arguments-getbyval 2.1085+-0.1231 2.0749+-0.1793 might be 1.0162x faster external-arguments-putbyval 3.2739+-0.1604 3.1666+-0.0733 might be 1.0339x faster fixed-typed-array-storage-var-index 1.7460+-0.1647 ? 1.7579+-0.1397 ? fixed-typed-array-storage 1.2939+-0.0876 ? 1.3383+-0.0317 ? might be 1.0342x slower Float32Array-matrix-mult 6.6221+-0.5241 ? 6.7838+-0.6493 ? might be 1.0244x slower Float32Array-to-Float64Array-set 91.2040+-4.0987 91.1055+-2.1155 Float64Array-alloc-long-lived 98.6553+-1.2867 98.3096+-0.2197 Float64Array-to-Int16Array-set 105.1567+-0.4697 105.0001+-0.4713 fold-double-to-int 20.0325+-0.2346 ? 20.0461+-0.3318 ? fold-get-by-id-to-multi-get-by-offset-rare-int 27.3409+-2.1126 26.2881+-0.5610 might be 1.0400x faster fold-get-by-id-to-multi-get-by-offset 25.3150+-1.5848 ? 26.0165+-2.6594 ? might be 1.0277x slower fold-multi-get-by-offset-to-get-by-offset 18.2576+-0.5806 ? 18.9356+-0.1033 ? might be 1.0371x slower fold-multi-get-by-offset-to-poly-get-by-offset 18.3865+-0.4149 18.1356+-0.2688 might be 1.0138x faster fold-multi-put-by-offset-to-poly-put-by-offset 18.7703+-1.9159 ? 18.9954+-0.7164 ? might be 1.0120x slower fold-multi-put-by-offset-to-put-by-offset 16.7549+-0.2813 ? 17.7465+-1.9128 ? might be 1.0592x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 22.3734+-0.1977 ? 22.5104+-0.5958 ? fold-put-by-id-to-multi-put-by-offset 27.8679+-2.3672 27.2734+-1.1381 might be 1.0218x faster fold-put-structure 17.0443+-0.4927 ? 17.3036+-0.1999 ? might be 1.0152x slower for-of-iterate-array-entries 8.7953+-0.5223 8.7378+-0.2148 for-of-iterate-array-keys 4.2797+-0.2565 ? 4.3210+-0.2754 ? for-of-iterate-array-values 3.9532+-0.2383 3.7375+-0.1509 might be 1.0577x faster fround 25.5994+-1.1030 ? 25.7698+-0.1932 ? ftl-library-inlining-dataview 105.8339+-3.5403 104.9280+-0.1371 ftl-library-inlining 101.5806+-2.0905 100.4156+-0.1489 might be 1.0116x faster function-dot-apply 2.5223+-0.0603 2.4702+-0.1383 might be 1.0211x faster function-test 5.2675+-0.2565 5.2198+-0.4260 function-with-eval 172.4597+-2.4075 ? 172.7962+-2.7905 ? gcse-poly-get-less-obvious 28.4269+-0.1477 ? 28.4977+-0.3496 ? gcse-poly-get 28.3622+-0.2106 ? 28.3862+-0.2359 ? gcse 7.2984+-0.2400 7.2861+-0.1180 get-by-id-bimorphic-check-structure-elimination-simple 3.7209+-0.1688 3.7073+-0.0645 get-by-id-bimorphic-check-structure-elimination 9.3388+-0.1887 ? 9.3574+-0.3235 ? get-by-id-chain-from-try-block 17.8676+-0.3029 17.5131+-0.1020 might be 1.0202x faster get-by-id-check-structure-elimination 8.4736+-0.3158 ? 8.6105+-0.0834 ? might be 1.0162x slower get-by-id-proto-or-self 26.0175+-1.7655 25.9824+-1.5391 get-by-id-quadmorphic-check-structure-elimination-simple 4.4435+-0.0328 4.4376+-0.0513 get-by-id-self-or-proto 26.9262+-3.1036 ? 27.6690+-2.9892 ? might be 1.0276x slower get-by-val-out-of-bounds 6.7737+-0.1688 ? 6.8733+-0.2203 ? might be 1.0147x slower get_callee_monomorphic 5.8738+-0.2542 5.7171+-0.5147 might be 1.0274x faster get_callee_polymorphic 4.9135+-0.1261 4.7496+-0.1139 might be 1.0345x faster getter-no-activation 6.5065+-0.0993 ? 6.5676+-0.1071 ? getter-richards 192.1076+-18.8797 ? 194.4346+-13.9679 ? might be 1.0121x slower getter 7.5003+-0.1755 7.3662+-0.1626 might be 1.0182x faster global-var-const-infer-fire-from-opt 1.5093+-0.2696 1.3338+-0.1184 might be 1.1316x faster global-var-const-infer 1.3847+-0.2097 1.2709+-0.1918 might be 1.0895x faster HashMap-put-get-iterate-keys 41.2615+-0.2282 40.9263+-0.4442 HashMap-put-get-iterate 40.8093+-1.0773 40.6593+-1.0959 HashMap-string-put-get-iterate 38.6953+-1.6488 38.5407+-1.4537 hoist-make-rope 16.1783+-3.4032 ? 17.4655+-0.8126 ? might be 1.0796x slower hoist-poly-check-structure-effectful-loop 7.2843+-0.2379 ? 7.4351+-0.1023 ? might be 1.0207x slower hoist-poly-check-structure 5.4272+-0.1085 ? 5.4758+-0.2227 ? imul-double-only 11.6577+-0.6777 ? 11.6974+-0.5539 ? imul-int-only 14.0948+-1.0739 ? 14.2753+-0.9849 ? might be 1.0128x slower imul-mixed 10.9638+-0.3048 ? 11.0515+-0.4007 ? in-four-cases 27.1639+-0.5055 ? 27.2751+-0.4101 ? in-one-case-false 14.1995+-0.1855 ? 14.2211+-0.2223 ? in-one-case-true 14.3170+-0.1602 14.1969+-0.1894 in-two-cases 14.8217+-0.1888 14.6805+-0.1373 indexed-properties-in-objects 4.2988+-0.1370 ? 4.3268+-0.1315 ? infer-closure-const-then-mov-no-inline 5.0044+-0.0459 ? 5.0240+-0.0846 ? infer-closure-const-then-mov 27.9688+-0.1908 ? 28.1130+-0.3754 ? infer-closure-const-then-put-to-scope-no-inline 17.1475+-0.3301 ? 17.2368+-0.1381 ? infer-closure-const-then-put-to-scope 32.1221+-0.3930 31.8705+-0.2382 infer-closure-const-then-reenter-no-inline 73.8111+-0.1612 ? 73.9678+-0.2286 ? infer-closure-const-then-reenter 32.0594+-0.4520 31.7745+-0.2844 infer-constant-global-property 5.3455+-0.0681 5.3213+-0.0945 infer-constant-property 3.7393+-0.1187 ? 3.7405+-0.1575 ? infer-one-time-closure-ten-vars 16.1230+-0.7073 16.0197+-0.2510 infer-one-time-closure-two-vars 16.3003+-0.3845 16.1303+-0.5267 might be 1.0105x faster infer-one-time-closure 15.8395+-0.6472 ? 16.0261+-0.2898 ? might be 1.0118x slower infer-one-time-deep-closure 28.1194+-0.2524 28.0402+-0.1714 inline-arguments-access 2.4158+-0.1835 2.4148+-0.0645 inline-arguments-aliased-access 2.7497+-0.2118 2.6597+-0.0782 might be 1.0338x faster inline-arguments-local-escape 18.7795+-0.3268 18.5490+-0.3420 might be 1.0124x faster inline-get-scoped-var 6.3769+-0.1493 ? 6.4465+-0.1665 ? might be 1.0109x slower inlined-put-by-id-transition 14.5955+-0.7530 14.3987+-0.1975 might be 1.0137x faster int-or-other-abs-then-get-by-val 7.8982+-0.0925 ? 7.9332+-0.2898 ? int-or-other-abs-zero-then-get-by-val 30.4277+-0.3157 30.3200+-0.0426 int-or-other-add-then-get-by-val 6.5722+-0.2378 ? 6.7928+-0.0943 ? might be 1.0336x slower int-or-other-add 8.8845+-0.2070 ? 8.9659+-0.1314 ? int-or-other-div-then-get-by-val 5.9057+-0.0968 5.6932+-0.1777 might be 1.0373x faster int-or-other-max-then-get-by-val 7.6295+-0.2556 7.4570+-0.1027 might be 1.0231x faster int-or-other-min-then-get-by-val 6.0103+-0.0488 ? 6.0257+-0.1094 ? int-or-other-mod-then-get-by-val 5.8036+-0.0492 ? 5.8546+-0.0975 ? int-or-other-mul-then-get-by-val 5.6374+-0.1695 ? 5.7545+-0.1807 ? might be 1.0208x slower int-or-other-neg-then-get-by-val 7.1462+-0.1779 7.0687+-0.0844 might be 1.0110x faster int-or-other-neg-zero-then-get-by-val 30.1871+-0.3581 ? 30.3138+-0.3928 ? int-or-other-sub-then-get-by-val 6.8007+-0.2228 6.7415+-0.1076 int-or-other-sub 5.8382+-0.1543 ? 5.9107+-0.0930 ? might be 1.0124x slower int-overflow-local 6.5865+-0.1894 6.5865+-0.1479 Int16Array-alloc-long-lived 69.3333+-0.9877 ? 69.5580+-0.2875 ? Int16Array-bubble-sort-with-byteLength 44.9703+-0.3376 ? 45.1652+-0.4600 ? Int16Array-bubble-sort 43.9740+-0.4705 43.8124+-0.1480 Int16Array-load-int-mul 2.2486+-0.0850 2.2251+-0.0940 might be 1.0106x faster Int16Array-to-Int32Array-set 85.0925+-1.5504 ? 86.6466+-2.7631 ? might be 1.0183x slower Int32Array-alloc-large 38.8806+-0.8456 38.7410+-1.2514 Int32Array-alloc-long-lived 77.2256+-0.7552 ? 77.3455+-0.6883 ? Int32Array-alloc 4.4130+-0.1975 ? 4.5422+-0.0444 ? might be 1.0293x slower Int32Array-Int8Array-view-alloc 9.9979+-0.3843 ? 10.0218+-0.3360 ? int52-spill 9.8630+-0.2216 9.8511+-0.4173 Int8Array-alloc-long-lived 63.3047+-0.9542 62.9261+-0.8190 Int8Array-load-with-byteLength 5.3712+-0.0536 ? 5.3895+-0.0353 ? Int8Array-load 5.4045+-0.1029 ? 5.4268+-0.1568 ? integer-divide 16.4041+-0.0440 16.3264+-0.1931 integer-modulo 3.1782+-0.1391 3.1506+-0.1569 large-int-captured 9.9332+-0.2951 ? 9.9991+-0.1260 ? large-int-neg 23.4200+-0.3708 ? 23.4615+-0.0999 ? large-int 21.0140+-0.4971 20.9979+-0.4106 logical-not 6.9606+-0.3751 6.8919+-0.2255 lots-of-fields 15.8227+-0.3158 15.6618+-0.2877 might be 1.0103x faster make-indexed-storage 4.6394+-0.1902 4.3648+-0.5294 might be 1.0629x faster make-rope-cse 6.2187+-0.4656 6.2034+-0.2740 marsaglia-larger-ints 64.3711+-0.7698 63.7964+-0.8763 marsaglia-osr-entry 32.3292+-0.7241 31.6858+-0.4001 might be 1.0203x faster max-boolean 3.6928+-0.0665 ? 3.7140+-0.0690 ? method-on-number 26.4035+-0.5871 ? 26.9631+-1.4138 ? might be 1.0212x slower min-boolean 3.7292+-0.1063 3.6640+-0.1526 might be 1.0178x faster minus-boolean-double 4.7460+-0.0945 ? 4.7672+-0.0839 ? minus-boolean 3.6267+-0.0682 ? 3.6631+-0.1046 ? might be 1.0100x slower misc-strict-eq 62.7381+-0.6039 ? 64.5027+-8.4910 ? might be 1.0281x slower mod-boolean-double 13.3830+-0.1178 13.3262+-0.1702 mod-boolean 10.1968+-0.1210 10.0786+-0.3492 might be 1.0117x faster mul-boolean-double 5.5607+-0.0539 5.5407+-0.0959 mul-boolean 3.9907+-0.0433 ? 3.9991+-0.0942 ? neg-boolean 4.8756+-0.1079 4.8442+-0.0816 negative-zero-divide 0.5137+-0.0824 ? 0.5978+-0.0985 ? might be 1.1637x slower negative-zero-modulo 0.5793+-0.0445 0.5203+-0.0911 might be 1.1133x faster negative-zero-negate 0.5425+-0.1009 ? 0.5475+-0.0986 ? nested-function-parsing 35.3429+-0.4282 ? 35.5314+-0.5264 ? new-array-buffer-dead 4.1840+-0.1201 4.0891+-0.0788 might be 1.0232x faster new-array-buffer-push 10.6068+-0.3360 ? 10.7335+-0.5192 ? might be 1.0120x slower new-array-dead 18.0568+-0.8132 17.8026+-2.0187 might be 1.0143x faster new-array-push 7.6938+-0.4593 7.6136+-0.4226 might be 1.0105x faster number-test 4.7355+-0.0973 4.7263+-0.1792 object-closure-call 9.0123+-0.1554 ? 9.0856+-0.2060 ? object-test 5.0338+-0.1843 ? 5.2270+-0.2014 ? might be 1.0384x slower obvious-sink-pathology-taken 193.1308+-4.3881 ? 193.4605+-3.5493 ? obvious-sink-pathology 182.8864+-1.6314 ? 183.3647+-1.3596 ? obviously-elidable-new-object 54.4272+-4.3139 ? 55.7643+-0.9572 ? might be 1.0246x slower plus-boolean-arith 3.7715+-0.0699 3.7708+-0.0856 plus-boolean-double 4.7588+-0.1548 ? 4.8088+-0.1525 ? might be 1.0105x slower plus-boolean 3.6003+-0.0970 3.5986+-0.1636 poly-chain-access-different-prototypes-simple 4.3901+-0.1139 4.3684+-0.1098 poly-chain-access-different-prototypes 3.7127+-0.1669 3.6774+-0.1273 poly-chain-access-simpler 4.4097+-0.0524 4.4069+-0.1152 poly-chain-access 3.2458+-0.7854 ? 3.2871+-0.6239 ? might be 1.0127x slower poly-stricteq 78.9216+-0.2204 78.8512+-0.2042 polymorphic-array-call 2.6255+-0.1611 ? 2.8098+-0.2170 ? might be 1.0702x slower polymorphic-get-by-id 4.7592+-0.1520 4.7288+-0.1615 polymorphic-put-by-id 65.9108+-40.8098 51.2645+-9.1029 might be 1.2857x faster polymorphic-structure 25.4593+-2.0687 25.2181+-2.5523 polyvariant-monomorphic-get-by-id 13.1194+-0.1963 ? 13.1890+-0.2291 ? proto-getter-access 14.8884+-0.5178 14.6929+-0.2292 might be 1.0133x faster put-by-id-replace-and-transition 12.3292+-0.3191 12.3202+-0.2364 put-by-id-slightly-polymorphic 3.9644+-0.0733 ? 4.0188+-0.1173 ? might be 1.0137x slower put-by-id 20.1829+-0.5304 ? 20.2830+-0.3572 ? put-by-val-direct 0.8912+-0.1572 ? 0.9322+-0.1469 ? might be 1.0460x slower put-by-val-large-index-blank-indexing-type 9.1901+-0.1787 ? 9.3301+-0.2704 ? might be 1.0152x slower put-by-val-machine-int 3.7016+-0.0620 3.6334+-0.1871 might be 1.0188x faster rare-osr-exit-on-local 20.6352+-0.3933 ? 20.7323+-0.2305 ? register-pressure-from-osr 30.5410+-0.3514 ? 30.6889+-0.5393 ? setter 7.3904+-0.2401 7.3760+-0.0759 simple-activation-demo 37.3148+-0.3246 ? 37.3370+-0.4877 ? simple-getter-access 20.2988+-0.2373 ? 20.3937+-0.2283 ? simple-poly-call-nested 24.3596+-2.1478 ? 25.5200+-0.6094 ? might be 1.0476x slower simple-poly-call 1.9127+-0.0841 1.7471+-0.1449 might be 1.0948x faster sin-boolean 29.1750+-4.3924 28.2089+-2.8591 might be 1.0342x faster sinkable-new-object-dag 105.6507+-2.0809 105.3959+-1.6423 sinkable-new-object-taken 79.8982+-5.1309 ? 80.5720+-5.7387 ? sinkable-new-object 59.8780+-3.3559 59.4673+-1.9124 slow-array-profile-convergence 4.3970+-0.1738 4.3038+-0.2912 might be 1.0217x faster slow-convergence 5.1273+-0.2973 ? 5.1501+-0.2223 ? sparse-conditional 1.6600+-0.1304 ? 1.7200+-0.1091 ? might be 1.0361x slower splice-to-remove 25.9040+-6.3450 23.9104+-0.9035 might be 1.0834x faster string-char-code-at 22.5710+-0.3281 ? 22.5760+-0.1379 ? string-concat-object 2.8878+-0.0542 ? 2.8912+-0.1062 ? string-concat-pair-object 3.0504+-0.3916 2.8508+-0.0940 might be 1.0700x faster string-concat-pair-simple 17.4365+-0.2055 17.2180+-0.1933 might be 1.0127x faster string-concat-simple 17.7892+-0.9581 17.7352+-0.5841 string-cons-repeat 11.6409+-0.2639 11.5594+-0.3281 string-cons-tower 10.9717+-0.7389 10.6776+-0.3984 might be 1.0276x faster string-equality 25.3356+-0.2002 25.2435+-0.2721 string-get-by-val-big-char 11.1638+-0.6235 10.9599+-0.2861 might be 1.0186x faster string-get-by-val-out-of-bounds-insane 6.2275+-0.2855 ? 6.3068+-0.1624 ? might be 1.0127x slower string-get-by-val-out-of-bounds 7.7307+-0.0646 ? 7.7767+-0.2443 ? string-get-by-val 5.4383+-0.1003 ? 5.4775+-0.1048 ? string-hash 3.1227+-0.1067 3.1019+-0.0705 string-long-ident-equality 20.7353+-0.3528 20.5071+-0.3715 might be 1.0111x faster string-repeat-arith 46.6816+-1.1185 ? 46.8887+-1.1672 ? string-sub 92.6799+-2.8343 91.2147+-0.9082 might be 1.0161x faster string-test 4.8079+-0.1593 4.7448+-0.1098 might be 1.0133x faster string-var-equality 49.8838+-0.5495 ? 49.9105+-0.2640 ? structure-hoist-over-transitions 4.0237+-0.1497 3.7920+-0.2644 might be 1.0611x faster substring-concat-weird 60.2033+-0.3329 60.1250+-0.6760 substring-concat 63.6879+-0.4284 ? 63.7352+-0.3766 ? substring 71.2977+-1.1155 70.8245+-0.1884 switch-char-constant 3.7321+-0.1386 ? 3.8049+-0.0881 ? might be 1.0195x slower switch-char 9.0539+-0.1118 ? 9.0677+-0.0960 ? switch-constant 16.0558+-0.4754 15.6205+-1.0968 might be 1.0279x faster switch-string-basic-big-var 24.9419+-2.1798 24.3000+-2.6618 might be 1.0264x faster switch-string-basic-big 26.2802+-6.0119 24.8378+-1.5962 might be 1.0581x faster switch-string-basic-var 31.1710+-1.2060 30.5059+-0.5550 might be 1.0218x faster switch-string-basic 27.9785+-0.5688 27.9263+-0.4390 switch-string-big-length-tower-var 29.0103+-0.2376 28.8912+-0.2907 switch-string-length-tower-var 22.6331+-0.2243 ? 22.6807+-0.1489 ? switch-string-length-tower 17.0455+-0.2459 17.0167+-0.3014 switch-string-short 17.0472+-0.2904 ? 17.1395+-0.0973 ? switch 17.0483+-5.6390 ? 18.3518+-5.9007 ? might be 1.0765x slower tear-off-arguments-simple 2.6840+-0.1897 ? 2.6915+-0.1327 ? tear-off-arguments 4.1147+-0.1977 4.0338+-0.1784 might be 1.0200x faster temporal-structure 19.8411+-0.3220 19.7670+-0.1565 to-int32-boolean 23.6723+-0.2690 ? 23.6812+-0.2819 ? undefined-test 4.8489+-0.2051 ? 4.9797+-0.0860 ? might be 1.0270x slower unprofiled-licm 31.8737+-0.7408 31.2333+-1.1014 might be 1.0205x faster weird-inlining-const-prop 2.8970+-0.3439 2.7829+-0.1086 might be 1.0410x faster <arithmetic> 24.2193+-0.1807 24.1929+-0.0571 might be 1.0011x faster <geometric> * 11.9491+-0.0637 11.9300+-0.0327 might be 1.0016x faster <harmonic> 6.1166+-0.1025 6.1098+-0.0191 might be 1.0011x faster base new AsmBench: bigfib.cpp 765.3113+-9.5552 763.2983+-6.2206 cray.c 775.7889+-2.5842 775.7218+-2.9207 dry.c 742.1899+-16.4512 ? 751.5627+-1.8093 ? might be 1.0126x slower FloatMM.c 1100.5737+-2.8897 1098.7407+-1.8540 gcc-loops.cpp 6741.5075+-18.4717 ? 6747.2728+-25.2418 ? n-body.c 1913.2250+-2.9021 ? 1914.6421+-3.2386 ? Quicksort.c 669.5978+-1.0605 ? 670.1346+-4.7238 ? stepanov_container.cpp 5561.4227+-36.6834 ? 5561.8893+-15.2593 ? Towers.c 456.7777+-2.2341 456.5948+-2.3970 <arithmetic> 2080.7105+-6.2736 ? 2082.2063+-2.9414 ? might be 1.0007x slower <geometric> * 1300.4707+-5.2685 ? 1301.9607+-1.9934 ? might be 1.0011x slower <harmonic> 958.9394+-4.7436 ? 960.2415+-1.7953 ? might be 1.0014x slower base new CompressionBench: huffman 766.5085+-18.8498 765.0837+-31.6104 arithmetic-simple 658.4100+-3.8763 ? 661.7753+-9.5518 ? arithmetic-precise 487.0505+-9.7649 483.1703+-0.9230 arithmetic-complex-precise 485.2621+-5.7781 481.6537+-2.2042 arithmetic-precise-order-0 705.6872+-14.6751 696.1768+-11.3209 might be 1.0137x faster arithmetic-precise-order-1 534.6540+-6.9562 ? 537.1047+-6.1721 ? arithmetic-precise-order-2 611.8352+-15.5463 609.1827+-2.3624 arithmetic-simple-order-1 675.4501+-2.2608 674.1208+-3.6378 arithmetic-simple-order-2 761.1940+-3.9704 759.6733+-3.8439 lz-string 491.4716+-5.3958 489.9752+-7.7746 <arithmetic> 617.7523+-5.8621 615.7917+-3.5233 might be 1.0032x faster <geometric> * 608.4656+-5.7111 606.4797+-3.0508 might be 1.0033x faster <harmonic> 599.1991+-5.6306 597.1748+-2.6749 might be 1.0034x faster base new All benchmarks: <arithmetic> 156.4079+-0.4644 156.3048+-0.6576 might be 1.0007x faster <geometric> 20.1840+-0.0685 20.1571+-0.0564 might be 1.0013x faster <harmonic> 5.1155+-0.0447 5.1123+-0.0188 might be 1.0006x faster base new Geomean of preferred means: <scaled-result> 101.2226+-0.3062 101.1790+-0.2300 might be 1.0004x faster === End of Run 1 ===
Mark Lam
Comment 4 2014-11-05 17:44:37 PST
(In reply to comment #3) > ... in dilatable in v8-spider. ... I meant "deltablue".
Mark Lam
Comment 5 2014-11-05 17:54:20 PST
Thanks for the review. I've renamed the var as suggested. Landed in r175653: <http://trac.webkit.org/r175653>.
Note You need to log in before you can comment on or make changes to this bug.