38 lines
		
	
	
		
			811 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			811 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@pragma entry main
 | 
						|
@pragma implicit off
 | 
						|
 | 
						|
@include "tap.inc";
 | 
						|
 | 
						|
 | 
						|
function run_gc_test ()
 | 
						|
{
 | 
						|
	@local i, a, b, ts, pr, cpr;
 | 
						|
 | 
						|
	tap_ensure (hawk::GC_NUM_GENS, 3, @SCRIPTNAME, @SCRIPTLINE);
 | 
						|
	hawk::gc_set_threshold(0, 30);
 | 
						|
	ts = hawk::gc_get_threshold(0);
 | 
						|
	tap_ensure (ts, 30, @SCRIPTNAME, @SCRIPTLINE);
 | 
						|
 | 
						|
	pr = hawk::gc_get_pressure(0);
 | 
						|
	for (i = 0; i < 50; i++)
 | 
						|
	{
 | 
						|
		a[1] = 999; ## there is only 1 allocation that's concerting GC in the current implementation
 | 
						|
		b = a;
 | 
						|
		b = @nil;
 | 
						|
		a = @nil;
 | 
						|
 | 
						|
		cpr =  hawk::gc_get_pressure(0);
 | 
						|
		if (pr + i + 1 <= ts)
 | 
						|
			tap_ensure (cpr, pr + i + 1, @SCRIPTNAME, @SCRIPTLINE);
 | 
						|
		else ## gc kicks in when the pressure reaches the threshold, the pressure drops...
 | 
						|
			tap_ensure (cpr, (pr + i + 1) - ts, @SCRIPTNAME, @SCRIPTLINE);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
function main()
 | 
						|
{
 | 
						|
	run_gc_test();
 | 
						|
	tap_end ();
 | 
						|
}
 | 
						|
 |