[Vm-dev] Probably pointless endianness question re: Float changes circa 4.6
Tim Johnson
digit at sonic.net
Sun Jul 5 19:52:24 UTC 2020
Hi all,
I finally achieved something I have wanted to do for ten years, though
its relevance has steadily declined over that time: build the Carbon
and Cocoa VMs on a PowerPC Mac.
- Carbon VM (4.2.5b1, from VMMaker 4.2.4 on Squeak 4.1)
- iOS/ObjC/Cocoa VM (5.7b2, from VMMaker 4.2.6 on Squeak 4.1)
After building a successful product, I took the Carbon VM and began
incrementing the non-oscog VMMaker's version in a Squeak 4.5 image. I
was able to build products along the way from 4.3.21 past 4.4.12 and
beyond. (I had to stop when [as could be expected] some plugins
wouldn't export and some support code was missing.)
Eventually I had a Mac Carbon VM which could load 4.6's format 6505
image, and it began displaying the world, but it also had a few
drawing errors and didn't respond to events. A snip from
SqueakDebug.log is at the end of this message, but probably isn't
worth anyone's time to evaluate!
Where I think my efforts hit a dead end is with the Float changes [2]
in the 6505 image format used by Squeak 4.6 [1].
But I'm just hoping to verify here that the Float changes in image
format 6505 could have fatal implications for a big-endian platform
like PowerPC (the formerly-native format for the Floats ;) ) on a
"vintage" stack/interpreter VM, and that perhaps that would have been /
expected/ to be the last straw for it. (A further question might be:
how big would the lift have been to keep it going? Or was that work
done and just would require some extra attention?)
I'm sure none of this is relevant or worth time. I guess my main
question is whether this was supposed to have "kept working" but
didn't — and whether that could have lingering implications on
Squeak's effort (thanks David T Lewis!) to continue supporting the
stack/interpreter VMMaker (though specifically only affecting big-
endian platforms, which admittedly is a very small population). I
suppose there could hypothetically be some big-endian platform out
there which gets some Linux package of the 4.10.2 VM and fails to
launch any image past 4.5 for similar reasons...?
FWIW, I did try the old Darwin/PPC port of 4.10.2 [3] with both 4.6
and David T Lewis's "Squeak 5.2-in-V3 format" image (which is no
longer available on the 'net!) and it exhibited similar behavior:
couldn't display the world, ate 100% CPU, had to be forced to quit.
Thanks,
a Tim
[1] http://wiki.squeak.org/squeak/6290
[2] http://forum.world.st/float-word-order-td106936.html
[3] http://squeakvm.org/unix/
Error: Cannot truncate this number
3 July 2020 8:11:03.001 am
VM: unix - Smalltalk
Image: Squeak4.6 [latest update: #13700]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /Users/ADMIN/Downloads/Squeak4.6-13700
Trusted Dir /Users/ADMIN/Downloads/Squeak4.6-13700/secure
Untrusted Dir /Users/ADMIN/Downloads/Squeak4.6-13700/My Squeak
Float(Object)>>error:
Receiver: NaN
Arguments and temporary variables:
aString: 'Cannot truncate this number'
Receiver's instance variables:
NaN
Float>>truncated
Receiver: NaN
Arguments and temporary variables:
di: nil
df: nil
q: nil
r: nil
Receiver's instance variables:
NaN
Float>>rounded
Receiver: NaN
Arguments and temporary variables:
Receiver's instance variables:
NaN
Color>>setRed:green:blue:
Receiver: <<error during printing>>
Arguments and temporary variables:
r: NaN
g: NaN
b: NaN
Receiver's instance variables:
rgb: nil
cachedDepth: nil
cachedBitPattern: nil
Color class>>r:g:b:
Receiver: Color
Arguments and temporary variables:
r: NaN
g: NaN
b: NaN
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(size 107)
format: 136
instanceVariables: #('rgb' 'cachedDepth' 'cachedBitPattern')
organization: ('access' alpha blue brightness green hue luminance
red saturatio...etc...
subclasses: {TranslucentColor}
name: #Color
classPool: a Dictionary(#Black->Color black #Blue->Color blue
#BlueShift->0 #Br...etc...
sharedPools: nil
environment: Smalltalk
category: #'Graphics-Primitives'
Color class>>r:g:b:alpha:
Receiver: Color
Arguments and temporary variables:
r: NaN
g: NaN
b: NaN
alpha: 0.0
Receiver's instance variables:
superclass: Object
methodDict: a MethodDictionary(size 107)
format: 136
instanceVariables: #('rgb' 'cachedDepth' 'cachedBitPattern')
organization: ('access' alpha blue brightness green hue luminance
red saturatio...etc...
subclasses: {TranslucentColor}
name: #Color
classPool: a Dictionary(#Black->Color black #Blue->Color blue
#BlueShift->0 #Br...etc...
sharedPools: nil
environment: Smalltalk
category: #'Graphics-Primitives'
Color>>alphaMixed:with:
Receiver: Color veryDarkGray
Arguments and temporary variables:
More information about the Vm-dev
mailing list