Hi :) On Tue 09 Jun 2020 18:09, Ludovic Courtès <l...@gnu.org> writes:
> Andy Wingo <wi...@igalia.com> skribis: > >> The guile.arities section starts with a sorted array of fixed-size >> headers, then is followed by a sequence of ULEB128 references to local >> variable names, including non-arguments. The size is a bit perplexing, >> I agree. I can think of a number of ways to encode that section >> differently but we'd need to understand a bit more about it and why the >> baseline compiler is significantly different. > > ‘.guile.arities’ size should be proportional to the number of > procedures, right? Additionally, if there are only/mostly thunks, the > string table for argument names should be small if not empty. For N > thunks, I would expect roughly N 28-byte headers + NxM UL128, say 100 > bytes per thunk; there’s 1000 of them, so we should be ~100,000 bytes. > This is roughly what we get observe with the baseline compiler. Yes but that doesn't mean that you can directly compare baseline to CPS -- CPS has many more intermediate names than baseline for non-argument locals, all of which end up getting entries in the arities section. Andy