diff options
Diffstat (limited to 'testes/gc.lua')
-rw-r--r-- | testes/gc.lua | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/testes/gc.lua b/testes/gc.lua index 8bacffa0..c26de406 100644 --- a/testes/gc.lua +++ b/testes/gc.lua | |||
@@ -35,7 +35,7 @@ do | |||
35 | collectgarbage("setparam", "pause", t[i]) | 35 | collectgarbage("setparam", "pause", t[i]) |
36 | for j = 1, #t do | 36 | for j = 1, #t do |
37 | collectgarbage("setparam", "stepmul", t[j]) | 37 | collectgarbage("setparam", "stepmul", t[j]) |
38 | collectgarbage("step") | 38 | collectgarbage("step", t[j]) |
39 | end | 39 | end |
40 | end | 40 | end |
41 | -- restore original parameters | 41 | -- restore original parameters |
@@ -45,6 +45,33 @@ do | |||
45 | end | 45 | end |
46 | 46 | ||
47 | 47 | ||
48 | -- | ||
49 | -- test the "size" of basic GC steps (whatever they mean...) | ||
50 | -- | ||
51 | do print("steps") | ||
52 | |||
53 | local function dosteps (siz) | ||
54 | collectgarbage() | ||
55 | local a = {} | ||
56 | for i=1,100 do a[i] = {{}}; local b = {} end | ||
57 | local x = gcinfo() | ||
58 | local i = 0 | ||
59 | repeat -- do steps until it completes a collection cycle | ||
60 | i = i+1 | ||
61 | until collectgarbage("step", siz) | ||
62 | assert(gcinfo() < x) | ||
63 | return i -- number of steps | ||
64 | end | ||
65 | |||
66 | collectgarbage"stop" | ||
67 | |||
68 | if not _port then | ||
69 | assert(dosteps(10) < dosteps(2)) | ||
70 | end | ||
71 | |||
72 | end | ||
73 | |||
74 | |||
48 | _G["while"] = 234 | 75 | _G["while"] = 234 |
49 | 76 | ||
50 | 77 | ||