Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3064.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3064 Author: eem Time: 9 September 2021, 5:29:12.77927 pm UUID: a7ef63ae-f087-4e44-b79d-cec537a27460 Ancestors: VMMaker.oscog-eem.3063
Simulation: allow shoe-horning a different simulator class in to test LittleEndianBitmap vs DoubleWordArray as a memory class.
=============== Diff against VMMaker.oscog-eem.3063 ===============
Item was changed: ----- Method: CogVMSimulator>>initialize (in category 'initialize-release') ----- initialize "Initialize the CogVMSimulator when running the interpreter inside Smalltalk. The primary responsibility of this method is to allocate Smalltalk Arrays for variables that will be declared as statically-allocated global arrays in the translated code." super initialize.
transcript := Transcript.
objectMemory ifNil: + [objectMemory := InitializationOptions + at: #ObjectMemorySimulator + ifPresent: [:className| (Smalltalk classNamed: className) new] + ifAbsent: [self class objectMemoryClass simulatorClass new]]. - [objectMemory := self class objectMemoryClass simulatorClass new]. cogit ifNil: [cogit := self class cogitClass new setInterpreter: self]. objectMemory coInterpreter: self cogit: cogit.
(cogit numRegArgs > 0 and: [VMClass initializationOptions at: #CheckStackDepth ifAbsent: [true]]) ifTrue: [debugStackDepthDictionary := Dictionary new].
cogThreadManager ifNotNil: [super initialize].
self assert: ConstMinusOne = (objectMemory integerObjectOf: -1).
cogMethodZone := cogit methodZone. "Because Slang can't remove intermediate implicit receivers (cogit methodZone foo doesn't reduce to foo())" enableCog := true.
methodCache := Array new: MethodCacheSize. nsMethodCache := Array new: NSMethodCacheSize. atCache := nil. self flushMethodCache. cogCompiledCodeCompactionCalledFor := false. gcSemaphoreIndex := 0. externalSemaphoreSignalRequests := externalSemaphoreSignalResponses := #(). externalPrimitiveTable := CArrayAccessor on: (Array new: MaxExternalPrimitiveTableSize). externalPrimitiveTableFirstFreeIndex := 0. primitiveTable := self class primitiveTable copy. self initializePluginEntries. desiredNumStackPages := InitializationOptions at: #desiredNumStackPages ifAbsent: [0]. desiredEdenBytes := InitializationOptions at: #desiredEdenBytes ifAbsent: [0]. desiredCogCodeSize := InitializationOptions at: #desiredCogCodeSize ifAbsent: [0]. "This is initialized on loading the image, but convenient for testing stack page values..." numStackPages := self defaultNumStackPages. startMicroseconds := lastYieldMicroseconds := self ioUTCStartMicroseconds. maxLiteralCountForCompile := MaxLiteralCountForCompile. minBackwardJumpCountForCompile := MinBackwardJumpCountForCompile. flagInterpretedMethods := false.
"initialize InterpreterSimulator variables used for debugging" byteCount := lastPollCount := sendCount := lookupCount := 0. quitBlock := [^self close]. traceOn := true. printSends := printFrameAtEachStep := printBytecodeAtEachStep := false. myBitBlt := BitBltSimulator new setInterpreter: self. displayForm := fakeForm := 'Display has not yet been installed' asDisplayText form. suppressHeartbeatFlag := deferSmash := deferredSmash := false. systemAttributes := Dictionary new. primTraceLog := CArrayAccessor on: (Array new: 256 withAll: 0). primTraceLogIndex := 0. traceLog := CArrayAccessor on: (Array new: TraceBufferSize withAll: 0). traceLogIndex := 0. traceSources := TraceSources. statCodeCompactionCount := 0. statCodeCompactionUsecs := 0. extSemTabSize := 256. zeroNextProfileTickCount := 0!
Item was changed: ----- Method: StackInterpreterSimulator class>>onObjectMemory:options: (in category 'instance creation') ----- onObjectMemory: anObjectMemory options: optionsDictionaryOrArray | simulatorClass | ^self == StackInterpreterSimulator ifTrue: [simulatorClass := SmalltalkImage current endianness == #big ifTrue: [self notYetImplemented"StackInterpreterSimulatorMSB"] ifFalse: [StackInterpreterSimulatorLSB]. simulatorClass initializeWithOptions: optionsDictionaryOrArray objectMemoryClass: (anObjectMemory ifNotNil: [anObjectMemory class]). simulatorClass onObjectMemory: (anObjectMemory ifNil: + [InitializationOptions + at: #ObjectMemorySimulator + ifPresent: [:className| (Smalltalk classNamed: className) new] + ifAbsent: [self objectMemoryClass simulatorClass new]]) - [self objectMemoryClass simulatorClass new]) options: optionsDictionaryOrArray] ifFalse: [super basicNew objectMemory: anObjectMemory; initialize]!
vm-dev@lists.squeakfoundation.org