I've attached my most up-to-date version.  I'll add this to Squeak trunk
pronto.

On Thu, Mar 15, 2012 at 12:49 PM, Guillermo Polito <
[email protected]> wrote:

>
>
>
> On Thu, Mar 15, 2012 at 4:26 PM, Guillermo Polito <
> [email protected]> wrote:
>
>>
>>
>> On Thu, Mar 15, 2012 at 1:58 PM, Eliot Miranda 
>> <[email protected]>wrote:
>>
>>>
>>> Hi Guillermo,
>>>
>>> On Wed, Mar 14, 2012 at 12:48 PM, Guillermo Polito <
>>> [email protected]> wrote:
>>>
>>>> Hi Eliot,
>>>>
>>>> do you have a pointer of where can I see the differences between the
>>>> old Squeak format and the cog image format, so I can make SystemTracer work
>>>> on Cog vms?
>>>>
>>>
>>> So the image format differences are
>>> - floats are in platform order, not necessarily in big-endian order
>>> - the layout of the specialObjectsArray is slightly different
>>> (documented in recreateSpecialObjectsArray)
>>> - there are more words in the header, see
>>> StackInterpreter>writeImageFileIO:, i.e.
>>>
>>> in Cog:
>>> self putLong: self imageFormatVersion toFile: f.
>>> self putLong: headerSize toFile: f.
>>>  self putLong: imageBytes toFile: f.
>>> self putLong: objectMemory startOfMemory toFile: f.
>>>  self putLong: objectMemory specialObjectsOop toFile: f.
>>> self putLong: objectMemory newObjectHash toFile: f.
>>>  self putLong: self ioScreenSize toFile: f.
>>> self putLong: self getImageHeaderFlags toFile: f.
>>>  self putLong: extraVMMemory toFile: f.
>>> self putShort: desiredNumStackPages toFile: f.
>>>  self putShort: self unknownShortOrCodeSizeInKs toFile: f.
>>> self putLong: desiredEdenBytes toFile: f.
>>>  self putShort: (maxExtSemTabSizeSet ifTrue: [self
>>> ioGetMaxExtSemTableSize] ifFalse: [0]) toFile: f.
>>> self putShort: 0 toFile: f.
>>>  1 to: 4 do: [:i | self putLong: 0 toFile: f].  "fill remaining header
>>> words with zeros"
>>>
>>> in Interpreter:
>>>  self putLong: (self imageFormatVersion) toFile: f.
>>> self putLong: headerSize toFile: f.
>>>  self putLong: imageBytes toFile: f.
>>> self putLong: (self startOfMemory) toFile: f.
>>>  self putLong: specialObjectsOop toFile: f.
>>> self putLong: lastHash toFile: f.
>>>  self putLong: (self ioScreenSize) toFile: f.
>>> self putLong: fullScreenFlag toFile: f.
>>>  self putLong: extraVMMemory toFile: f.
>>> 1 to: 7 do: [:i | self putLong: 0 toFile: f].  "fill remaining header
>>> words with zeros"
>>>
>>> Then
>>>
>>> getImageHeaderFlags
>>> "Answer the flags that are contained in the 7th long of the image
>>> header."
>>>  ^fullScreenFlag "0 or 1"
>>> + (VMBIGENDIAN ifTrue: [0] ifFalse: [2]) "this is the
>>> imageFloatsLittleEndian flag"
>>>  + (processHasThreadId ifTrue: [4] ifFalse: [0])
>>> + (flagInterpretedMethods ifTrue: [8] ifFalse: [0])
>>>  + (preemptionYields ifTrue: [0] ifFalse: [16])
>>> + (noThreadingOfGUIThread ifTrue: [32] ifFalse: [0])
>>>  + (imageHeaderFlags bitAnd: 63 bitInvert32) "these are any flags we do
>>> not recognize"
>>>
>>> Now most of the information in the flags is accessible from
>>> vmParameterAt: (or some convenience methods).  e.g. vm parameter 49 is the
>>> max external semaphore table size, and vm parameter 48 is the following
>>> flags:
>>>
>>> getCogVMFlags
>>> "Answer an array of flags indicating various properties of the Cog VM.
>>>  Bit 0: implies the image's Process class has threadId as its 3rd inst
>>> var (zero relative)
>>>  Bit 1: if set, methods that are interpreted will have the flag bit set
>>> in their header
>>>  Bit 2: if set, implies preempting a process does not put it to the back
>>> of its run queue"
>>>  ^objectMemory integerObjectOf: (processHasThreadId ifTrue: [1]
>>> ifFalse: [0])
>>> + (flagInterpretedMethods ifTrue: [2] ifFalse: [0])
>>>  + (preemptionYields ifTrue: [0] ifFalse: [4])
>>> + (noThreadingOfGUIThread ifTrue: [8] ifFalse: [0])
>>>
>>
>> Hehe, in pharo the comment reaches up to 41 :).  I'll look at squeak to
>> update it.
>>
>
> And squeak's reach up to 40 :/ in
> http://ftp.squeak.org/4.1/SqueakV41.sources.gz
>
>
>>
>>
>>>
>>> Read the comment for vmParameterAt: to get things like num stack pages
>>> and cog code size.
>>>
>>> Is this OK?  I know it's a bit of a mess. If you or I (we?) write it up
>>> where should we put the info?
>>>
>>>>
>>>> Thanks,
>>>> Guille
>>>>
>>>> On Thu, Jan 27, 2011 at 6:36 PM, Levente Uzonyi <[email protected]> wrote:
>>>>
>>>>> On Thu, 27 Jan 2011, Benjamin wrote:
>>>>>
>>>>>  It works for  PharoCore-1.1-11196-UNSTABLE.1 but it seems to be the
>>>>>> only version where it works :S
>>>>>>
>>>>>> Does someone know why ?
>>>>>>
>>>>>
>>>>> It doesn't support Cog's image format. Try an image with the original
>>>>> Squeak format. You can convert your image with the latest SqueakVM. Only
>>>>> the unix VM was released with this feature yet, so you can use that
>>>>> http://squeakvm.org/unix/ or build a VM for your favorite platform.
>>>>>
>>>>>
>>>>> Levente
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Ben
>>>>>>
>>>>>> On Jan 27, 2011, at 3:36 PM, Benjamin wrote:
>>>>>>
>>>>>>  Hello guys,
>>>>>>>
>>>>>>> for one of my projects, I'm trying to use SystemTracer to create
>>>>>>>  anew image, but it appears that it doesn't work on Pharo ...
>>>>>>> I can create a new image, but I can't open it. I've tried with an
>>>>>>> older VM (Squeak 3.8.18beta1U), but it's the same ...
>>>>>>>
>>>>>>>
>>>>>>> Did someone already have this problem ? Does someone have a solution
>>>>>>> ?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Thanks in advance,
>>>>>>>
>>>>>>> Ben
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> best,
>>> Eliot
>>>
>>>
>>>
>>
>
>


-- 
best,
Eliot

Attachment: SmalltalkImage-vmParameterAt.st
Description: Binary data

Reply via email to