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