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! |
Free forum by Nabble | Edit this page |