[Vm-dev] Frequency of stores into young objects

Javier Pimás elpochodelagente at gmail.com
Mon Jul 25 20:24:58 UTC 2016

The garbage collection handbook has many references to statistics of
pointers in the heap. In particular, Gen GC chapter - Pointer Direction
(p125) says:

"[...] Many pointer writes are initialising stores to newly created objects
- Zorn[1990] estimated that 90% to 95% of lisp pointer stores were
initialising (and that of the remaining non-initialising stores two-thirds
were to objects in the young generation) [...]"

so (if this also applies to Smalltalk) ~98% makes sense (90%+6,666%)

I guess the cited paper is this one:



On Mon, Jul 25, 2016 at 11:35 AM, Clément Bera <bera.clement at gmail.com>

> Hi,
> We changed recently with Eliot some part of the JIT to generate more
> efficient code for young objects mutation, speeding up a bit binary trees,
> especially when read-only objects are available. We did it only for quick
> inst var stores (popIntoInstanceVariable for inst var index between 0 and 7
> on non context objects) as it was easier to narrow the optimization to this
> case and it is the most common case.
> When starting-up a REPL image, there are 7221 mutations of objects through
> the quick inst var store bytecode, and 7082 are done on young objects.
> Hence, 98% of mutations for these bytecodes are done on young objects.
> Has anyone numbers from papers / large application on how many stores are
> done on young objects compared to stores done on old objects ? Does 98%
> sound reasonable ?
> Regards,
> Clement

Javier Pimás
Ciudad de Buenos Aires
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20160725/4a835315/attachment.htm

More information about the Vm-dev mailing list