From: Nikodemus S. <nik...@ra...> - 2011-08-16 18:25:20
|
On 16 August 2011 20:53, Stas Boukarev <sta...@gm...> wrote: > Oh, I didn't test on x86. > But isn't valid-lisp-pointer-p run only under > without-gcing, so how can there be any difference? Or does that happen > when the GC kicks in after without-gcing? I have a different diagnosis. The last call to ROOM before BOOM reports: Dynamic space usage is: 27,778,312 bytes. Read-only space usage is: 2,760 bytes. Static space usage is: 1,712 bytes. Control stack usage is: 1,656 bytes. Binding stack usage is: 392 bytes. Garbage collection is currently enabled. Breakdown for dynamic space: 571,100,920 bytes for 71,335,109 bignum objects. 46,141,560 bytes for 2,752,075 other objects. 617,242,480 bytes for 74,087,184 dynamic objects (space total.) Note the difference between Dynamic space usage is: 27,778,312 bytes. and 617,242,480 bytes for 74,087,184 dynamic objects (space total.) . The first number is the (correct) size of dynamic space before MAP-ALLOCATED-OBJECTS is run. The second number is the total summed across all allocated objects as seen by MAP-ALLOCATED-OBJECTS. So my reading is that MAP-ALLOCATED-OBJECTS is suddenly consing like mad. Disassembling it on x86 before and after allowing inlining of VALID-LISP-POINTER-P is likely to show what's going on. This is corroborated by the first number staying relatively stable -- indicating that the garbage from MAP-ALLOCATED-OBJECTS keeps being collected without trouble. Cheers, -- Nikodemus |