[Vm-dev] A stab at explaining Spur

Stefan Marr smalltalk at stefan-marr.de
Fri Aug 14 07:51:01 UTC 2015

Hi Clément:

> On 14 Aug 2015, at 08:41, Clément Bera <bera.clement at gmail.com> wrote:
> 2015-08-14 4:29 GMT+02:00 Ryan Macnak <rmacnak at gmail.com>:
>> On Thu, Aug 13, 2015 at 1:19 AM, Clément Bera <bera.clement at gmail.com> wrote:
>> I heard recently that the implementation used by Cincom Smalltalk, splitting the object in 2 (header + fields), is also used in Pypy and the Dart VM as Python and Dart allow the user to add instance variables to objects at runtime which leads to the same problem.

> Objects are not split in the Dart VM, and it does not support adding instance variables or otherwise changing classes at runtime. Objects have a single-word header with a class index, size information and GC bits. Identity hashes are not often used in Dart, so they are kept in a side table.
> And I put "accept" on a paper that was claiming that... Damned. Any clue about Pypy ?

PyPy uses maps ala Self, but objects are not ‘split’.
It is more or less the same as with V8, which also uses maps aka hidden classes.

Best regards

Stefan Marr
Johannes Kepler Universität Linz

More information about the Vm-dev mailing list