Closed Bug 615252 Opened 15 years ago Closed 15 years ago

Merge gcTrace and gcTraceLarge methods

Categories

(Tamarin Graveyard :: Garbage Collection (mmGC), defect, P1)

defect

Tracking

(Not tracked)

RESOLVED FIXED
Q3 11 - Serrano

People

(Reporter: lhansen, Assigned: lhansen)

References

Details

(Whiteboard: has-patch)

Attachments

(4 files, 1 obsolete file)

The exact tracer calls one of two methods, called gcTrace or gcTraceLarge, depending on the size of the object. This is the result of wishing to optimize for the common case (small, exactly traced objects) by using a simpler call protocol for gcTrace and by optimizing the path in MarkItem for that case. However, the resulting API is a little tricky to use correctly, and it would be useful to see if we can't find a way to merge the two in some reasonable way so that hand-written tracers will be less error-prone.
Attached patch Preliminary patch (obsolete) — Splinter Review
Work in progress. Passes DD acceptance testing on Mac. No perf results, no xplat compilation attempts yet.
Priority: P3 → P2
Mac Pro (2x2.93GHz Xeon), 16GB RAM, relatively idle, binaries built with configure.py (no debugger), avm1 is TR 5733, avm2 is TR 5733 + above patch. Mostly it's a wash but there are a couple of significant slowdowns (on programs where that makes scant sense) and one incredible speedup that is, well, not credible. Further investigation required. test best avg best avg %dBst %dAvg Metric: iterations/second Dir: jsmicro/ alloc-1 47.1 47.1 47.0 46.9 -0.3 -0.4 alloc-10 16.6 16.6 16.7 16.7 0.6 0.6 alloc-11 15.7 15.7 15.9 15.9 1.7 1.6 + alloc-12 15.7 15.7 15.9 15.9 1.2 1.2 + alloc-13 90.3 90.2 92.0 91.9 1.9 1.9 + alloc-14 75.0 74.3 76.2 75.0 1.6 1.0 alloc-2 23.1 23.1 23.5 23.5 1.6 1.6 + alloc-3 17.6 17.5 17.5 17.4 -0.4 -0.6 alloc-4 53.1 53.1 53.3 53.2 0.4 0.3 alloc-5 39.0 38.7 38.0 37.9 -2.7 -2.0 - alloc-6 72.6 72.5 74.3 74.3 2.4 2.5 + alloc-7 45.4 45.4 44.7 44.7 -1.6 -1.6 - alloc-8 17.7 17.6 17.7 17.7 0.2 0.4 alloc-9 17.7 17.7 17.7 17.7 -0.1 -0.0 arguments-1 186.3 186.1 192.6 192.5 3.4 3.4 + arguments-2 126.7 126.6 123.8 122.9 -2.4 -3.0 - arguments-3 21.9 21.9 22.2 22.1 1.1 1.0 + array-1 471.1 470.9 471.5 470.7 0.1 -0.0 array-2 340.3 340.3 338.7 338.5 -0.5 -0.5 array-pop-1 83.5 83.1 85.6 85.3 2.5 2.7 + array-push-1 57.5 57.4 57.2 57.1 -0.5 -0.6 array-shift-1 70.2 69.7 72.0 71.7 2.5 2.9 + array-slice-1 21.1 21.0 21.3 21.3 1.1 1.4 array-sort-1 31.5 31.4 31.0 31.0 -1.7 -1.4 - array-sort-2 2.8 2.8 2.8 2.8 -0.3 -0.1 array-sort-3 24.9 24.8 24.8 24.7 -0.3 -0.4 array-sort-4 12.5 12.5 12.6 12.6 1.2 0.9 + array-unshift-1 26.5 26.4 27.2 27.2 2.8 2.9 + closedvar-read-1 747.3 745.5 746.3 745.3 -0.1 -0.0 closedvar-write-1 544.5 543.6 544.5 543.7 0 0.0 closedvar-write-2 547.5 547.5 548.9 548.5 0.3 0.2 + do-1 741.3 740.5 743.3 742.7 0.3 0.3 + for-1 737.3 736.9 739.3 738.9 0.3 0.3 + for-2 233.8 233.5 232.3 232.0 -0.6 -0.6 - for-3 172.5 172.3 173.3 173.2 0.5 0.5 for-in-1 345.3 344.0 346.7 345.4 0.4 0.4 for-in-2 346.3 345.5 345.3 344.8 -0.3 -0.2 funcall-1 258.5 258.4 257.7 257.6 -0.3 -0.3 funcall-2 252.2 252.0 251.2 251.1 -0.4 -0.4 - funcall-3 246.3 246.3 247.0 247.0 0.3 0.3 funcall-4 1655.3 1654.7 1657.3 1657.1 0.1 0.1 + globalvar-read-1 739.3 739.1 738.3 737.8 -0.1 -0.2 - globalvar-write-1 555.4 555.2 556.4 555.3 0.2 0.0 isNaN-1 649.7 649.6 650.7 650.4 0.2 0.1 + lookup-array-fetch-1 760.2 759.1 755.2 754.5 -0.7 -0.6 - lookup-array-in-1 1191.8 1191.0 1194.8 1194.2 0.3 0.3 + lookup-object-fetch-1 811.2 810.6 806.2 805.6 -0.6 -0.6 - lookup-object-in-1 1055.9 1053.9 1065.9 1065.5 0.9 1.1 + number-toString-1 7.0 7.0 7.1 7.1 1.8 1.8 number-toString-2 67.0 66.9 66.8 66.7 -0.3 -0.3 oop-1 4.5 4.5 4.4 4.3 -4.0 -3.9 - parseFloat-1 62.3 62.2 64.3 64.3 3.3 3.3 + parseInt-1 148.9 148.7 150.9 149.4 1.4 0.5 + regex-exec-1 63.9 63.9 62.3 62.2 -2.6 -2.6 - regex-exec-2 78.9 78.5 77.3 77.3 -2.0 -1.6 - regex-exec-3 119.5 119.4 120.9 120.7 1.1 1.1 + regex-exec-4 272.2 270.6 267.5 266.5 -1.7 -1.5 - string-casechange-1 20.4 20.4 19.9 19.9 -2.6 -2.5 - string-casechange-2 20.6 20.5 20.0 20.0 -2.9 -2.8 - string-charAt-1 119.6 117.9 119.6 119.3 0 1.2 string-charAt-2 53.0 53.0 52.4 52.4 -1.2 -1.1 - string-charCodeAt-1 109.8 109.7 109.9 109.7 0.1 0.0 string-charCodeAt-2 109.1 109.1 109.5 109.4 0.3 0.3 string-fromCharCode-1 92.9 92.8 90.6 90.6 -2.4 -2.4 - string-fromCharCode-2 46.0 46.0 45.8 45.8 -0.4 -0.5 string-fromCharCode-3 78.5 78.3 78.1 78.0 -0.5 -0.3 string-fromCharCode-4 82.5 82.5 82.5 82.5 0 0 string-indexOf-1 100.6 100.2 99.0 98.9 -1.6 -1.3 - string-indexOf-2 64.9 64.9 64.5 64.5 -0.7 -0.7 string-indexOf-3 44.1 43.5 43.4 43.3 -1.5 -0.6 - string-lastIndexOf-1 99.8 99.8 99.8 99.7 0 -0.0 string-lastIndexOf-2 65.8 65.8 64.3 64.3 -2.3 -2.3 - string-lastIndexOf-3 65.8 65.7 65.9 65.8 0.2 0.1 string-slice-1 58.3 58.2 56.5 56.5 -3.0 -2.9 - string-split-1 10.4 10.4 10.5 10.5 0.3 0.4 string-split-2 10.1 10.0 10.1 10.1 0.7 0.8 string-substring-1 60.8 60.7 59.8 59.7 -1.6 -1.6 - switch-1 125.1 125.0 124.9 124.8 -0.2 -0.2 switch-2 75.3 75.2 75.2 75.1 -0.1 -0.1 switch-3 87.9 87.7 87.6 87.5 -0.4 -0.2 try-1 208.8 208.5 202.4 202.2 -3.1 -3.0 - try-2 18.4 18.3 18.3 18.2 -0.3 -0.4 try-3 49.7 49.6 51.4 51.3 3.4 3.5 + while-1 737.3 737.1 739.3 739.1 0.3 0.3 + Dir: asmicro/ alloc-1 48.0 47.9 48.7 48.7 1.4 1.5 + alloc-10 17.2 17.1 17.1 17.0 -0.5 -0.4 alloc-11 18.1 18.1 18.3 18.2 0.9 0.8 alloc-12 17.9 17.9 18.1 18.1 1.5 1.5 + alloc-13 102.6 102.5 104.9 104.7 2.2 2.1 + alloc-14 83.5 82.6 82.6 80.5 -1.1 -2.6 alloc-2 23.7 23.6 24.1 24.0 1.7 1.6 + alloc-3 17.8 17.7 17.7 17.6 -0.7 -0.3 alloc-4 55.0 54.9 55.6 55.5 1.0 1.0 + alloc-5 41.0 40.8 40.8 40.7 -0.6 -0.3 alloc-6 84.1 84.1 85.4 85.4 1.6 1.6 + alloc-7 45.4 45.3 45.3 45.2 -0.2 -0.1 alloc-8 18.2 18.2 18.3 18.2 0.3 0.3 alloc-9 18.1 18.1 18.3 18.2 0.7 0.7 arguments-1 935.1 934.3 824.2 813.8 -11.9 -12.9 -- arguments-2 491.0 486.6 470.5 470.2 -4.2 -3.4 - arguments-3 24.3 24.2 24.7 24.6 1.3 1.6 + arguments-4 34.0 33.9 34.2 34.0 0.6 0.3 array-1 2107.9 2104.3 2108.9 2107.5 0.0 0.2 array-2 715.3 715.0 716.3 715.6 0.1 0.1 + array-pop-1 393.6 391.8 397.2 395.7 0.9 1.0 + array-push-1 374.6 374.1 378.2 376.6 1.0 0.7 + array-shift-1 171.1 170.6 172.5 171.8 0.8 0.7 + array-slice-1 25.6 25.6 25.7 25.7 0.2 0.3 array-sort-1 32.8 32.8 32.6 32.5 -0.6 -1.0 array-sort-2 2.8 2.8 2.8 2.8 0.1 -0.1 array-sort-3 24.8 24.7 24.8 24.8 -0.2 0.2 array-sort-4 12.0 11.9 12.1 12.1 1.3 1.6 + array-unshift-1 215.4 215.0 217.9 217.8 1.2 1.3 + closedvar-read-1 4770.2 4767.6 4758.2 4755.4 -0.3 -0.3 - closedvar-write-1 6565.4 6530.9 6547.5 6531.9 -0.3 0.0 closedvar-write-2 5888.1 5444.8 6544.5 6524.3 11.1 19.8 + do-1 4716.3 4713.7 4729.3 4724.3 0.3 0.2 + for-1 4719.3 4716.1 4724.3 4719.9 0.1 0.1 for-2 2877.1 2875.9 2876.1 2874.7 -0.0 -0.0 for-3 3009.0 3007.2 3010.0 3006.4 0.0 -0.0 for-in-1 445.1 444.1 441.6 440.8 -0.8 -0.8 - for-in-2 446.1 445.1 439.1 437.8 -1.6 -1.6 - funcall-1 382.2 381.8 382.2 382.0 0 0.1 funcall-2 264.9 264.7 264.7 264.4 -0.1 -0.1 funcall-3 369.6 369.2 368.6 368.6 -0.3 -0.2 - funcall-4 133.3 133.3 131.9 131.8 -1.1 -1.1 - globalvar-read-1 5116.9 5046.8 4768.2 4763.8 -6.8 -5.6 -- globalvar-write-1 6524.5 6506.1 6372.6 6357.6 -2.3 -2.3 - isNaN-1 4700.3 4647.4 4683.3 4667.9 -0.4 0.4 isNaN-2 4724.3 4723.1 4719.3 4714.1 -0.1 -0.2 - isNaN-3 4134.9 4130.9 4132.9 4131.3 -0.0 0.0 lookup-array-fetch-1 887.1 886.7 876.1 875.3 -1.2 -1.3 - lookup-array-in-1 1920.1 1915.1 1908.1 1905.3 -0.6 -0.5 - lookup-negindex-array-1 520.5 520.0 514.0 513.7 -1.3 -1.2 - lookup-negindex-array-2 452.1 451.4 447.1 446.5 -1.1 -1.1 - lookup-negindex-object-1 542.9 541.1 535.9 535.5 -1.3 -1.0 - lookup-negindex-object-2 508.5 507.9 503.0 502.6 -1.1 -1.0 - lookup-object-fetch-1 950.0 949.3 943.1 942.9 -0.7 -0.7 - lookup-object-in-1 1594.4 1590.0 1597.4 1595.8 0.2 0.4 number-toString-1 7.1 7.0 7.2 7.1 1.8 1.6 + number-toString-2 79.3 79.3 78.8 78.7 -0.7 -0.7 oop-1 4.5 4.5 4.4 4.4 -0.9 -0.9 parseFloat-1 83.9 83.8 83.3 83.2 -0.8 -0.8 parseInt-1 222.6 222.4 222.8 222.8 0.1 0.2 regex-exec-1 73.9 73.8 70.2 70.1 -5.0 -5.0 -- regex-exec-2 88.0 87.9 84.7 84.6 -3.8 -3.8 - regex-exec-3 136.5 136.0 136.2 135.9 -0.2 -0.1 regex-exec-4 338.0 337.5 327.0 325.8 -3.2 -3.5 - restarg-1 899.1 847.6 847.2 846.2 -5.8 -0.2 - restarg-2 503.5 501.1 499.5 498.8 -0.8 -0.5 - restarg-3 44.0 43.9 44.7 44.6 1.7 1.6 + restarg-4 33.9 33.8 34.0 33.9 0.1 0.4 string-casechange-1 29.9 29.9 29.2 29.0 -2.2 -2.8 - string-casechange-2 29.4 29.2 29.2 28.9 -0.8 -0.9 string-charAt-1 1689.3 1687.9 1692.3 1691.5 0.2 0.2 + string-charAt-2 91.4 91.3 91.5 91.4 0.1 0.1 string-charCodeAt-1 1566.4 1559.2 1569.4 1568.8 0.2 0.6 string-charCodeAt-2 1415.6 1414.6 1416.6 1414.0 0.1 -0.0 string-charCodeAt-3 1237.8 1236.8 1239.8 1238.6 0.2 0.1 + string-charCodeAt-4 2252.7 2250.5 2254.7 2253.9 0.1 0.2 string-charCodeAt-5 1046.0 1045.4 1061.9 1061.1 1.5 1.5 + string-charCodeAt-6 1556.4 1555.0 1570.4 1569.2 0.9 0.9 + string-charCodeAt-7 2252.7 2250.7 2253.7 2250.5 0.0 -0.0 string-fromCharCode-1 356.6 356.3 357.3 356.9 0.2 0.2 string-fromCharCode-2 73.7 73.6 74.6 74.5 1.1 1.2 + string-indexOf-1 255.2 253.3 244.0 243.9 -4.4 -3.7 - string-indexOf-2 143.9 143.7 143.6 143.5 -0.2 -0.2 string-indexOf-3 71.9 71.8 76.2 76.1 6.1 6.1 ++ string-lastIndexOf-1 630.4 629.8 631.4 630.7 0.2 0.1 + string-lastIndexOf-2 143.0 142.9 143.0 142.9 0 0.0 string-lastIndexOf-3 153.9 153.9 154.1 153.9 0.1 0.0 string-slice-1 135.3 135.3 135.6 135.4 0.2 0.1 string-split-1 11.2 11.2 11.4 11.4 1.3 1.3 + string-split-2 10.8 10.8 11.0 11.0 1.5 1.5 + string-substring-1 142.1 142.0 140.7 140.7 -1.0 -0.9 - switch-1 1037.0 1036.6 1037.0 1036.6 0 0 switch-2 145.7 145.6 145.6 145.6 -0.1 -0.0 switch-3 257.2 257.0 257.5 257.4 0.1 0.1 try-1 264.5 264.4 261.5 240.4 -1.1 -9.1 try-2 18.8 18.7 18.6 18.5 -0.7 -1.0 try-3 63.1 63.1 60.8 60.7 -3.7 -3.7 - vector-push-1 50 50.0 49.7 49.7 -0.6 -0.5 while-1 4720.3 4716.9 4729.3 4724.9 0.2 0.2 + Metric: time Dir: jsbench/ Crypt 2693 2695.8 2689 2690.8 0.1 0.2 Euler 5329 5337.4 5347 5351.4 -0.3 -0.3 - FFT 5445 5489.6 5566 5587.4 -2.2 -1.8 - HeapSort 2656 2675.6 2657 2670.2 -0.0 0.2 LUFact 4342 4357.6 4412 4422.6 -1.6 -1.5 - Moldyn 7983 7994.2 7907 7925.8 1.0 0.9 + RayTracer 5454 5467.4 5406 5428 0.9 0.7 + SOR 23879 23950.4 24130 24163.2 -1.1 -0.9 - Series 6745 6754.6 6754 6767.6 -0.1 -0.2 SparseMatmult 8349 8427.8 8280 8286.4 0.8 1.7 + Dir: jsbench/typed/ Crypt 772 773.2 773 774.4 -0.1 -0.2 Euler 6671 6687.4 6621 6653.6 0.7 0.5 + FFT 1335 1337.2 1389 1398.8 -4.0 -4.6 - HeapSort 1103 1105.6 1105 1107.8 -0.2 -0.2 LUFact 1068 1069 1072 1074 -0.4 -0.5 - Moldyn 3401 3412.6 3417 3433 -0.5 -0.6 RayTracer 1028 1029.6 1032 1032.8 -0.4 -0.3 - SOR 6362 6370.4 3562 3572.4 44.0 43.9 ++ Series 5884 5892.4 5821 5834.4 1.1 1.0 + SparseMatmult 2303 2304.6 2255 2261.2 2.1 1.9 + Metric: v8 custom v8 normalized metric (hardcoded in the test) Dir: v8.5/js/ crypto 549 547.4 552 551 0.5 0.7 + deltablue 372 371.6 390 389.6 4.8 4.8 + earley-boyer 1271 1267 1268 1260.6 -0.2 -0.5 raytrace 827 825.6 830 829.2 0.4 0.4 + regexp 112 111.2 110 109.2 -1.8 -1.8 - richards 322 321.2 320 319.6 -0.6 -0.5 - splay 999 984.2 1006 999 0.7 1.5 Dir: v8.5/optimized/ crypto 4282 4271.2 4265 4258.4 -0.4 -0.3 - deltablue 4117 4113.8 4108 4099.2 -0.2 -0.4 earley-boyer 1269 1261.2 1271 1264 0.2 0.2 raytrace 9253 9237.4 9345 9315.4 1.0 0.8 + regexp 112 111.8 109 109 -2.7 -2.5 - richards 4507 4505.8 4525 4519 0.4 0.3 + splay 6691 6685.8 6673 6654.4 -0.3 -0.5 Dir: v8.5/typed/ crypto 3357 3353.2 3363 3361.6 0.2 0.3 + deltablue 4217 4206.8 4163 4159.2 -1.3 -1.1 - earley-boyer 1271 1265 1268 1263.8 -0.2 -0.1 raytrace 9253 9233.4 9317 9306.2 0.7 0.8 + regexp 112 112 110 109.4 -1.8 -2.3 - richards 4507 4501.2 4519 4516.6 0.3 0.3 + splay 1268 1266.6 1280 1278 0.9 0.9 + Dir: v8.5/untyped/ crypto 607 607 613 610.8 1.0 0.6 + deltablue 2035 2031 2041 2038 0.3 0.3 earley-boyer 1267 1262.2 1263 1260.8 -0.3 -0.1 raytrace 3867 3859.4 3875 3861.8 0.2 0.1 regexp 111 111 109 109 -1.8 -1.8 - richards 507 504.2 508 506.6 0.2 0.5 splay 1213 1196.6 1211 1183.6 -0.2 -1.1
(In reply to comment #2) > Mac Pro (2x2.93GHz Xeon), 16GB RAM, relatively idle, binaries built with > configure.py (no debugger), avm1 is TR 5733, avm2 is TR 5733 + above patch. Also: 32-bit binaries, five iterations. The avm2 binary is 20KB smaller.
Identical setup except this is a MacBook Pro (2.6GHz Core 2 Duo, 4GB). Identical binaries. Again mostly a wash with some significant outliers, and a significant and unexplainable speedup on SOR in one case. avm avm2 test best avg best avg %dBst %dAvg Metric: iterations/second Dir: asmicro/ alloc-1 35.0 34.9 35.8 35.8 2.3 2.4 + alloc-10 11.8 11.8 11.8 11.8 -0.1 -0.3 alloc-11 11.5 11.4 11.9 11.8 3.6 3.6 + alloc-12 11.6 11.5 11.9 11.9 2.7 3.0 + alloc-13 73.8 73.6 74.4 74.4 0.8 1.0 alloc-14 62.2 61.6 62.7 62.1 0.8 0.8 alloc-2 16.5 16.5 17.8 17.8 8.1 8.0 ++ alloc-3 13.3 13.2 13.8 13.8 4.2 4.4 + alloc-4 42.6 42.6 40.6 40.5 -4.8 -4.8 - alloc-5 29.6 29.5 27.7 27.6 -6.4 -6.4 -- alloc-6 59.3 59.3 59.1 59.0 -0.4 -0.4 alloc-7 31.0 31.0 32.3 32.3 4.2 4.3 + alloc-8 12.7 12.7 12.6 12.6 -0.3 -0.3 alloc-9 12.7 12.7 12.6 12.6 -0.2 -0.3 arguments-1 607.4 606.9 584.4 584.3 -3.8 -3.7 - arguments-2 351.9 351.0 382.6 382.1 8.7 8.9 ++ arguments-3 16.7 16.7 16.7 16.7 0 0.0 arguments-4 23.8 23.7 23.6 23.4 -0.8 -1.4 array-1 2101.9 2101.7 2102.9 2101.9 0.0 0.0 array-2 516.0 515.4 510.5 510.4 -1.1 -1.0 - array-pop-1 331.3 330.5 333.0 332.0 0.5 0.4 + array-push-1 273.9 273.7 274.5 274.4 0.2 0.3 array-shift-1 129.7 129.0 131.6 131.2 1.4 1.7 + array-slice-1 19.3 19.3 19.0 18.9 -1.6 -1.8 - array-sort-1 23.6 23.6 24.0 23.9 1.4 1.2 + array-sort-2 2.2 2.2 2.2 2.1 -0.7 -0.7 array-sort-3 19.1 19.0 19.0 19.0 -0.4 -0.4 array-sort-4 8.6 8.6 8.6 8.6 0.1 -0.4 array-unshift-1 145.1 144.6 148.9 148.4 2.6 2.7 + closedvar-read-1 4349.7 4340.7 4302.7 4289.9 -1.1 -1.2 - closedvar-write-1 3529.5 3517.9 2883.1 2880.7 -18.3 -18.1 -- closedvar-write-2 3352.6 3341.5 2962.0 2961.0 -11.7 -11.4 -- do-1 3800.2 3780.2 3811.2 3808.8 0.3 0.8 for-1 3687.3 3671.1 3687.3 3686.3 0 0.4 for-2 2484.5 2483.5 2485.5 2484.1 0.0 0.0 for-3 2584.4 2583.2 2583.4 2582.8 -0.0 -0.0 for-in-1 314.7 313.5 329.0 325.8 4.6 3.9 + for-in-2 317.0 316.4 323.4 322.4 2.0 1.9 + funcall-1 279.7 279.4 275.2 274.9 -1.6 -1.6 - funcall-2 195.2 194.2 180.8 180.7 -7.4 -7.0 -- funcall-3 245.8 245.7 243.5 243.4 -0.9 -0.9 funcall-4 94.7 94.7 97.4 97.3 2.9 2.8 + globalvar-read-1 4441.6 4436.8 4360.6 4354.6 -1.8 -1.9 - globalvar-write-1 3446.6 3337.3 3058.9 3050.1 -11.2 -8.6 -- isNaN-1 3636.4 3633.8 3632.4 3630.0 -0.1 -0.1 - isNaN-2 3685.3 3683.1 3686.3 3683.9 0.0 0.0 isNaN-3 3674.3 3658.1 3678.3 3669.3 0.1 0.3 lookup-array-fetch-1 678.3 678.0 657.7 657.1 -3.0 -3.1 - lookup-array-in-1 1536.5 1534.3 1530.5 1526.5 -0.4 -0.5 lookup-negindex-array-1 388.2 387.9 384.2 384.2 -1.0 -0.9 - lookup-negindex-array-2 337.7 337.7 336.7 336.3 -0.3 -0.4 - lookup-negindex-object-1 405.6 405.2 405.6 405.3 0 0.0 lookup-negindex-object-2 383.8 383.8 381.9 381.7 -0.5 -0.5 lookup-object-fetch-1 692.3 692.0 671.3 670.6 -3.0 -3.1 - lookup-object-in-1 1235.8 1235.0 1231.8 1230.4 -0.3 -0.4 - number-toString-1 4.8 4.8 4.8 4.8 0.2 0.3 number-toString-2 55.0 54.9 54.2 54.2 -1.4 -1.4 - oop-1 3.3 3.3 3.3 3.3 0.3 0.3 parseFloat-1 64.5 64.4 64.7 64.7 0.4 0.4 parseInt-1 149.3 146.7 148.7 147.3 -0.4 0.4 regex-exec-1 46.5 46.3 46.4 46.4 -0.3 0.1 regex-exec-2 55.4 55.3 54.6 54.6 -1.4 -1.3 - regex-exec-3 87.4 87.3 85.8 85.8 -1.8 -1.7 - regex-exec-4 216.1 215.8 215.9 215.7 -0.1 -0.1 restarg-1 607.4 607.0 584.4 584.4 -3.8 -3.7 - restarg-2 369.3 368.9 356.3 356.0 -3.5 -3.5 - restarg-3 32.7 32.7 31.3 31.3 -4.4 -4.3 - restarg-4 23.9 23.9 23.2 23.2 -3.0 -3.0 - string-casechange-1 20.4 20.4 21.2 21.2 4.1 4.1 + string-casechange-2 20.3 20.3 21.7 21.7 6.6 6.6 ++ string-charAt-1 1413.6 1413.4 1395.6 1395.0 -1.3 -1.3 - string-charAt-2 68.5 68.5 63.0 62.9 -8.1 -8.1 -- string-charCodeAt-1 1098.9 1098.5 1098.9 1098.5 0 0 string-charCodeAt-2 1006.0 1004.6 1007.0 1006.4 0.1 0.2 string-charCodeAt-3 995.0 995.0 991.0 990.4 -0.4 -0.5 - string-charCodeAt-4 1815.2 1812.2 1816.2 1813.6 0.1 0.1 string-charCodeAt-5 832.2 831.8 832.2 831.8 0 -0.0 string-charCodeAt-6 1098.9 1098.5 1098.9 1098.5 0 0.0 string-charCodeAt-7 1823.2 1821.4 1830.2 1828.8 0.4 0.4 + string-fromCharCode-1 245.3 244.1 244.0 243.4 -0.5 -0.3 string-fromCharCode-2 55.3 55.2 54.2 54.2 -2.0 -1.8 - string-indexOf-1 179.5 179.4 179.5 179.4 0 0 string-indexOf-2 115.8 115.7 115.8 115.7 0 0 string-indexOf-3 66.9 66.9 67.0 67.0 0.1 0.1 string-lastIndexOf-1 478.0 477.7 480.0 479.6 0.4 0.4 + string-lastIndexOf-2 118.4 118.3 118.3 118.3 -0.1 -0.0 string-lastIndexOf-3 120.0 119.9 119.9 119.9 -0.1 -0.0 string-slice-1 106.3 106.2 105.8 105.7 -0.4 -0.4 string-split-1 7.8 7.7 8.1 8.1 4.5 5.4 + string-split-2 8.1 8.0 8.1 8.1 0.7 0.8 string-substring-1 111.7 111.6 110.6 110.4 -1.0 -1.1 switch-1 809.2 809.0 809.2 808.8 0 -0.0 switch-2 113.7 113.6 113.7 113.6 0 -0.0 switch-3 205.6 205.5 205.6 205.5 0 -0.0 try-1 197.2 197.0 199.0 198.4 0.9 0.7 + try-2 13.3 13.3 13.7 13.7 2.7 2.8 + try-3 42.5 42.5 43.5 43.5 2.3 2.2 + vector-push-1 35.5 35.5 35.5 35.5 0.1 0.1 while-1 3687.3 3685.7 3686.3 3685.1 -0.0 -0.0 Dir: jsmicro/ alloc-1 33.4 33.4 34.4 34.4 3.0 3.0 + alloc-10 11.4 11.4 11.4 11.4 0.1 0.2 alloc-11 10.2 10.1 10.4 10.4 1.3 2.2 + alloc-12 10.4 10.3 10.4 10.4 0.6 1.2 alloc-13 65.5 65.4 65.9 65.9 0.7 0.7 alloc-14 56.2 55.9 56.4 56.2 0.4 0.4 alloc-2 16.2 16.2 17.2 17.2 6.5 6.5 ++ alloc-3 13.0 13.0 13.5 13.5 3.6 3.8 + alloc-4 41.1 41.1 38.9 38.9 -5.3 -5.2 -- alloc-5 28.5 28.5 26.8 26.7 -6.3 -6.2 -- alloc-6 53.0 53.0 53.4 53.3 0.6 0.7 alloc-7 31.8 31.8 32.9 32.9 3.5 3.5 + alloc-8 12.3 12.2 12.2 12.2 -0.5 -0.3 alloc-9 12.3 12.3 12.3 12.2 -0.2 -0.2 arguments-1 133.9 133.8 134.7 134.6 0.6 0.7 arguments-2 87.6 87.6 85.8 85.7 -2.1 -2.2 - arguments-3 14.3 14.3 14.5 14.5 1.7 1.7 + array-1 348.3 348.2 356.3 356.1 2.3 2.3 + array-2 246.0 245.7 241.3 241.3 -1.9 -1.8 - array-pop-1 59.0 58.8 58.4 58.0 -1.1 -1.3 - array-push-1 40.9 40.8 40.9 40.9 0.1 0.1 array-shift-1 49.4 49.3 49.6 49.4 0.3 0.1 array-slice-1 15.6 15.6 15.5 15.4 -1.0 -1.1 array-sort-1 22.1 22.1 22.5 22.4 1.8 1.6 + array-sort-2 2.2 2.2 2.2 2.2 -0.1 -0.0 array-sort-3 19.1 19.0 19.1 19.0 -0.1 -0.3 array-sort-4 8.8 8.8 8.7 8.7 -0.6 -0.5 array-unshift-1 19.7 19.7 19.6 19.6 -0.7 -0.5 closedvar-read-1 571.4 570.1 562.4 562.0 -1.6 -1.4 - closedvar-write-1 394.2 393.9 393.6 393.2 -0.2 -0.2 closedvar-write-2 394.2 394.0 391.6 391.3 -0.7 -0.7 - do-1 590.4 589.8 590.4 589.9 0 0.0 for-1 564.4 563.9 570.4 568.6 1.1 0.8 + for-2 189.1 188.8 189.4 189.0 0.2 0.1 for-3 138.9 138.7 139.9 139.6 0.7 0.6 for-in-1 250.5 250.3 253.2 253.2 1.1 1.2 + for-in-2 250.5 250.0 249.3 249.2 -0.5 -0.3 - funcall-1 184.4 184.0 183.6 183.6 -0.4 -0.2 - funcall-2 170.5 170.3 179.1 179.1 5.1 5.2 ++ funcall-3 169.3 169.3 174.0 173.9 2.7 2.7 + funcall-4 1173.8 1172.2 1175.8 1175.2 0.2 0.3 + globalvar-read-1 574.4 574.1 565.9 565.6 -1.5 -1.5 - globalvar-write-1 399.8 398.6 397.2 396.0 -0.6 -0.6 isNaN-1 511.0 510.1 511.0 509.8 0 -0.1 lookup-array-fetch-1 571.4 570.7 559.9 559.6 -2.0 -1.9 - lookup-array-in-1 871.1 870.4 870.1 869.9 -0.1 -0.0 lookup-object-fetch-1 582.8 582.4 581.8 577.1 -0.2 -0.9 lookup-object-in-1 780.2 778.9 784.2 783.7 0.5 0.6 + number-toString-1 4.8 4.8 4.8 4.8 0.4 0.4 number-toString-2 51.0 51.0 51.1 51.1 0.3 0.2 oop-1 3.5 3.5 3.4 3.4 -1.9 -2.3 - parseFloat-1 47.8 47.8 48.1 48.1 0.6 0.6 parseInt-1 103.3 101.6 109.0 105.9 5.6 4.2 + regex-exec-1 38.8 38.8 39.5 39.4 1.7 1.5 + regex-exec-2 50.8 50.7 50.1 50.1 -1.4 -1.2 - regex-exec-3 77.8 77.8 76.3 76.2 -2.0 -2.0 - regex-exec-4 177.9 177.6 176.3 176.3 -0.9 -0.8 string-casechange-1 14.4 14.4 14.8 14.8 2.7 2.7 + string-casechange-2 14.2 14.2 14.7 14.7 3.4 3.4 + string-charAt-1 82.3 82.3 82.6 82.5 0.3 0.2 string-charAt-2 36.4 36.4 37.0 37.0 1.8 1.6 + string-charCodeAt-1 79.3 79.3 77.2 77.0 -2.7 -2.9 - string-charCodeAt-2 77.8 77.7 79.0 78.8 1.6 1.4 + string-fromCharCode-1 64.7 64.7 65.7 65.7 1.5 1.5 + string-fromCharCode-2 32.6 32.6 33.4 33.4 2.4 2.4 + string-fromCharCode-3 56.4 56.4 57.5 57.5 2.0 2.0 + string-fromCharCode-4 58.3 58.3 60.1 59.8 3.1 2.6 + string-indexOf-1 70.1 70.0 70.9 70.7 1.1 1.0 + string-indexOf-2 47.4 47.4 48.0 48.0 1.2 1.2 + string-indexOf-3 33.9 33.8 36.7 36.6 8.1 8.1 ++ string-lastIndexOf-1 70.6 70.5 70.2 70.0 -0.5 -0.6 string-lastIndexOf-2 47.4 47.4 47.3 47.3 -0.1 -0.1 string-lastIndexOf-3 48.7 48.7 47.8 47.8 -1.8 -1.8 - string-slice-1 40.8 40.7 42.0 42.0 3.0 3.0 + string-split-1 7.1 7.1 7.5 7.5 4.9 5.7 + string-split-2 7.4 7.4 7.5 7.5 1.2 1.4 + string-substring-1 42.8 42.8 43.7 43.7 2.1 2.0 + switch-1 96.5 96.4 98.8 98.6 2.4 2.2 + switch-2 53.8 53.7 53.8 53.7 0 0 switch-3 69.7 69.6 68.9 68.9 -1.0 -1.0 - try-1 138.2 138.1 142.4 142.3 3.1 3.1 + try-2 13.0 13.0 13.0 13.0 0.2 0.1 try-3 34.5 34.5 34.3 34.3 -0.4 -0.4 while-1 564.4 564.1 571.4 570.2 1.2 1.1 + Metric: time Dir: jsbench/ Crypt 3673 3677.2 3654 3655.4 0.5 0.6 + Euler 8089 8101.4 8012 8025 1.0 0.9 + FFT 7240 7246.6 7357 7384.2 -1.6 -1.9 - HeapSort 3614 3616 3643 3643.2 -0.8 -0.8 - LUFact 5894 5899.8 5979 5984 -1.4 -1.4 - Moldyn 11447 11509 11492 11587 -0.4 -0.7 RayTracer 7550 7581.8 7514 7530.6 0.5 0.7 + SOR 32177 32217.6 32379 32401.6 -0.6 -0.6 - Series 9337 9347.2 9442 9452.8 -1.1 -1.1 - SparseMatmult 9889 9907 9882 9891.8 0.1 0.2 Dir: jsbench/typed/ Crypt 1032 1033.8 1003 1003.6 2.8 2.9 + Euler 9014 9033.2 9018 9047.2 -0.0 -0.2 FFT 1802 1803.8 1840 1843.6 -2.1 -2.2 - HeapSort 1359 1359.4 1347 1348.2 0.9 0.8 + LUFact 1404 1405.2 1406 1406.6 -0.1 -0.1 - Moldyn 4222 4230.4 4209 4216.6 0.3 0.3 RayTracer 1526 1527.6 1531 1531.6 -0.3 -0.3 - SOR 6126 6131 5076 5082.8 17.1 17.1 ++ Series 8238 8244.8 8222 8228.4 0.2 0.2 + SparseMatmult 2509 2509.4 2496 2501 0.5 0.3 + Metric: v8 custom v8 normalized metric (hardcoded in the test) Dir: v8.5/js/ crypto 400 399.6 401 401 0.2 0.4 + deltablue 284 283.8 290 289.6 2.1 2.0 + earley-boyer 919 915 920 918.8 0.1 0.4 raytrace 586 584.8 584 583.2 -0.3 -0.3 - regexp 66 65.9 64.6 64.5 -2.1 -2.1 - richards 239 239 237 237 -0.8 -0.8 splay 698 691.4 704 697.8 0.9 0.9 Dir: v8.5/optimized/ crypto 3211 3208.2 3254 3246.6 1.3 1.2 + deltablue 2938 2933.2 2942 2938.4 0.1 0.2 earley-boyer 925 919.2 924 919.2 -0.1 0 raytrace 6761 6758.6 6761 6754.8 0 -0.1 regexp 66.5 66.2 65.6 65.3 -1.4 -1.4 - richards 2997 2994.6 2969 2967.2 -0.9 -0.9 - splay 4625 4615.2 4651 4646.8 0.6 0.7 + Dir: v8.5/typed/ crypto 2330 2322.6 2330 2309.2 0 -0.6 deltablue 2970 2964 2998 2995.8 0.9 1.1 + earley-boyer 925 923.6 922 914.4 -0.3 -1.0 raytrace 6788 6779 6788 6785.6 0 0.1 regexp 65.5 65.4 64.3 64.1 -1.8 -1.9 - richards 3005 2997.4 2977 2972.6 -0.9 -0.8 - splay 878 872.4 876 875.6 -0.2 0.4 Dir: v8.5/untyped/ crypto 447 446.4 447 446.4 0 0 deltablue 1421 1418.6 1426 1423.2 0.4 0.3 + earley-boyer 918 916.6 920 913.6 0.2 -0.3 raytrace 2792 2788.6 2824 2821 1.1 1.2 + regexp 66.7 66.4 65.1 64.9 -2.4 -2.3 - richards 376 375.8 371 370.4 -1.3 -1.4 - splay 835 780.8 836 813.8 0.1 4.2
The typed SOR results are in fact correct. The problem appears to be that TR tip has a major performance regression on that benchmark, but TR tip + the patch does not have that regression, nor does an older avmshell that I have sitting around. The regression was likely not introduced when exactgc landed, because the performance test binaries I have from then both show the same fast result as TR+patch.
That regression appears to have been introduced in 5712, which is the two-liner that moved the initialization of thisPage from the start of TraceConservativePointer to the point just before its use. That doesn't make any sense, but it's repeatable. That result is obtained using configure.py and the default gcc (which is gcc 4.2.1) on a MacPro, OS X 10.5.6. Recompiling 5712 with gcc 4.0.1 removes the regression. Recompiling TR tip (5733) with gcc 4.0.1 removes the regression from it as well. With that in mind it's not clear how much the results above are worth.
This is the Mac Pro again, but the binaries are built with --mac-sdk=104u which implies GCC 4.0. The SOR outlier is gone; the trend is positive overall, with few significant regressions and none outside the 2% range. avm avm2 test best avg best avg %dBst %dAvg Metric: time Dir: jsbench/ Crypt 2682 2686 2683 2684 -0.0 0.1 Euler 5551 5554.2 5537 5550.2 0.3 0.1 + FFT 5574 5636.4 5585 5609.8 -0.2 0.5 HeapSort 2589 2590.2 2598 2600.4 -0.3 -0.4 - LUFact 4310 4311.4 4281 4283.4 0.7 0.6 + Moldyn 7938 7947.4 7891 7895.4 0.6 0.7 + RayTracer 5553 5565.8 5541 5573.6 0.2 -0.1 SOR 24777 24837.6 24506 24561.4 1.1 1.1 + Series 6995 7012.6 6984 6993.2 0.2 0.3 SparseMatmult 8268 8301.4 8250 8287 0.2 0.2 Dir: jsbench/typed/ Crypt 749 749.8 749 750.4 0 -0.1 Euler 6784 6800.6 6785 6795.8 -0.0 0.1 FFT 1313 1327.8 1298 1320.4 1.1 0.6 HeapSort 1076 1078.4 1074 1078 0.2 0.0 LUFact 1046 1047 1046 1047.2 0 -0.0 Moldyn 3507 3511.4 3486 3490.6 0.6 0.6 + RayTracer 1027 1028.2 1028 1028.4 -0.1 -0.0 SOR 3394 3402.2 3386 3392.2 0.2 0.3 Series 5965 5973.4 6016 6030.2 -0.9 -1.0 - SparseMatmult 2123 2123 2120 2123.4 0.1 -0.0 + test best avg best avg %dBst %dAvg Metric: v8 custom v8 normalized metric (hardcoded in the test) Dir: v8.5/js/ crypto 543 542.4 545 544.2 0.4 0.3 + deltablue 383 381.8 388 387.6 1.3 1.5 + earley-boyer 1257 1254.8 1267 1264 0.8 0.7 + raytrace 814 812.8 816 814.6 0.2 0.2 regexp 103 102.4 107 106.8 3.9 4.3 + richards 324 323.4 325 324.8 0.3 0.4 + splay 925 870.4 941 937.4 1.7 7.7 Dir: v8.5/optimized/ crypto 4523 4518.8 4551 4539.6 0.6 0.5 + deltablue 4047 4034.4 4040 4024.4 -0.2 -0.2 earley-boyer 1263 1261.4 1260 1254 -0.2 -0.6 raytrace 9374 9364.2 9364 9350.8 -0.1 -0.1 regexp 103 102.4 107 106.6 3.9 4.1 + richards 4584 4575.6 4572 4562.4 -0.3 -0.3 splay 6596 6573 6691 6682.2 1.4 1.7 + Dir: v8.5/typed/ crypto 3514 3513 3490 3488 -0.7 -0.7 - deltablue 4122 4116.2 4122 4116.6 0 0.0 earley-boyer 1261 1250.8 1265 1257.8 0.3 0.6 raytrace 9374 9364.4 9392 9371.6 0.2 0.1 regexp 103 102.8 107 107 3.9 4.1 + richards 4578 4573.2 4572 4570.8 -0.1 -0.1 - splay 1147 1145.8 1158 1155.4 1.0 0.8 + Dir: v8.5/untyped/ crypto 599 598.4 595 593.8 -0.7 -0.8 - deltablue 2041 2036.6 2065 2062.8 1.2 1.3 + earley-boyer 1253 1249.8 1269 1265.8 1.3 1.3 + raytrace 3890 3880 3829 3818.6 -1.6 -1.6 - regexp 103 102.4 107 106.8 3.9 4.3 + richards 527 526.2 530 530 0.6 0.7 + splay 1088 1086.2 1103 1065.4 1.4 -1.9
And ditto numbers on the MacBook Pro. The trend is positive but typed Euler and typed Moldyn are showing significant slowdowns. (Those both sped up slightly on the MacPro.) avm avm2 test best avg best avg %dBst %dAvg Metric: time Dir: jsbench/ Crypt 3563 3568.4 3551 3552.4 0.3 0.4 + Euler 8047 8058.2 8095 8101 -0.6 -0.5 - FFT 7527 7548.8 7495 7526.8 0.4 0.3 HeapSort 3454 3459.4 3455 3457.4 -0.0 0.1 LUFact 5813 5824 5765 5775.8 0.8 0.8 + Moldyn 11986 12004 12029 12048 -0.4 -0.4 - RayTracer 7829 7845.4 7822 7828.8 0.1 0.2 SOR 34096 34127.6 33507 33523.8 1.7 1.8 + Series 9843 9852 9744 9756 1.0 1.0 + SparseMatmult 9708 9720.4 9627 9632.2 0.8 0.9 + Dir: jsbench/typed/ Crypt 962 962.6 962 962.2 0 0.0 Euler 8996 9017.2 9251 9258.8 -2.8 -2.7 - FFT 1816 1818.8 1817 1817.4 -0.1 0.1 HeapSort 1439 1439.2 1433 1433 0.4 0.4 + LUFact 1387 1387.6 1390 1391.2 -0.2 -0.3 Moldyn 4317 4332 4528 4532.6 -4.9 -4.6 - RayTracer 1518 1518 1511 1514.4 0.5 0.2 + SOR 5084 5085.2 5084 5089 0 -0.1 Series 8681 8683.6 8662 8671.2 0.2 0.1 + SparseMatmult 2539 2547 2540 2543.4 -0.0 0.1 Metric: v8 custom v8 normalized metric (hardcoded in the test) Dir: v8.5/js/ crypto 405 404 405 404.6 0 0.1 deltablue 297 297 296 295.2 -0.3 -0.6 - earley-boyer 918 915.8 927 921.6 1.0 0.6 + raytrace 582 581.6 587 585.4 0.9 0.7 + regexp 61.4 61.2 63.1 62.7 2.8 2.5 + richards 248 248 249 248.2 0.4 0.1 + splay 663 650.6 666 656.8 0.5 1.0 Dir: v8.5/optimized/ crypto 3239 3229 3235 3227.8 -0.1 -0.0 deltablue 2866 2862 2874 2851.4 0.3 -0.4 earley-boyer 921 915.6 925 916.2 0.4 0.1 raytrace 6716 6716 6735 6724.2 0.3 0.1 + regexp 61.5 61.4 62.9 62.6 2.3 2.0 + richards 3104 3104 3154 2951.8 1.6 -4.9 splay 4461 4454 4466 4426.4 0.1 -0.6 Dir: v8.5/typed/ crypto 2385 2378.4 2382 2379.4 -0.1 0.0 deltablue 2935 2933.4 2955 2950.2 0.7 0.6 + earley-boyer 923 919.4 929 922.2 0.7 0.3 raytrace 6702 6696.4 6716 6711.8 0.2 0.2 + regexp 61.6 61.5 63.3 63.0 2.8 2.5 + richards 3112 3107.2 3160 3153.6 1.5 1.5 + splay 820 755.4 823 822.8 0.4 8.9 Dir: v8.5/untyped/ crypto 447 446.6 448 447 0.2 0.1 deltablue 1469 1466.8 1465 1463 -0.3 -0.3 earley-boyer 921 912.2 925 918.8 0.4 0.7 raytrace 2863 2859.4 2837 2835.8 -0.9 -0.8 - regexp 61.4 61.2 62.8 62.4 2.3 2.0 + richards 392 391.6 390 390 -0.5 -0.4 - splay 781 773.6 780 777.8 -0.1 0.5
This patch does not compile on its own; you need the following three as well.
Attachment #501334 - Attachment is obsolete: true
Attachment #501968 - Flags: review?(fklockii)
"The new protocol" means returning true if there's more marking work, false if not. The old protocol was to return true if any marking work was performed. The new protocol is more intuitive, and more efficient.
Attachment #501969 - Flags: review?(fklockii)
Attachment #501971 - Flags: review?(fklockii)
This is the output from running the new exactgc.as.
Attachment #501972 - Flags: review?(fklockii)
Whiteboard: has-patch
I need a review on the following: - is the new, merged protocol meaningful, ie, close enough to ideal to be ok? - is the documentation (such as it is) still correct? - is the implementation in MMgc reasonable? - do the new tracers (hand-written, generated) obey the protocol? In principle the new protocol is a little slower than the old one, because we pass an extra (constant 0) argument to the small-object tracers, which have to return a (constant 0) value, which MarkItem tests and branches on. Branch prediction should be good and generating zeroes into registers / onto the stack is cheap, and comparing to zero is cheap, so these are small overheads, but they're overheads. The overall trend on benchmarks is no slowdown, except as noted earlier; in the negative results there are platform variations. Thus IMO the performance issue is not a big issue. Discuss.
FWIW, on my MacPro, I ignore variations in perf that are +- 2% or less; even running with nice -20, I find about that much variation when comparing identical builds. (Would be nice to have better precision, but hey.) I'll defer to Felix on the MMgc internal reviews, but from the general perspective, combining the methods is a highly desirable thing from a general architectural point of view (less code == better), and there are no red flags from the benchmarking that I see. On all mainstream architectures except x86-32, the extra arg will be in a nonsaved register, so we're talking about adding a single instruction to each call site and to some return sites -- hard to see this as a needle-mover in this context. (x86-32 moves from two args to three args, so we're outside of the all-register-call range, alas.)
(In reply to comment #9) > Created attachment 501968 [details] [diff] [review] > Merge gcTrace and gcTraceLarge in MMgc/ Queue is known to apply cleanly to TR 5739.
Priority: P2 → P1
The patch queue at hg.mozilla.org/users/lhansen_adobe.com/redux-revolution has been rebased to TR 5755, with no substantial changes (so I'm not changing the patches here).
Comment on attachment 501971 [details] [diff] [review] Modify hand-written tracers to use the new protocol don't let the tab in ImtThunkEnv::gcTrace leak through. :)
Comment on attachment 501968 [details] [diff] [review] Merge gcTrace and gcTraceLarge in MMgc/ R+. Nit: Patch introduces an IsClear method to GCStack.h that does not appear to be used in the patch or any of the subsequent patches.
Attachment #501968 - Flags: review?(fklockii) → review+
Attachment #501969 - Flags: review?(fklockii) → review+
Attachment #501971 - Flags: review?(fklockii) → review+
Attachment #501972 - Flags: review?(fklockii) → review+
(In reply to comment #18) > Comment on attachment 501968 [details] [diff] [review] > Merge gcTrace and gcTraceLarge in MMgc/ > > R+. > > Nit: Patch introduces an IsClear method to GCStack.h that does not appear > to be used in the patch or any of the subsequent patches. Good catch. I've elected to let it stand, for now; I envision some cleanup around GCStack in the very near future and it may be removed then, or complemented with methods to check for various other special values.
(In reply to comment #17) > Comment on attachment 501971 [details] [diff] [review] > Modify hand-written tracers to use the new protocol > > don't let the tab in ImtThunkEnv::gcTrace leak through. :) Ooh, eagle eyes...
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
changeset: 5775:68ff15735eee user: Lars T Hansen <lhansen@adobe.com> summary: For 615252 - Merge gcTrace and gcTraceLarge methods: merge gcTrace and gcTraceLarge in MMgc/ (r=fklockii) http://hg.mozilla.org/tamarin-redux/rev/68ff15735eee
changeset: 5776:e1c47d994cf2 user: Lars T Hansen <lhansen@adobe.com> summary: For 615252 - Merge gcTrace and gcTraceLarge methods: Update exactgc.as not to generate gcTraceLarge, and to obey the new protocol (r=fklockii) http://hg.mozilla.org/tamarin-redux/rev/e1c47d994cf2
changeset: 5777:46d4b15e68de user: Lars T Hansen <lhansen@adobe.com> summary: For 615252 - Merge gcTrace and gcTraceLarge methods: Modify hand-written tracers to use the new protocol (r=fklockii) http://hg.mozilla.org/tamarin-redux/rev/46d4b15e68de
changeset: 5778:66f8086a8824 user: Lars T Hansen <lhansen@adobe.com> summary: For 615252 - Merge gcTrace and gcTraceLarge methods: Modify generated tracers to use the new protocol (r=fklockii) http://hg.mozilla.org/tamarin-redux/rev/66f8086a8824
Flags: flashplayer-bug-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: