Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2052.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2052 Author: eem Time: 26 December 2016, 9:43:10.758538 pm UUID: 3121f1fe-286c-435b-8669-bb50f8cbe31f Ancestors: VMMaker.oscog-eem.2051
Fix the regression in VMMaker.oscog-eem.2050's buildCodeGeneratorForInterpreter:includeAPIMethods:initializeClasses:. Fix setting of optionsDictionary on instantiating a simulator.
=============== Diff against VMMaker.oscog-eem.2051 ===============
Item was changed: ----- Method: CogVMSimulator class>>initializeWithOptions:objectMemoryClass: (in category 'class initialization') ----- initializeWithOptions: optionsDictionaryOrArray objectMemoryClass: objectMemoryClassOrNil "The relevant ObjectMemory, Interpreter and Cogit classes must be initialized in order. This happens notionally every time we start the simulator, but in fact happens when ever we instantiate a simulator." initializationOptions := optionsDictionaryOrArray isArray ifTrue: [Dictionary newFromPairs: optionsDictionaryOrArray] ifFalse: [optionsDictionaryOrArray].
+ (self allSuperclasses copyUpThrough: InterpreterPrimitives) do: + [:sc| sc initializationOptions: initializationOptions]. + (objectMemoryClassOrNil ifNil: [self objectMemoryClass]) initializeWithOptions: initializationOptions.
self initializeWithOptions: initializationOptions.
(self cogitClass withAllSuperclasses copyUpTo: Cogit) reverseDo: [:c| c initializeWithOptions: initializationOptions]!
Item was changed: ----- Method: StackInterpreterSimulator class>>initializeWithOptions:objectMemoryClass: (in category 'class initialization') ----- initializeWithOptions: optionsDictionaryOrArray objectMemoryClass: objectMemoryClassOrNil "The relevant ObjectMemory and Interpreter classes must be initialized in order. This happens notionally every time we start the simulator, but in fact happens when ever we instantiate a simulator." initializationOptions := optionsDictionaryOrArray isArray ifTrue: [Dictionary newFromPairs: optionsDictionaryOrArray] ifFalse: [optionsDictionaryOrArray]. + + (self allSuperclasses copyUpThrough: InterpreterPrimitives) do: + [:sc| sc initializationOptions: initializationOptions]. + (objectMemoryClassOrNil ifNil: [self objectMemoryClass]) initializeWithOptions: initializationOptions.
self initializeWithOptions: initializationOptions!
Item was changed: ----- Method: VMMaker>>buildCodeGeneratorForInterpreter:includeAPIMethods:initializeClasses: (in category 'generate sources') ----- buildCodeGeneratorForInterpreter: interpreterClass includeAPIMethods: getAPIMethods initializeClasses: initializeClasses "Answer the code generator for translating the interpreter."
| cg interpreterClasses | initializeClasses ifTrue: [interpreterClass initializeWithOptions: optionsDictionary. interpreterClass hasCogit ifTrue: [interpreterClass cogitClass initializeWithOptions: optionsDictionary]. interpreterClass objectMemoryClass initializationOptions: optionsDictionary].
(cg := self createCodeGenerator) vmClass: interpreterClass.
"Construct interpreterClasses as all classes from interpreterClass & objectMemoryClass up to VMClass in superclass to subclass order." interpreterClasses := OrderedCollection new. {interpreterClass. interpreterClass objectMemoryClass} do: [:vmClass| | theClass | theClass := vmClass. [theClass ~~ VMClass] whileTrue: + [theClass initializationOptions: interpreterClass initializationOptions. - [theClass initializationOptions: optionsDictionary. interpreterClasses addFirst: theClass. theClass := theClass superclass]]. interpreterClasses addFirst: VMClass; addAllLast: (cg nonStructClassesForTranslationClasses: interpreterClasses).
initializeClasses ifTrue: [interpreterClasses do: [:ic| (ic respondsTo: #initializeWithOptions:) + ifTrue: [ic initializeWithOptions: interpreterClass initializationOptions] - ifTrue: [ic initializeWithOptions: optionsDictionary] ifFalse: [ic initialize]]. (cg structClassesForTranslationClasses: interpreterClasses) do: [:structClass| structClass initialize]].
cg addStructClasses: (cg structClassesForTranslationClasses: interpreterClasses).
interpreterClasses do: [:ic| cg addClass: ic].
getAPIMethods ifTrue: [interpreterClass cogitClass ifNotNil: [:cogitClass| cg includeAPIFrom: (self buildCodeGeneratorForCogit: cogitClass includeAPIMethods: false initializeClasses: false)]].
^cg!
vm-dev@lists.squeakfoundation.org