copying locals around GC
Stephen Weeks
sweeks@research.nj.nec.com
Sun, 14 Mar 1999 18:16:33 -0500
I changed the abstract machine so that when it spits out the code to
copy C pointer locals before and after a GC, only locals that are ever
live at some limit check point are included. This had a tremendous
improvement on gcc compile time and on code size. It also had a
decent improvement on runtime for non-numeric benchmarks
(count-graphs, knuth-bendix, lexgen, life, logic, mlyacc), about 10%.
gcc time run time code size
old new old new old new
---- ---- ---- ---- ------- -------
barnes-hut 2.2 2.0 13.5 13.2 40,698 35,114
count-graphs 2.3 2.1 11.1 10.2 41,328 36,176
fft 1.4 1.4 38.0 38.1 27,132 25,324
knuth-bendix 4.8 3.1 17.2 15.1 69,749 52,021
lexgen 11.6 7.9 36.5 33.8 182,578 136,482
life 1.8 1.6 58.2 51.0 38,764 32,636
logic 206.4 13.8 50.6 44.4 408,960 148,016
mandelbrot 0.6 0.7 15.8 15.8 13,608 13,608
matrix-multiply 0.7 0.7 13.4 13.6 14,124 14,060
mlyacc 70.4 38.5 23.0 20.2 776,010 571,114
nucleic 2.4 2.2 18.2 16.3 50,830 46,622
ratio-regions 3.1 2.6 26.9 24.0 43,272 36,232
simple 23.8 15.2 22.8 21.9 333,943 266,999
tsp 1.8 1.6 30.6 28.6 32,814 26,126
vliw 58.6 43.7 20.9 18.6 942,894 784,602
zern 1.1 1.0 44.6 45.6 21,973 20,757