Progress on 64-bit port

Dan Ingalls Dan at SqueakLand.org
Sun Aug 29 20:58:13 UTC 2004


"PhiHo" <smallsqueak at rogers.com> wrote...

> >	32-bit Object header:
> >	3 bits	reserved for gc (mark, old, dirty)
>>	12 bits	object hash (for HashSets)
>>	5 bits	compact class index
>>	4 bits	object format (includes low bits of size in bytes)
>>	6 bits	object size in 32-bit words
>>	2 bits	header type (0: 3-word, 1: 2-word, 2:
> >				forbidden, 3: 1-word)
>
>	I guess there is no changes from the current 32-bit header ?

Correct.

>	I've been wondering why header type  wasn't like this:
>		1 : 1-word
>		2 : 2-word
>		3 : 3-word
>		0 : reserved (this is for headless objects only ;-)

No compelling reason one way or the other.  I've forgotten the original motivation.  By the way, the GC makes temporary use of the "forbidden" pattern.

>	How much bigger is the 64-bit image compared to
>	32-bit image for, say, the 3.7 gamma ?

Morphic32.image	18.3
Morphic64.image	27.7
This is an 3.7 gamma image plus VMMaker and a number of projects.

You can, of course, predict this for any image with code like...
	| nWords c headerSize nInstVars nIndexableWords |
	nWords := 0.
	Smalltalk systemNavigation allObjectsDo:
		[:x | c := x class.
		headerSize := c indexIfCompact > 0
				ifTrue: [1] ifFalse: [2].  "Very few are 3"
		nInstVars := c instSize.
		nIndexableWords := (c isVariable and: [c isBytes not])
				ifTrue: [x size] ifFalse: [0].
		nWords := nWords + headerSize + nInstVars + nIndexableWords].
	^ (nWords - Display bits size) * 4   "expected increment in size (Display not saved)"

For the above image, it predicted an increment of 10210684 a while after the two images were written.

>	Is BalloonEngine just B2DPlugin or it also includes
>	B3DAcceleratorPlugin ?

We have only converted B2D.

>	I am interested to know how FilePlugin is implemented.

It's included with VMMaker.  We made no changes except to get it to run in 64 bits.

> > The second is
> > some discussion in our group about the possibility of making
>> *much* more major changes.  As soon as we get clearer about
>> this and confirm our intention, we'll have more to say about
>> it.  If we were to go ahead with such a rethink, then any time
> > spent on Version 4 would have been wasted.
> >
>	This sounds good. Can you disclose what are these
>	*much* more major changes that are being discussed ?

No;  it's not that we have some great secret scheme that we're not willing to disclose.  It's that we're looking at several possible VM approaches and we can't know, if and until we find one to be a significant win, what object and method formats might maximize the benefits.  Ian and Tony Hannan are the ones investigating these, and I'm sure they'll write about what they're up to as soon as they think they have something worth discussing.

Think simple and fast and you can recreate all the discussions we've had.

> > We have not done any testing beyond the point of bringing up
>> a morphic screen with Squeak mouse, opening a browser and
>> running the benchmarks.  There is lots to test, and surely a
>> number of bugs yet to be found.  The Squeak community can be
> > of enormous help here.
>
>	I hope you did test " 3 + 4 " ;-)

For sure.  And it is a pretty good test, since you have to display the windows (with gradient fills, outline text and all), run text editing, bring up a menu and run the compiler to get there.  Become, GC and process switches happen along the way, too.  Full GC and save work also.

>	Please drop me a note if there is an opportunity for
>	an earlybird preview of Windows (IA32/IA64) ports.

Gladly.

	- Dan



More information about the Squeak-dev mailing list