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