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