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 ();
 | |
| }
 | |
| 
 |