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