[Vm-dev] Re: [Pharo-project] Integrating Changes in 1.4 that require a new VM

stephane ducasse stephane.ducasse at gmail.com
Fri Sep 23 07:44:25 UTC 2011


Stupid question:

what does it mean?
> we need 8 CompiledMethod values

Stef

> 
> 
> Here's the format field (Behavior>instSpec at the image level) as currently populated:
>  
>   0 = 0 sized objects (UndefinedObject True False et al)
>   1 = non-indexable objects with inst vars (Point et al)
>   2 = indexable objects with no inst vars (Array et al)
>   3 = indexable objects with inst vars (MethodContext AdditionalMethodState et al)
>   4 = weak indexable objects with inst vars (WeakArray et al)
>   6 = 32-bit indexable objects (Float, Bitmap ert al)
>   8 = 8-bit indexable objects (ByteString, ByteArray et al)
> 12 = CompiledMethod
> 
> N.B. in the VM the least two bits of the format/instSpec for byte objects (formats 8 and 12) is used to encode the number of odd bytes in the object, so that a 1 character ByteString has a format of 11, = 8 + 3, size = 1 word - 3 bytes.
> 
> 
> For the future (i.e. the new GC/object representation, /not/ for the first implementation of ephemerons which we can do now, for Pharo 1.4 or 1.5) we need to extend format/instSpec to support 64 bits.  I think format needs to be made a 5 bit field with room for 4 bits of odd bytes for 64-bit images.  [For VMers, the Size4Bit is a horrible hack).  So then
> 
> 0 = 0 sized objects (UndefinedObject True False et al)
> 1 = non-indexable objects with inst vars (Point et al)
> 2 = indexable objects with no inst vars (Array et al)
> 3 = indexable objects with inst vars (MethodContext AdditionalMethodState et al)
> 4 = weak indexable objects with inst vars (WeakArray et al)
> 5 = weak non-indexable objects with inst vars (ephemerons) (Ephemeron)
> 
> and we need 8 CompiledMethod values, 8 byte values, 4 16-bit values, 2 32-bit values and a 64-bit value, = 23 values, 23 + 5 = 30, so there is room, e.g.
> 
> 9 (?) 64-bit indexable
> 10 - 11 32-bit indexable
> 12 - 15 16-bit indexable
> 16 - 23 byte indexable
> 24 - 31 compiled method
> 
> In 32-bit images only the least significant 2 bits would be used for formats 16 & 24, and the least significant bit for format 12.
> 
>  


More information about the Vm-dev mailing list