[Vm-dev] VM Maker: VMMaker.oscog-eem.2052.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Dec 27 05:43:59 UTC 2016


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!



More information about the Vm-dev mailing list