[Vm-dev] VM Maker: VMMaker-oscog-dtl.59.mcz

Bert Freudenberg bert at freudenbergs.de
Mon Apr 18 11:35:20 UTC 2011


On 18.04.2011, at 12:12, Levente Uzonyi wrote:

> On Mon, 18 Apr 2011, Bert Freudenberg wrote:
> 
>> 
>> On 18.04.2011, at 07:23, squeak-dev-noreply at lists.squeakfoundation.org wrote:
>> 
>>> Add primitiveImageFormatVersion, an optional named primitive answering the image format number of the current image. This is the value stored in the first word of an image file header when the image is saved, and possibly modified on image load if the VM adds or removes capabilities for the running image. This primitive was added to VMMaker trunk in VMMaker-dtl.169. Rationale: supports float word order handing for image segments, reference http://lists.squeakfoundation.org/pipermail/vm-dev/2011-April/007712.html
>> 
>> Is there a way to detect if an image will be saved in a different format than it was loaded?
>> 
>> In some images I want to avoid saving them accidentally as a Cog image. I have been doing this by adding a preference "warnAboutSavingAsCog" and checking the VM version string for "cog". With this new primitive I could more reliably detect Cog, but I guess no information about the loaded image is retained?
> 
> Why don't you read the first four bytes from the image file to get the image version?

Because if this was a save-as, then "Smalltalk imageName" has already been changed to the new one.

But I should put an extra check into saveImageInFileNamed: I guess.

> Also, there's SmalltalkImage >> #isRunningCog to check if the current VM is a CogVM.

Ah. I didn't know we had that test method. I thought I had asked before but apparently I only imagined that :)

- Bert -

> imageFormat := (FileStream fileNamed: Smalltalk imageName do: [ :file |
> 	file binary; next: 4 ]) unsignedLongAt: 1 bigEndian: false.
> isCogVM := Smalltalk isRunningCog.




More information about the Vm-dev mailing list