Nicolas Cellier uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1911.mcz
==================== Summary ====================
Name: VMMaker.oscog-nice.1911 Author: nice Time: 26 July 2016, 12:34:16.863784 am UUID: 76ca83f3-8f11-fd4a-a9c4-5dd8b907d737 Ancestors: VMMaker.oscog-topa.1910
Use same FileDirectory tricks as Cog* for Stack* generation This way we can generate sources on windows (with recent trunk corrections for pathFromURI:).
Don't put a trailing / to '../'. in VMMaker initialization. Indeed, some FileDirectory hacks work only for '..' For example, (FileDirectory on: '..') is ok, (FileDirectory on: '../') is not.
Correct the prototype of genDoubleFailIfZeroArgRcvr:arg: It's used as a function taking int, not #sqInt See #genDoubleArithmetic:preOpCheck: and #genDoubleArithmetic:preOpCheck:boxed: for 64bits
=============== Diff against VMMaker.oscog-topa.1910 ===============
Item was changed: ----- Method: SimpleStackBasedCogit>>genDoubleFailIfZeroArgRcvr:arg: (in category 'primitive generators') ----- genDoubleFailIfZeroArgRcvr: rcvrReg arg: argReg <option: #DPFPReg0> + <var: 'rcvrReg' type: #int> + <var: 'argReg' type: #int> <returnTypeC: #'AbstractInstruction *'> self MoveCq: 0 R: TempReg. self ConvertR: TempReg Rd: DPFPReg2. self CmpRd: DPFPReg2 Rd: argReg. ^self JumpFPEqual: 0!
Item was changed: ----- Method: VMMaker class>>generateNewspeakSpurCog64VM (in category 'configurations') ----- generateNewspeakSpurCog64VM "No primitives since we can use those for the Cog VM" ^VMMaker generate: CoInterpreter and: StackToRegisterMappingCogit with: #( ObjectMemory Spur64BitCoMemoryManager MULTIPLEBYTECODESETS true NewspeakVM true) + to: (FileDirectory default pathFromURI: self sourceTree, '/nsspur64src') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') - to: (FileDirectory default directoryNamed: self sourceTree, '/nsspur64src') fullName - platformDir: (FileDirectory default directoryNamed: self sourceTree, '/platforms') fullName including:#() !
Item was changed: ----- Method: VMMaker class>>generateNewspeakSpurStack64VM (in category 'configurations') ----- generateNewspeakSpurStack64VM "No primitives since we can use those for the Cog VM" ^VMMaker generate: StackInterpreter with: #( ObjectMemory Spur64BitMemoryManager MULTIPLEBYTECODESETS true NewspeakVM true FailImbalancedPrimitives false) + to: (FileDirectory default pathFromURI: self sourceTree, '/nsspurstack64src') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') - to: (FileDirectory default directoryNamed: self sourceTree, '/nsspurstack64src') fullName - platformDir: (FileDirectory default directoryNamed: self sourceTree, '/platforms') fullName including: #()!
Item was changed: ----- Method: VMMaker class>>generateNewspeakSpurStackVM (in category 'configurations') ----- generateNewspeakSpurStackVM "No primitives since we can use those for the Cog VM" ^VMMaker generate: StackInterpreter with: #( ObjectMemory Spur32BitMemoryManager MULTIPLEBYTECODESETS true NewspeakVM true FailImbalancedPrimitives false) + to: (FileDirectory default pathFromURI: self sourceTree, '/nsspurstacksrc') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') - to: (FileDirectory default directoryNamed: self sourceTree, '/nsspurstacksrc') fullName - platformDir: (FileDirectory default directoryNamed: self sourceTree, '/platforms') fullName including: #()!
Item was changed: ----- Method: VMMaker class>>generateSqueakSpurStack64VM (in category 'configurations') ----- generateSqueakSpurStack64VM "No primitives since we can use those from the Cog VM" ^VMMaker generate: StackInterpreter with: #(ObjectMemory Spur64BitMemoryManager FailImbalancedPrimitives false) + to: (FileDirectory default pathFromURI: self sourceTree, '/spurstack64src') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') - to: (FileDirectory default directoryNamed: self sourceTree, '/spurstack64src') fullName - platformDir: (FileDirectory default directoryNamed: self sourceTree, '/platforms') fullName including: #()!
Item was changed: ----- Method: VMMaker class>>generateSqueakSpurStackVM (in category 'configurations') ----- generateSqueakSpurStackVM "No primitives since we can use those from the Cog VM" ^VMMaker generate: StackInterpreter with: #(ObjectMemory Spur32BitMemoryManager FailImbalancedPrimitives false) + to: (FileDirectory default pathFromURI: self sourceTree, '/spurstacksrc') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') - to: (FileDirectory default directoryNamed: self sourceTree, '/spurstacksrc') fullName - platformDir: (FileDirectory default directoryNamed: self sourceTree, '/platforms') fullName including: #()!
Item was changed: ----- Method: VMMaker class>>generateSqueakStackVM (in category 'configurations') ----- generateSqueakStackVM "No primitives since we can use those from the Cog VM" ^VMMaker generate: StackInterpreter with: #(FailImbalancedPrimitives false) + to: (FileDirectory default pathFromURI: self sourceTree, '/stacksrc') + platformDir: (FileDirectory default pathFromURI: self sourceTree, '/platforms') - to: (FileDirectory default directoryNamed: self sourceTree, '/stacksrc') fullName - platformDir: (FileDirectory default directoryNamed: self sourceTree, '/platforms') fullName including: #()!
Item was changed: ----- Method: VMMaker class>>initialize (in category 'initialisation') ----- initialize "VMMaker initialize" DirNames := Dictionary new. DirNames at: #coreVMDir put: 'vm'; at: #platformsDir put: 'platforms'; at: #pluginsDir put: 'plugins'; at: #sourceDir put: 'src'.
"Try and decide where the Cog source tree is. Two configurations are likely. One is that the VMMaker image is running in the image directory in the source tree and hence everything will be at '..'. Another is where the source tree is at the same level as the VMMaker image, in which case it is likely called oscogvm or Cog." #('../platforms' 'oscogvm/platforms' 'Cog/platforms' '../oscogvm/platforms') + with: #('..' 'oscogvm' 'Cog' '../oscogvm') - with: #('../' 'oscogvm' 'Cog' '../oscogvm') do: [:dir :path| (FileDirectory default directoryExists: dir) ifTrue: [DirNames at: #sourceTree put: path. ^self]]!
vm-dev@lists.squeakfoundation.org