[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