[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] Store key Spur GC parameters in image header (#477)

Tobias Pape Das.Linux at gmx.de
Fri Feb 21 08:05:33 UTC 2020


> On 20.02.2020, at 18:12, Eliot Miranda <notifications at github.com> wrote:
> 
> Hi Tobias,
> 
> I very much want to keep the class table, free lists, finalization queue, mark stack etc hidden.  

Yeah, but without that it's not easy to get the Class for SmallFloat64 on RSqueak, for example.
One has to dig around the undocumented class table to find it.
Even more so, the object headers point into the class table, so what is the contract image/vm in the first place?


> These are very much implementation dependent, and revealing them to the image as objects creates the potential god coupling to the implementation.  Just as the vm hides the existence of JIT code, stack frames, and other implementation details, hidden from the Smalltalk programmer, so should it hide that it uses a lass table, etc.  this gives freedom for us to improve the implementation by using a better representation of someone comes up with one.
> 
> We can still observe these structures through vmParameterAt:, clumsy though if may be, because we can carefully control access. Even so, these parameters are inconvenient to work with. Just look at the number of changes/reinterpretations/new parameters between v3 and Spur.
> 
> So my vote/design principle is to keep these implementation details encapsulated as much as possible in the vm.

True dat. However, we have to make sure to be able to execute an image without any hidden knowledge, even on non-osvm :)

-t



More information about the Vm-dev mailing list